upstream: https://github.com/mirage/mirage-crypto
0
fork

Configure Feed

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

json: rename mem -> member / finish -> seal across the codec + value API

Object combinators: [Object.mem] -> [Object.member], [Object.opt_mem]
-> [Object.opt_member], [Object.case_mem] -> [Object.case_member]. The
sibling submodules [Object.Mem] / [Object.Mems] become
[Object.Member] / [Object.Members]. RFC 8259 §4 calls these
"name/value pairs, referred to as the members", so mirror the spec
name rather than the shortened [mem].

[Object.finish] -> [Object.seal]. "Seal" reads as "close the map, no
more members added", which is what the operation does.

Value constructors/queries: [Value.mem] (function) -> [Value.member];
[Value.mem_find] -> [Value.member_key]; [Value.mem_names] ->
[Value.member_names]; [Value.mem_keys] -> [Value.member_keys].
[type mem = ...] -> [type member = ...]; [type object'] still points
at [member list].

Downstream (~80 files across slack, sbom, stripe, sigstore, requests,
claude, irmin, freebox) updated via perl-pie. dune build clean,
dune test ocaml-json clean.

+62 -73
+62 -73
test/ec/wycheproof/wycheproof.ml
··· 85 85 result; 86 86 flags = Option.value ~default:[] flags; 87 87 }) 88 - |> Object.mem "tcId" int ~enc:(fun t -> t.tc_id) 89 - |> Object.mem "comment" string ~enc:(fun t -> t.comment) 90 - |> Object.opt_mem "curve" Value.t ~enc:(fun t -> 91 - t.curve) 92 - |> Object.mem "public" hex_jsont ~enc:(fun t -> t.public) 93 - |> Object.mem "private" hex_jsont ~enc:(fun t -> t.private_) 94 - |> Object.mem "shared" hex_jsont ~enc:(fun t -> t.shared) 95 - |> Object.mem "result" test_result_jsont ~enc:(fun t -> t.result) 96 - |> Object.opt_mem "flags" (list string) 97 - ~enc:(fun t -> if t.flags = [] then None else Some t.flags) 98 - |> Object.skip_unknown |> Object.finish 88 + |> Object.member "tcId" int ~enc:(fun t -> t.tc_id) 89 + |> Object.member "comment" string ~enc:(fun t -> t.comment) 90 + |> Object.opt_member "curve" Value.t ~enc:(fun t -> t.curve) 91 + |> Object.member "public" hex_jsont ~enc:(fun t -> t.public) 92 + |> Object.member "private" hex_jsont ~enc:(fun t -> t.private_) 93 + |> Object.member "shared" hex_jsont ~enc:(fun t -> t.shared) 94 + |> Object.member "result" test_result_jsont ~enc:(fun t -> t.result) 95 + |> Object.opt_member "flags" (list string) ~enc:(fun t -> 96 + if t.flags = [] then None else Some t.flags) 97 + |> Object.skip_unknown |> Object.seal 99 98 100 99 let has_ignored_flag test ~ignored_flags = 101 100 List.exists ··· 121 120 122 121 let ecdh_test_group_jsont = 123 122 let open Json.Codec in 124 - Object.map ~kind:"ecdh_test_group" 125 - (fun curve tests encoding type_ -> { curve; tests; encoding; type_ }) 126 - |> Object.mem "curve" string ~enc:(fun t -> t.curve) 127 - |> Object.mem "tests" (list ecdh_test_jsont) 128 - ~enc:(fun t -> t.tests) 129 - |> Object.opt_mem "encoding" Value.t ~enc:(fun t -> 130 - t.encoding) 131 - |> Object.opt_mem "type" Value.t ~enc:(fun t -> t.type_) 132 - |> Object.skip_unknown |> Object.finish 123 + Object.map ~kind:"ecdh_test_group" (fun curve tests encoding type_ -> 124 + { curve; tests; encoding; type_ }) 125 + |> Object.member "curve" string ~enc:(fun t -> t.curve) 126 + |> Object.member "tests" (list ecdh_test_jsont) ~enc:(fun t -> t.tests) 127 + |> Object.opt_member "encoding" Value.t ~enc:(fun t -> t.encoding) 128 + |> Object.opt_member "type" Value.t ~enc:(fun t -> t.type_) 129 + |> Object.skip_unknown |> Object.seal 133 130 134 131 type ecdsa_key = { 135 132 curve : string; ··· 151 148 152 149 let ecdsa_key_jsont = 153 150 let open Json.Codec in 154 - Object.map ~kind:"ecdsa_key" 155 - (fun curve key_size type_ uncompressed wx wy -> 151 + Object.map ~kind:"ecdsa_key" (fun curve key_size type_ uncompressed wx wy -> 156 152 { curve; key_size; type_; uncompressed; wx; wy }) 157 - |> Object.mem "curve" string ~enc:(fun t -> t.curve) 158 - |> Object.mem "keySize" int ~enc:(fun t -> t.key_size) 159 - |> Object.mem "type" Value.t ~enc:(fun t -> t.type_) 160 - |> Object.mem "uncompressed" hex_jsont ~enc:(fun t -> 161 - t.uncompressed) 162 - |> Object.mem "wx" hex_jsont ~enc:(fun t -> t.wx) 163 - |> Object.mem "wy" hex_jsont ~enc:(fun t -> t.wy) 164 - |> Object.skip_unknown |> Object.finish 153 + |> Object.member "curve" string ~enc:(fun t -> t.curve) 154 + |> Object.member "keySize" int ~enc:(fun t -> t.key_size) 155 + |> Object.member "type" Value.t ~enc:(fun t -> t.type_) 156 + |> Object.member "uncompressed" hex_jsont ~enc:(fun t -> t.uncompressed) 157 + |> Object.member "wx" hex_jsont ~enc:(fun t -> t.wx) 158 + |> Object.member "wy" hex_jsont ~enc:(fun t -> t.wy) 159 + |> Object.skip_unknown |> Object.seal 165 160 166 161 type dsa_test = { 167 162 tc_id : int; ··· 183 178 184 179 let dsa_test_jsont = 185 180 let open Json.Codec in 186 - Object.map ~kind:"dsa_test" 187 - (fun tc_id comment msg sig_ result flags -> 181 + Object.map ~kind:"dsa_test" (fun tc_id comment msg sig_ result flags -> 188 182 { 189 183 tc_id; 190 184 comment; ··· 193 187 result; 194 188 flags = Option.value ~default:[] flags; 195 189 }) 196 - |> Object.mem "tcId" int ~enc:(fun t -> t.tc_id) 197 - |> Object.mem "comment" string ~enc:(fun t -> t.comment) 198 - |> Object.mem "msg" hex_jsont ~enc:(fun t -> t.msg) 199 - |> Object.mem "sig" hex_jsont ~enc:(fun t -> t.sig_) 200 - |> Object.mem "result" test_result_jsont ~enc:(fun t -> t.result) 201 - |> Object.opt_mem "flags" (list string) 202 - ~enc:(fun t -> if t.flags = [] then None else Some t.flags) 203 - |> Object.skip_unknown |> Object.finish 190 + |> Object.member "tcId" int ~enc:(fun t -> t.tc_id) 191 + |> Object.member "comment" string ~enc:(fun t -> t.comment) 192 + |> Object.member "msg" hex_jsont ~enc:(fun t -> t.msg) 193 + |> Object.member "sig" hex_jsont ~enc:(fun t -> t.sig_) 194 + |> Object.member "result" test_result_jsont ~enc:(fun t -> t.result) 195 + |> Object.opt_member "flags" (list string) ~enc:(fun t -> 196 + if t.flags = [] then None else Some t.flags) 197 + |> Object.skip_unknown |> Object.seal 204 198 205 199 type ecdsa_test_group = { 206 200 key : ecdsa_key; ··· 226 220 Object.map ~kind:"ecdsa_test_group" 227 221 (fun key key_der key_pem sha tests type_ -> 228 222 { key; key_der; key_pem; sha; tests; type_ }) 229 - |> Object.mem "key" ecdsa_key_jsont ~enc:(fun t -> t.key) 230 - |> Object.mem "keyDer" string ~enc:(fun t -> t.key_der) 231 - |> Object.mem "keyPem" string ~enc:(fun t -> t.key_pem) 232 - |> Object.mem "sha" string ~enc:(fun t -> t.sha) 233 - |> Object.mem "tests" (list dsa_test_jsont) 234 - ~enc:(fun t -> t.tests) 235 - |> Object.opt_mem "type" Value.t ~enc:(fun t -> t.type_) 236 - |> Object.skip_unknown |> Object.finish 223 + |> Object.member "key" ecdsa_key_jsont ~enc:(fun t -> t.key) 224 + |> Object.member "keyDer" string ~enc:(fun t -> t.key_der) 225 + |> Object.member "keyPem" string ~enc:(fun t -> t.key_pem) 226 + |> Object.member "sha" string ~enc:(fun t -> t.sha) 227 + |> Object.member "tests" (list dsa_test_jsont) ~enc:(fun t -> t.tests) 228 + |> Object.opt_member "type" Value.t ~enc:(fun t -> t.type_) 229 + |> Object.skip_unknown |> Object.seal 237 230 238 231 type eddsa_key = { 239 232 curve : string; ··· 253 246 let open Json.Codec in 254 247 Object.map ~kind:"eddsa_key" (fun curve key_size pk sk type_ -> 255 248 { curve; key_size; pk; sk; type_ }) 256 - |> Object.mem "curve" string ~enc:(fun t -> t.curve) 257 - |> Object.mem "keySize" int ~enc:(fun t -> t.key_size) 258 - |> Object.mem "pk" hex_jsont ~enc:(fun t -> t.pk) 259 - |> Object.mem "sk" hex_jsont ~enc:(fun t -> t.sk) 260 - |> Object.mem "type" Value.t ~enc:(fun t -> t.type_) 261 - |> Object.skip_unknown |> Object.finish 249 + |> Object.member "curve" string ~enc:(fun t -> t.curve) 250 + |> Object.member "keySize" int ~enc:(fun t -> t.key_size) 251 + |> Object.member "pk" hex_jsont ~enc:(fun t -> t.pk) 252 + |> Object.member "sk" hex_jsont ~enc:(fun t -> t.sk) 253 + |> Object.member "type" Value.t ~enc:(fun t -> t.type_) 254 + |> Object.skip_unknown |> Object.seal 262 255 263 256 type eddsa_test_group = { 264 257 jwk : json; ··· 283 276 Object.map ~kind:"eddsa_test_group" 284 277 (fun jwk key key_der key_pem type_ tests -> 285 278 { jwk; key; key_der; key_pem; type_; tests }) 286 - |> Object.mem "jwk" Value.t ~enc:(fun t -> t.jwk) 287 - |> Object.mem "key" eddsa_key_jsont ~enc:(fun t -> t.key) 288 - |> Object.mem "keyDer" string ~enc:(fun t -> t.key_der) 289 - |> Object.mem "keyPem" string ~enc:(fun t -> t.key_pem) 290 - |> Object.mem "type" Value.t ~enc:(fun t -> t.type_) 291 - |> Object.mem "tests" (list dsa_test_jsont) 292 - ~enc:(fun t -> t.tests) 293 - |> Object.skip_unknown |> Object.finish 279 + |> Object.member "jwk" Value.t ~enc:(fun t -> t.jwk) 280 + |> Object.member "key" eddsa_key_jsont ~enc:(fun t -> t.key) 281 + |> Object.member "keyDer" string ~enc:(fun t -> t.key_der) 282 + |> Object.member "keyPem" string ~enc:(fun t -> t.key_pem) 283 + |> Object.member "type" Value.t ~enc:(fun t -> t.type_) 284 + |> Object.member "tests" (list dsa_test_jsont) ~enc:(fun t -> t.tests) 285 + |> Object.skip_unknown |> Object.seal 294 286 295 287 type test_file = { 296 288 algorithm : json; ··· 333 325 schema; 334 326 test_groups; 335 327 }) 336 - |> Object.mem "algorithm" Value.t ~enc:(fun t -> 337 - t.algorithm) 338 - |> Object.mem "generatorVersion" Value.t ~enc:(fun t -> 328 + |> Object.member "algorithm" Value.t ~enc:(fun t -> t.algorithm) 329 + |> Object.member "generatorVersion" Value.t ~enc:(fun t -> 339 330 t.generator_version) 340 - |> Object.mem "header" Value.t ~enc:(fun t -> t.header) 341 - |> Object.mem "notes" Value.t ~enc:(fun t -> t.notes) 342 - |> Object.mem "numberOfTests" Value.t ~enc:(fun t -> 343 - t.number_of_tests) 344 - |> Object.mem "schema" Value.t ~enc:(fun t -> t.schema) 345 - |> Object.mem "testGroups" (list Value.t) 346 - ~enc:(fun t -> t.test_groups) 347 - |> Object.skip_unknown |> Object.finish 331 + |> Object.member "header" Value.t ~enc:(fun t -> t.header) 332 + |> Object.member "notes" Value.t ~enc:(fun t -> t.notes) 333 + |> Object.member "numberOfTests" Value.t ~enc:(fun t -> t.number_of_tests) 334 + |> Object.member "schema" Value.t ~enc:(fun t -> t.schema) 335 + |> Object.member "testGroups" (list Value.t) ~enc:(fun t -> t.test_groups) 336 + |> Object.skip_unknown |> Object.seal 348 337 349 338 let json_result = function 350 339 | Ok x -> x