objective categorical abstract machine language personal data server
65
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix plc signing/submission

futurGH db88de6c d28e13bc

+21 -31
+1 -8
pegasus/lib/api/repo/createAccount.ml
··· 65 65 | None -> ( 66 66 let sk_did = Kleidos.P256.pubkey_to_did_key signing_pubkey in 67 67 let rotation_did_keys = 68 - [Kleidos.pubkey_to_did_key Env.rotation_key] 69 - in 70 - let rotation_did_keys = 71 - match input.recovery_key with 72 - | Some rk -> 73 - rk :: rotation_did_keys 74 - | None -> 75 - rotation_did_keys 68 + match input.recovery_key with Some rk -> [rk] | None -> [] 76 69 in 77 70 match%lwt 78 71 Plc.submit_genesis Env.rotation_key sk_did ~rotation_did_keys
+20 -23
pegasus/lib/plc.ml
··· 30 30 [ ("type", `String type') 31 31 ; ("rotationKeys", `List (List.map (fun k -> `String k) rotation_keys)) 32 32 ; ( "verificationMethods" 33 - , `List 33 + , `Assoc 34 34 (List.map 35 - (fun ((k, v) : string * string) -> `Assoc [(k, `String v)]) 35 + (fun ((k, v) : string * string) -> (k, `String v)) 36 36 verification_methods ) ) 37 37 ; ("alsoKnownAs", `List (List.map (fun k -> `String k) also_known_as)) 38 38 ; ( "services" 39 - , `List 39 + , `Assoc 40 40 (List.map 41 41 (fun ((k, v) : string * service) -> 42 - `Assoc 43 - [ ( k 44 - , `Assoc 45 - [ ("type", `String v.type') 46 - ; ("endpoint", `String v.endpoint) ] ) ] ) 42 + ( k 43 + , `Assoc 44 + [ ("type", `String v.type') 45 + ; ("endpoint", `String v.endpoint) ] ) ) 47 46 services ) ) 48 47 ; ("prev", match prev with Some p -> `String p | None -> `Null) ] 49 48 | Tombstone {type'; prev} -> ··· 58 57 let verification_methods = 59 58 json 60 59 |> member "verificationMethods" 61 - |> to_list 62 - |> List.map (fun json -> 63 - let key = json |> member "key" |> to_string in 64 - let value = json |> member "value" |> to_string in 65 - (key, value) ) 60 + |> to_assoc 61 + |> List.map (fun (key, value) -> (key, to_string value)) 66 62 in 67 63 let also_known_as = 68 64 json |> member "alsoKnownAs" |> to_list |> List.map to_string 69 65 in 70 66 let services = 71 - json |> member "services" |> to_list 72 - |> List.map (fun json -> 73 - let key = json |> member "key" |> to_string in 74 - let type' = json |> member "type" |> to_string in 75 - let endpoint = json |> member "endpoint" |> to_string in 76 - (key, {type'; endpoint}) ) 67 + json |> member "services" |> to_assoc 68 + |> List.map (fun (k, v) -> (k, Result.get_ok @@ service_of_yojson v)) 77 69 in 78 70 let prev = json |> member "prev" |> to_string_option in 79 71 match type' with ··· 146 138 json 147 139 |> member "verificationMethods" 148 140 |> to_assoc 149 - |> List.map (fun (k, v) -> (k, v |> to_string)) 141 + |> List.map (fun (k, v) -> (k, to_string v)) 150 142 in 151 143 let also_known_as = 152 144 json |> member "alsoKnownAs" |> to_list |> List.map to_string ··· 213 205 let cbor = unsigned_operation_to_yojson operation |> Dag_cbor.encode_yojson in 214 206 let sig_bytes = Kleidos.sign ~privkey:key ~msg:cbor in 215 207 let sig_str = 216 - Result.get_ok @@ Multibase.encode_t `Base64url (Bytes.to_string sig_bytes) 208 + Base64.encode_exn ~pad:false ~alphabet:Base64.uri_safe_alphabet 209 + (Bytes.to_string sig_bytes) 217 210 in 218 211 match operation with 219 212 | Operation ··· 249 242 let did_of_operation operation : string = 250 243 let cbor = signed_operation_to_yojson operation |> Dag_cbor.encode_yojson in 251 244 let digest = Digestif.SHA256.(cbor |> digest_bytes |> to_raw_string) in 252 - let hash = Result.get_ok @@ Multibase.encode_t `Base32 digest in 245 + let hash = 246 + Result.get_ok @@ Multibase.Base32.encode digest |> String.lowercase_ascii 247 + in 253 248 let did = "did:plc:" ^ String.sub hash 0 24 in 254 249 did 255 250 ··· 291 286 Lwt.return_ok did 292 287 | Error (status, error) -> 293 288 Lwt.return_error 294 - @@ Format.sprintf "error %d while submitting operation; %s" status error 289 + @@ Format.sprintf "error %d while submitting operation %s\n\n%s" status 290 + (Yojson.Safe.to_string (signed_operation_to_yojson signed)) 291 + error 295 292 296 293 let get_audit_log ?endpoint did : (audit_log, string) Lwt_result.t = 297 294 let uri =