diff --git a/TestVectors/FeatureInputs/hiddenPid.json b/TestVectors/FeatureInputs/hiddenPid.json deleted file mode 100644 index 21463d5..0000000 --- a/TestVectors/FeatureInputs/hiddenPid.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pidHex": "2121e748cf836c7c46a347c6fbd62ffae184c2293128b50770a455049870b2c3" -} \ No newline at end of file diff --git a/TestVectors/FeatureInputs/issuerPid.json b/TestVectors/FeatureInputs/issuerPid.json deleted file mode 100644 index 2e1133b..0000000 --- a/TestVectors/FeatureInputs/issuerPid.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pidHex": "5105adaaa2b9d6a48a9ab9e46471b40d875febc15d35663016ddb5461619d6d1" -} \ No newline at end of file diff --git a/TestVectors/FeatureInputs/proverNym.json b/TestVectors/FeatureInputs/proverNym.json new file mode 100644 index 0000000..61c9b65 --- /dev/null +++ b/TestVectors/FeatureInputs/proverNym.json @@ -0,0 +1,3 @@ +{ + "proverNymHex": "5e2087638f71057ef108f83923189a71cea1f7c4b4ef69afb473c9a7074ddf49" +} \ No newline at end of file diff --git a/TestVectors/FeatureInputs/signerBlindHB.json b/TestVectors/FeatureInputs/signerBlindHB.json deleted file mode 100644 index c80c071..0000000 --- a/TestVectors/FeatureInputs/signerBlindHB.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "signerBlindHex": "2c971d5a34c1fd8d79a65afa6a7de15827af471f9c28279007072e845cd7c7b3" -} \ No newline at end of file diff --git a/TestVectors/FeatureInputs/signerBlindHP.json b/TestVectors/FeatureInputs/signerBlindHP.json deleted file mode 100644 index 65b3196..0000000 --- a/TestVectors/FeatureInputs/signerBlindHP.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "signerBlindHex": "1606181020d802596dacc2b75c81e90424f30e7e77723dc7877b023cb861d92d" -} \ No newline at end of file diff --git a/TestVectors/FeatureInputs/signerNymEntropy.json b/TestVectors/FeatureInputs/signerNymEntropy.json new file mode 100644 index 0000000..eba453a --- /dev/null +++ b/TestVectors/FeatureInputs/signerNymEntropy.json @@ -0,0 +1,3 @@ +{ + "signerNymEntropyHex": "25555cf635188a1c33989056f5129e6ab4be0e7c5cc588c48d308e0254eed140" +} \ No newline at end of file diff --git a/TestVectors/HolderBinding/addRawBaseSignatureInfo.json b/TestVectors/HolderBinding/addRawBaseSignatureInfo.json index e22a92f..9a1926f 100644 --- a/TestVectors/HolderBinding/addRawBaseSignatureInfo.json +++ b/TestVectors/HolderBinding/addRawBaseSignatureInfo.json @@ -1,5 +1,5 @@ { - "bbsSignature": "a61f9505bce7a5c9de2313ab6677999f0fb20685ab0c7fe91ca6d967dc4f9b2c6f973c8b04bc5269d3b960be707c0aea34042ba5646ff9892e537513b4b4721029bef35d922c3f3d27ca275984f52f3e", + "bbsSignature": "90eadd70a16661f3d596f3560fc485f7c23ba969eb7c237d481b3596b2f66279bd5a62fa523777eb73b5cfa361885f1a00864b960baf1b92d2b55c0652ebe39024f88e1377911c40bf14cb5fbc808ee1", "bbsHeader": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf8eea112c04d89e133880f96766ebae73693f75f1bbcbbaa473dc06254bdec4fb", "publicKey": "a4ef1afa3da575496f122b9b78b8c24761531a8a093206ae7c45b80759c168ba4f7a260f9c3367b6c019b4677841104b10665edbe70ba3ebe7d9cfbffbf71eb016f70abfbb163317f372697dc63efd21fc55764f63926a8f02eaea325a2a888f", "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", @@ -7,6 +7,5 @@ "/issuer", "/expirationDate" ], - "signerBlind": "2c971d5a34c1fd8d79a65afa6a7de15827af471f9c28279007072e845cd7c7b3", "featureOption": "anonymous_holder_binding" } \ No newline at end of file diff --git a/TestVectors/HolderBinding/addSignedSDBase.json b/TestVectors/HolderBinding/addSignedSDBase.json index 71f2f2d..f7ac4a9 100644 --- a/TestVectors/HolderBinding/addSignedSDBase.json +++ b/TestVectors/HolderBinding/addSignedSDBase.json @@ -68,6 +68,6 @@ "created": "2023-08-15T23:36:38Z", "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", "proofPurpose": "assertionMethod", - "proofValue": "u2V0EhlhQph-VBbznpcneIxOrZneZnw-yBoWrDH_pHKbZZ9xPmyxvlzyLBLxSadO5YL5wfArqNAQrpWRv-YkuU3UTtLRyECm-812SLD89J8onWYT1Lz5YQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjuoRLATYnhM4gPlnZuuuc2k_dfG7y7qkc9wGJUvexPtYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-CZy9pc3N1ZXJvL2V4cGlyYXRpb25EYXRlWCAslx1aNMH9jXmmWvpqfeFYJ69HH5woJ5AHBy6EXNfHsw" + "proofValue": "u2V0EhVhQkOrdcKFmYfPVlvNWD8SF98I7qWnrfCN9SBs1lrL2Ynm9WmL6Ujd363O1z6NhiF8aAIZLlguvG5LStVwGUuvjkCT4jhN3kRxAvxTLX7yAjuFYQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjuoRLATYnhM4gPlnZuuuc2k_dfG7y7qkc9wGJUvexPtYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-CZy9pc3N1ZXJvL2V4cGlyYXRpb25EYXRl" } } \ No newline at end of file diff --git a/TestVectors/HolderBinding/commitmentInfo.json b/TestVectors/HolderBinding/commitmentInfo.json index ff7d4b3..e5fdb0a 100644 --- a/TestVectors/HolderBinding/commitmentInfo.json +++ b/TestVectors/HolderBinding/commitmentInfo.json @@ -1,4 +1,4 @@ { - "secretProverBlind": "14c6dd50a5ae34ae83cd585dda6bb0ebbc23327ad3bcc92f321f09cc954435f0", - "commitmentWithProof": "b12a3bc39c35ca52631dfe4aee47f5f10d94107fd97f1aa39a94badb291ee66adf650770e08bb280af9340f34836b7ab353365d5769a24ded4a919c598c8831c0b66f83759f32d3b7eddcabf42bc471b475533116151674faec83c4fddc1c514af239f6370359aa03a955751a6b106911b902ae4dc6f14cfda9e0be04d85a3f1105fb7d5c83d263e0ca95217c8017e91" + "secretProverBlind": "12901a77b3906af68d9e4214dce887d127b2a51d6311bbe7d087d45737acd2db", + "commitmentWithProof": "ab77a14fddfafc7ae6ea82b0ef6048059225f96c9206903a34c6ec6beba702652e9d64fac1917e372853867d944e4a8059e0c26bc871cac14736e73685cd3006299539b93df64cdf661af2bc6300976528c5092c6dc842abaaa624f2184d3d5b75be0ede9c4822161149ef51a965ddda260e10b9246ecaea020ef952e3b3ed6e724bcb5d1a9c4004f0aea2cba030c27c" } \ No newline at end of file diff --git a/TestVectors/HolderBinding/derivedAdjIndexes.json b/TestVectors/HolderBinding/derivedAdjIndexes.json index 24c66a7..dbad924 100644 --- a/TestVectors/HolderBinding/derivedAdjIndexes.json +++ b/TestVectors/HolderBinding/derivedAdjIndexes.json @@ -1,4 +1 @@ -{ - "adjMandatoryIndexes":[0,1,2,5,6,8,9], - "adjSelectiveIndexes":[0,1,5,7,10,16] -} \ No newline at end of file +{"adjMandatoryIndexes":[0,1,2,5,6,8,9],"adjSelectiveIndexes":[0,1,5,7,10,16]} \ No newline at end of file diff --git a/TestVectors/HolderBinding/derivedAllGroupData.json b/TestVectors/HolderBinding/derivedAllGroupData.json index 575414a..b17127b 100644 --- a/TestVectors/HolderBinding/derivedAllGroupData.json +++ b/TestVectors/HolderBinding/derivedAllGroupData.json @@ -135,10 +135,10 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n" + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n" ] }, "selective": { @@ -273,14 +273,14 @@ ] }, "deskolemizedNQuads": [ - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"UA\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 _:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 _:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 .\n" + "_:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"UA\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_1 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_1 _:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 _:_26722372-c130-468d-94f1-31f48b98427c_1 .\n" ] }, "combined": { @@ -418,16 +418,16 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"UA\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 _:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 _:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n" + "_:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"UA\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_1 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_1 _:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 _:_26722372-c130-468d-94f1-31f48b98427c_1 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n" ] } }, @@ -542,13 +542,13 @@ "@value": "UTA" } ], - "@id": "urn:bnid:_5ec761cf-6b8d-4150-941b-67a0a618a918_0" + "@id": "urn:bnid:_26722372-c130-468d-94f1-31f48b98427c_0" } ], "@type": [ "https://w3id.org/vdl#LicensedDriver" ], - "@id": "urn:bnid:_5ec761cf-6b8d-4150-941b-67a0a618a918_1" + "@id": "urn:bnid:_26722372-c130-468d-94f1-31f48b98427c_1" } ], "https://schema.org/description": [ @@ -602,7 +602,7 @@ "https://www.w3.org/2018/credentials#VerifiableCredential", "https://w3id.org/vdl#Iso18013DriversLicenseCredential" ], - "@id": "urn:bnid:_5ec761cf-6b8d-4150-941b-67a0a618a918_2" + "@id": "urn:bnid:_26722372-c130-468d-94f1-31f48b98427c_2" } ], "compact": { @@ -612,7 +612,7 @@ "https://w3id.org/vdl/v1", "https://w3id.org/vdl/aamva/v1" ], - "id": "urn:bnid:_5ec761cf-6b8d-4150-941b-67a0a618a918_2", + "id": "urn:bnid:_26722372-c130-468d-94f1-31f48b98427c_2", "type": [ "VerifiableCredential", "Iso18013DriversLicenseCredential" @@ -621,10 +621,10 @@ "image": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUg...kSuQmCC", "name": "Utopia Driver's License", "credentialSubject": { - "id": "urn:bnid:_5ec761cf-6b8d-4150-941b-67a0a618a918_1", + "id": "urn:bnid:_26722372-c130-468d-94f1-31f48b98427c_1", "type": "LicensedDriver", "driversLicense": { - "id": "urn:bnid:_5ec761cf-6b8d-4150-941b-67a0a618a918_0", + "id": "urn:bnid:_26722372-c130-468d-94f1-31f48b98427c_0", "type": "Iso18013DriversLicense", "birth_date": "1998-08-28", "document_number": "542426814", @@ -678,47 +678,47 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"1998-08-28\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"542426814\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"2028-08-27T12:00:00-06:00\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"TURNER\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"SUSAN\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"2023-01-15T10:00:00-07:00\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"UADMV\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"UA\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"2\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"UTA\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"1ST\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"N\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 \"N\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 _:_5ec761cf-6b8d-4150-941b-67a0a618a918_0 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 \"A license granting driving privileges in Utopia.\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 \"Utopia Driver's License\" .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 _:_5ec761cf-6b8d-4150-941b-67a0a618a918_1 .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 \"2023-11-15T10:00:00-07:00\"^^ .\n", - "_:_5ec761cf-6b8d-4150-941b-67a0a618a918_2 .\n" + "_:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"1998-08-28\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"542426814\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"2028-08-27T12:00:00-06:00\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"TURNER\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"SUSAN\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"2023-01-15T10:00:00-07:00\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"UADMV\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"UA\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"2\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"UTA\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"1ST\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"N\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_0 \"N\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_1 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_1 _:_26722372-c130-468d-94f1-31f48b98427c_0 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 \"A license granting driving privileges in Utopia.\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 \"Utopia Driver's License\" .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 _:_26722372-c130-468d-94f1-31f48b98427c_1 .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 \"2023-11-15T10:00:00-07:00\"^^ .\n", + "_:_26722372-c130-468d-94f1-31f48b98427c_2 .\n" ], "labelMap": { "dataType": "Map", "value": [ [ - "_5ec761cf-6b8d-4150-941b-67a0a618a918_2", + "_26722372-c130-468d-94f1-31f48b98427c_2", "b1" ], [ - "_5ec761cf-6b8d-4150-941b-67a0a618a918_1", + "_26722372-c130-468d-94f1-31f48b98427c_1", "b0" ], [ - "_5ec761cf-6b8d-4150-941b-67a0a618a918_0", + "_26722372-c130-468d-94f1-31f48b98427c_0", "b2" ] ] diff --git a/TestVectors/HolderBinding/derivedDisclosureData.json b/TestVectors/HolderBinding/derivedDisclosureData.json index ebc7185..ebc5909 100644 --- a/TestVectors/HolderBinding/derivedDisclosureData.json +++ b/TestVectors/HolderBinding/derivedDisclosureData.json @@ -1,8 +1 @@ -{ - "bbsProof":"8621d7b34d4e0a2eae538d4a24b75b353518b9b2b4fd8e1d1131c33bb7b0708de00592ea8e959f05d278dc1ae449f68f87651657392d7d92cdfc23c967f4bd7ccb5d7e51201730aacb8ea15fc3667ee9ffad64e87e840cf9af5630b8f895b9cf8298dbdabdcf83b86038a152f668c572ec0ac2a5671a60e9ff55f01a6e937d0304cc525ac0386d500c17a52997c247ad23e0c5dfa1987e33fb14c5a44edcce4d7060fb9bdefc60e18e1328ad1824572741edb84314c3dc446b22e9891c13d200f240ec32859d96a63dc4b962a45160851bc7dfb2b5ab3c8e469cbfa2370e04b022221d30bffed0a759bde1c2d56363b543b6faa59f7dfeee8eaea1db0e73c0932a77ce39bc3b1f8008af4a8c20a630e7716e9fbe5636ae1ce30f6c1373b0cec62d803532a8101f633d7260fdba6e55ba36956cf3bbd9aae52193a108b4012b12e67d7a51498e44b10430aadc3857eef73e7bfa34b0aebd511823dae91cf29b68c618a7b3b7b804e97d599a92efd895975309e19edd932474534f3a447cf9c4d3cc228559ff70c17d2ee3544c9ba5051c43feedc9a02acd185a339f0307fb80cf209955368f60a0fd18d55efb249f22a805249bc6ec8cba9be2b4237e8866460cc4d063f16e0cb2fe82ad9b229d565d3c472c5e574fec5867ad90ed41c8a87e4e59f513bb937309f6135923950f119fcf6f7e682ea2917120f6830f38ff3bad1057908555d5cb884f2a4775e22cb311ee67355fe474e93a26129995c03ec4f76b4e4d191391a5e03f49e72f72971b35d2164f30717d7ce906d822bd7c993eecdbcf4ecfd0b0edb1f0dbf73de2a1cc7d0c34a5b2cff4dee896ce12c9a1d4b4f48f7a50918685c7007854d98945dc6563515377cc50fc2e47ac23a1bda1f9fcacdd4fa5519edc27250640d93a7358a48c6b733235c6ef4683e4a78f5b3da71be9cdaf153a26290becc72578b414a2a5d3c33c01bf7026a06dd7c5cedb9aa7b661507718631f84b47ee3a78331ef9a9abccf389a06521a598ffba6aff68cd31a982a67a11f2dd3cefdf5a3447688ddb24e97686373ab5efab6438586022f0cc7844355057e2f7bdb9fee7ad1661635a8056401df5b48b9958d92874c8d44119479d69d16ebb82ec741e8ffe1175e1bf7732038fe02a2063f83e0e11a77ebd37e146a0b59b39adc653255acfe19f5a5fc21db139652cb085d7c49ebe6bee66f3e9c9a888bb0679bf570e862c3cb68867cf401", - "labelMap":{"dataType":"Map","value":[["c14n0","b1"],["c14n1","b2"],["c14n2","b0"]]}, - "mandatoryIndexes":[0,1,2,5,6,8,9],"adjSelectiveIndexes":[0,1,5,7,10,16], - "presentationHeader":{"0":17,"1":51,"2":119,"3":170}, - "featureOption":"anonymous_holder_binding", - "lengthBBSMessages":23 -} \ No newline at end of file +{"bbsProof":"a19db05cca1237d9965b0bb3197c4962a7fb49c97af131c80ea2d8f949078ff5642acdb33d27d06b97f87ff906a2a23bb0c3dd778572b892785faefdc25811318b0b46e25b8863898b0600701a71c256ee9a7347a1a577fe2e3793b1c0390e4d8f9fff9161074eebba852bcca8089eed76416ac9f178b850e7688c26cfbdee344fa75d9ba2cf22417e3c70be7891f6de040928d4a665005ddbe3b7372ecb87baad726f1535d4600a0198d3a36a17ad673160f8ef5e5fd74f2542b214cc4534ee82b0a90c0501ca9749c8327afcb97e14220f2e516dfc3cb2ed2ffdd3845a25cb64e1a2aa9987bbc122755158d787a2356e28f2affff31b83a2cdff26d5ac1aa72f4d6c40fe96ad230ce09fd4e9b8998357c2964da031e59c3b8c2241da00bc66a6216af7cd02b535577fa3b54bf9a0d230183b03aa145dbabc7fed3710d879c6b8d4273e6e377bed382de985f561ff9b2b3445f29957655600cbd1b29714f52c55ff05bc204203e65bdf6f818e976c690becfed9284b27c2dead96803efad949ffb519b7024530b08b5ed4c8e7472ed20c3866b79658e1b2d2c5b88a60da07614afa4906c73a6e5ad9113282288173e265236fa57d72c97f85c86b43349516f8e2f52f756d43cd2d9cf8c673db404d14007706ebbd4f7b5bbd19cdce9f48b2dac2db7f0f0c3fb18bd8e66e28fe46dafc3961e5945779faf5407190a33ce00efd07222cc142d40cab9b9d591589a30d056dae47d376d3ac5fab3201bbada604dd8e5e292185f38e2bcd58e81b2fec1e7b5754b7b28bd127abc929e950cb75100e94695f1ad13c09c1d394664029b66bdd49304df3ae1e2a90a6309f07c47555ccaea9cd17d80eaad6b7c29e9335a69338446ff666ac5802cfe36057c449d392bda99d2657fb8b6cf02d7ce4d9dccd8e97033accc5c10f092ec7bf0b3c0b2afc64a1a429d81cc485388f6f390dd97f648c3712ee0b93a7e96b268437e6e3537fb7918cee2a4ac3f895c7945988d7d3880238b8cf6062da171aa87545cf62072b20e698eb4ac12450c0b95a77e946fada8d46102abfa9a5a12d2a71380dedb51e2a57c97514813c17ea93e6ca19077c2a2511bf8fd158c4ed7361590b040915a3cb76f323300111303d8dd31c55474d514209bf01ed6639d4d81a1b30be54444e523e2ddef9a0a6bfe792d3037944aec29154c02bb79d09bd53856797dceb6c599f4103ff7f13dfdb8b2d18477832e5fe21","labelMap":{"dataType":"Map","value":[["c14n0","b1"],["c14n1","b2"],["c14n2","b0"]]},"mandatoryIndexes":[0,1,2,5,6,8,9],"adjSelectiveIndexes":[0,1,5,7,10,16],"presentationHeader":{"0":17,"1":51,"2":119,"3":170},"featureOption":"anonymous_holder_binding","lengthBBSMessages":23} \ No newline at end of file diff --git a/TestVectors/HolderBinding/derivedGroupIndexes.json b/TestVectors/HolderBinding/derivedGroupIndexes.json index 24e51e6..85504a2 100644 --- a/TestVectors/HolderBinding/derivedGroupIndexes.json +++ b/TestVectors/HolderBinding/derivedGroupIndexes.json @@ -1,6 +1 @@ -{ - "combinedIndexes":[0,1,2,3,4,5,6,10,11,13,14,17,23], - "mandatoryIndexes":[0,1,2,5,6,11,13], - "nonMandatoryIndexes":[3,4,7,8,9,10,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29], - "selectiveIndexes":[3,4,5,6,10,14,17,23] -} \ No newline at end of file +{"combinedIndexes":[0,1,2,3,4,5,6,10,11,13,14,17,23],"mandatoryIndexes":[0,1,2,5,6,11,13],"nonMandatoryIndexes":[3,4,7,8,9,10,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],"selectiveIndexes":[3,4,5,6,10,14,17,23]} \ No newline at end of file diff --git a/TestVectors/HolderBinding/derivedRecoveredBaseData.json b/TestVectors/HolderBinding/derivedRecoveredBaseData.json index e22a92f..9a1926f 100644 --- a/TestVectors/HolderBinding/derivedRecoveredBaseData.json +++ b/TestVectors/HolderBinding/derivedRecoveredBaseData.json @@ -1,5 +1,5 @@ { - "bbsSignature": "a61f9505bce7a5c9de2313ab6677999f0fb20685ab0c7fe91ca6d967dc4f9b2c6f973c8b04bc5269d3b960be707c0aea34042ba5646ff9892e537513b4b4721029bef35d922c3f3d27ca275984f52f3e", + "bbsSignature": "90eadd70a16661f3d596f3560fc485f7c23ba969eb7c237d481b3596b2f66279bd5a62fa523777eb73b5cfa361885f1a00864b960baf1b92d2b55c0652ebe39024f88e1377911c40bf14cb5fbc808ee1", "bbsHeader": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf8eea112c04d89e133880f96766ebae73693f75f1bbcbbaa473dc06254bdec4fb", "publicKey": "a4ef1afa3da575496f122b9b78b8c24761531a8a093206ae7c45b80759c168ba4f7a260f9c3367b6c019b4677841104b10665edbe70ba3ebe7d9cfbffbf71eb016f70abfbb163317f372697dc63efd21fc55764f63926a8f02eaea325a2a888f", "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", @@ -7,6 +7,5 @@ "/issuer", "/expirationDate" ], - "signerBlind": "2c971d5a34c1fd8d79a65afa6a7de15827af471f9c28279007072e845cd7c7b3", "featureOption": "anonymous_holder_binding" } \ No newline at end of file diff --git a/TestVectors/HolderBinding/derivedRevealDocument.json b/TestVectors/HolderBinding/derivedRevealDocument.json index b69d8d2..69f471b 100644 --- a/TestVectors/HolderBinding/derivedRevealDocument.json +++ b/TestVectors/HolderBinding/derivedRevealDocument.json @@ -51,6 +51,6 @@ "created": "2023-08-15T23:36:38Z", "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", "proofPurpose": "assertionMethod", - "proofValue": "u2V0FhlkDcIYh17NNTgourlONSiS3WzU1GLmytP2OHRExwzu3sHCN4AWS6o6VnwXSeNwa5En2j4dlFlc5LX2SzfwjyWf0vXzLXX5RIBcwqsuOoV_DZn7p_61k6H6EDPmvVjC4-JW5z4KY29q9z4O4YDihUvZoxXLsCsKlZxpg6f9V8Bpuk30DBMxSWsA4bVAMF6Upl8JHrSPgxd-hmH4z-xTFpE7czk1wYPub3vxg4Y4TKK0YJFcnQe24QxTD3ERrIumJHBPSAPJA7DKFnZamPcS5YqRRYIUbx9-ytas8jkacv6I3DgSwIiIdML_-0KdZveHC1WNjtUO2-qWfff7ujq6h2w5zwJMqd845vDsfgAivSowgpjDncW6fvlY2rhzjD2wTc7DOxi2ANTKoEB9jPXJg_bpuVbo2lWzzu9mq5SGToQi0ASsS5n16UUmORLEEMKrcOFfu9z57-jSwrr1RGCPa6Rzym2jGGKezt7gE6X1ZmpLv2JWXUwnhnt2TJHRTTzpEfPnE08wihVn_cMF9LuNUTJulBRxD_u3JoCrNGFoznwMH-4DPIJlVNo9goP0Y1V77JJ8iqAUkm8bsjLqb4rQjfohmRgzE0GPxbgyy_oKtmyKdVl08RyxeV0_sWGetkO1ByKh-Tln1E7uTcwn2E1kjlQ8Rn89vfmguopFxIPaDDzj_O60QV5CFVdXLiE8qR3XiLLMR7mc1X-R06TomEpmVwD7E92tOTRkTkaXgP0nnL3KXGzXSFk8wcX186QbYIr18mT7s289Oz9Cw7bHw2_c94qHMfQw0pbLP9N7ols4SyaHUtPSPelCRhoXHAHhU2YlF3GVjUVN3zFD8LkesI6G9ofn8rN1PpVGe3CclBkDZOnNYpIxrczI1xu9Gg-Snj1s9pxvpza8VOiYpC-zHJXi0FKKl08M8Ab9wJqBt18XO25qntmFQdxhjH4S0fuOngzHvmpq8zziaBlIaWY_7pq_2jNMamCpnoR8t08799aNEdojdsk6XaGNzq176tkOFhgIvDMeEQ1UFfi9725_uetFmFjWoBWQB31tIuZWNkodMjUQRlHnWnRbruC7HQej_4RdeG_dzIDj-AqIGP4Pg4Rp369N-FGoLWbOa3GUyVaz-GfWl_CHbE5ZSywhdfEnr5r7mbz6cmoiLsGeb9XDoYsPLaIZ89AGjAAEBAgIAhwABAgUGCAmGAAEFBwoQRBEzd6oX" + "proofValue": "u2V0FhlkDcKGdsFzKEjfZllsLsxl8SWKn-0nJevExyA6i2PlJB4_1ZCrNsz0n0GuX-H_5BqKiO7DD3XeFcriSeF-u_cJYETGLC0biW4hjiYsGAHAaccJW7ppzR6Gld_4uN5OxwDkOTY-f_5FhB07ruoUrzKgInu12QWrJ8Xi4UOdojCbPve40T6ddm6LPIkF-PHC-eJH23gQJKNSmZQBd2-O3Ny7Lh7qtcm8VNdRgCgGY06NqF61nMWD4715f108lQrIUzEU07oKwqQwFAcqXScgyevy5fhQiDy5Rbfw8su0v_dOEWiXLZOGiqpmHu8EidVFY14eiNW4o8q__8xuDos3_JtWsGqcvTWxA_patIwzgn9TpuJmDV8KWTaAx5Zw7jCJB2gC8ZqYhavfNArU1V3-jtUv5oNIwGDsDqhRdurx_7TcQ2HnGuNQnPm43e-04LemF9WH_mys0RfKZV2VWAMvRspcU9SxV_wW8IEID5lvfb4GOl2xpC-z-2ShLJ8LerZaAPvrZSf-1GbcCRTCwi17UyOdHLtIMOGa3lljhstLFuIpg2gdhSvpJBsc6blrZETKCKIFz4mUjb6V9csl_hchrQzSVFvji9S91bUPNLZz4xnPbQE0UAHcG671Pe1u9Gc3On0iy2sLbfw8MP7GL2OZuKP5G2vw5YeWUV3n69UBxkKM84A79ByIswULUDKubnVkViaMNBW2uR9N206xfqzIBu62mBN2OXikhhfOOK81Y6Bsv7B57V1S3sovRJ6vJKelQy3UQDpRpXxrRPAnB05RmQCm2a91JME3zrh4qkKYwnwfEdVXMrqnNF9gOqta3wp6TNaaTOERv9masWALP42BXxEnTkr2pnSZX-4ts8C185NnczY6XAzrMxcEPCS7Hvws8Cyr8ZKGkKdgcxIU4j285Ddl_ZIw3Eu4Lk6fpayaEN-bjU3-3kYzuKkrD-JXHlFmI19OIAji4z2Bi2hcaqHVFz2IHKyDmmOtKwSRQwLlad-lG-tqNRhAqv6mloS0qcTgN7bUeKlfJdRSBPBfqk-bKGQd8KiURv4_RWMTtc2FZCwQJFaPLdvMjMAERMD2N0xxVR01RQgm_Ae1mOdTYGhswvlRETlI-Ld75oKa_55LTA3lErsKRVMArt50JvVOFZ5fc62xZn0ED_38T39uLLRhHeDLl_iGjAAEBAgIAhwABAgUGCAmGAAEFBwoQRBEzd6oX" } } \ No newline at end of file diff --git a/TestVectors/HolderBinding/verifyDerivedProofValue.json b/TestVectors/HolderBinding/verifyDerivedProofValue.json index 4bef63d..bbf3453 100644 --- a/TestVectors/HolderBinding/verifyDerivedProofValue.json +++ b/TestVectors/HolderBinding/verifyDerivedProofValue.json @@ -1,5 +1,5 @@ { - "bbsProof": "8621d7b34d4e0a2eae538d4a24b75b353518b9b2b4fd8e1d1131c33bb7b0708de00592ea8e959f05d278dc1ae449f68f87651657392d7d92cdfc23c967f4bd7ccb5d7e51201730aacb8ea15fc3667ee9ffad64e87e840cf9af5630b8f895b9cf8298dbdabdcf83b86038a152f668c572ec0ac2a5671a60e9ff55f01a6e937d0304cc525ac0386d500c17a52997c247ad23e0c5dfa1987e33fb14c5a44edcce4d7060fb9bdefc60e18e1328ad1824572741edb84314c3dc446b22e9891c13d200f240ec32859d96a63dc4b962a45160851bc7dfb2b5ab3c8e469cbfa2370e04b022221d30bffed0a759bde1c2d56363b543b6faa59f7dfeee8eaea1db0e73c0932a77ce39bc3b1f8008af4a8c20a630e7716e9fbe5636ae1ce30f6c1373b0cec62d803532a8101f633d7260fdba6e55ba36956cf3bbd9aae52193a108b4012b12e67d7a51498e44b10430aadc3857eef73e7bfa34b0aebd511823dae91cf29b68c618a7b3b7b804e97d599a92efd895975309e19edd932474534f3a447cf9c4d3cc228559ff70c17d2ee3544c9ba5051c43feedc9a02acd185a339f0307fb80cf209955368f60a0fd18d55efb249f22a805249bc6ec8cba9be2b4237e8866460cc4d063f16e0cb2fe82ad9b229d565d3c472c5e574fec5867ad90ed41c8a87e4e59f513bb937309f6135923950f119fcf6f7e682ea2917120f6830f38ff3bad1057908555d5cb884f2a4775e22cb311ee67355fe474e93a26129995c03ec4f76b4e4d191391a5e03f49e72f72971b35d2164f30717d7ce906d822bd7c993eecdbcf4ecfd0b0edb1f0dbf73de2a1cc7d0c34a5b2cff4dee896ce12c9a1d4b4f48f7a50918685c7007854d98945dc6563515377cc50fc2e47ac23a1bda1f9fcacdd4fa5519edc27250640d93a7358a48c6b733235c6ef4683e4a78f5b3da71be9cdaf153a26290becc72578b414a2a5d3c33c01bf7026a06dd7c5cedb9aa7b661507718631f84b47ee3a78331ef9a9abccf389a06521a598ffba6aff68cd31a982a67a11f2dd3cefdf5a3447688ddb24e97686373ab5efab6438586022f0cc7844355057e2f7bdb9fee7ad1661635a8056401df5b48b9958d92874c8d44119479d69d16ebb82ec741e8ffe1175e1bf7732038fe02a2063f83e0e11a77ebd37e146a0b59b39adc653255acfe19f5a5fc21db139652cb085d7c49ebe6bee66f3e9c9a888bb0679bf570e862c3cb68867cf401", + "bbsProof": "a19db05cca1237d9965b0bb3197c4962a7fb49c97af131c80ea2d8f949078ff5642acdb33d27d06b97f87ff906a2a23bb0c3dd778572b892785faefdc25811318b0b46e25b8863898b0600701a71c256ee9a7347a1a577fe2e3793b1c0390e4d8f9fff9161074eebba852bcca8089eed76416ac9f178b850e7688c26cfbdee344fa75d9ba2cf22417e3c70be7891f6de040928d4a665005ddbe3b7372ecb87baad726f1535d4600a0198d3a36a17ad673160f8ef5e5fd74f2542b214cc4534ee82b0a90c0501ca9749c8327afcb97e14220f2e516dfc3cb2ed2ffdd3845a25cb64e1a2aa9987bbc122755158d787a2356e28f2affff31b83a2cdff26d5ac1aa72f4d6c40fe96ad230ce09fd4e9b8998357c2964da031e59c3b8c2241da00bc66a6216af7cd02b535577fa3b54bf9a0d230183b03aa145dbabc7fed3710d879c6b8d4273e6e377bed382de985f561ff9b2b3445f29957655600cbd1b29714f52c55ff05bc204203e65bdf6f818e976c690becfed9284b27c2dead96803efad949ffb519b7024530b08b5ed4c8e7472ed20c3866b79658e1b2d2c5b88a60da07614afa4906c73a6e5ad9113282288173e265236fa57d72c97f85c86b43349516f8e2f52f756d43cd2d9cf8c673db404d14007706ebbd4f7b5bbd19cdce9f48b2dac2db7f0f0c3fb18bd8e66e28fe46dafc3961e5945779faf5407190a33ce00efd07222cc142d40cab9b9d591589a30d056dae47d376d3ac5fab3201bbada604dd8e5e292185f38e2bcd58e81b2fec1e7b5754b7b28bd127abc929e950cb75100e94695f1ad13c09c1d394664029b66bdd49304df3ae1e2a90a6309f07c47555ccaea9cd17d80eaad6b7c29e9335a69338446ff666ac5802cfe36057c449d392bda99d2657fb8b6cf02d7ce4d9dccd8e97033accc5c10f092ec7bf0b3c0b2afc64a1a429d81cc485388f6f390dd97f648c3712ee0b93a7e96b268437e6e3537fb7918cee2a4ac3f895c7945988d7d3880238b8cf6062da171aa87545cf62072b20e698eb4ac12450c0b95a77e946fada8d46102abfa9a5a12d2a71380dedb51e2a57c97514813c17ea93e6ca19077c2a2511bf8fd158c4ed7361590b040915a3cb76f323300111303d8dd31c55474d514209bf01ed6639d4d81a1b30be54444e523e2ddef9a0a6bfe792d3037944aec29154c02bb79d09bd53856797dceb6c599f4103ff7f13dfdb8b2d18477832e5fe21", "labelMap": [ [ "c14n0", diff --git a/TestVectors/PseudoHiddenPid/commitmentInfo.json b/TestVectors/PseudoHiddenPid/commitmentInfo.json deleted file mode 100644 index 284cf24..0000000 --- a/TestVectors/PseudoHiddenPid/commitmentInfo.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "secretProverBlind": "38296aa447032739a5bd002c1a93acbd2c2e998b76b099a579f669df037119ad", - "commitmentWithProof": "8cda82fbc8691463c1cd5c96d2bd259ee9510ad572669eb5edc71090abf14a5f819c34fcb356314af65b43c530dc3ef7179e8a07334088e1b612f84a170232febca7a8b54f4ae41fdf79fa1f02d581370836dec7ce0afa0f5c63c37aeb0e280711189a0ab37184d84c11117508f54cc240c632fd7178ace50fa4ec29d18910014f9004de1a819e1d4afe39006311c2d5" -} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/derivedDisclosureData.json b/TestVectors/PseudoHiddenPid/derivedDisclosureData.json deleted file mode 100644 index 68b287b..0000000 --- a/TestVectors/PseudoHiddenPid/derivedDisclosureData.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "bbsProof":"86bd0f8ade091a628c57ac60613c9001c1d5a9d00cdcb6522cb9e0adc8b053b6bb55dfe52536419410e4e413034309118a9a8262fd586e0bee6a1ea75afaa262f87a07038099cfba13961e4cdd630ece4971d0e60fa9ad42b653c0e52c3934168fe9b112885d990568b24b2181faf19a6b30a8bb4fae9424dc290fa99e5dcc699231b8981a957769fb7bacb910a7a0da05f7dc652cca5e9a99d6dea4c9a7d4be8a1194fc264008af9ab6dc6e0119e08752f64400b2d54bf9f2ddf55d2332ea35df6cc517dde4df4c5b64ad8916c2e34b4f6ebe5ac5e9ec40120c411a37f33ccab226ddfc848d425458acd6fb0da69f0b6abec4450945fb1442261890afceda991cc18cbdfd7cef2b56e6f34a5c8f6f341c0ed4ea6eec371baccc7a4c4858f5a242eb800e9f1853f9b580ab40b3e6c5735209027b2134053aa9b1a97a890f6ee177e3b51c51d18a03550031865d363f14216c0036122a0b19b040f5544747d30122d57763be7f7d5878177b299ae8a185257e8f3b4f03e37fa7db492204952a26c06851ecbbec69be37108524e4270de758af4c35c679cae9a1e72abafc754db3bc0fa7e60789b161bbe6b15051f6d46a1842376291d9c024fc5ad23086880257ad9612650e9688ef960858f296d42eda41d269cf3452fe4a34d7e53e35b49004b739fb1312bc06019ce9bfb5c5d3d652438025d4b961774bc9c6218a05d48d5416eb426e8d978fc13b07598ceda1461534b00e8538ea1cf194922a6bc0a1d5a90a9ef378579a3d10468abe516c23c26122f2da1e2cb70a16dcd420dc254c55ffc0160555add13f02b4caeef6818adc952e5ddbb11646815d95e3cb462bff2cd024cc0bd098fd5584bbcce42b2e381542651a059dcfdd1103e3d7df48254ab6f9de605dbf3e5d180d5599ee0ced2950c872e00cae2c6be10d21b343e2bf023d9101a14998d8c24d612fbc1e51185108a1126edec634cd6c1a0829ed8a596030c50fbac8c4336875acdaf78687d6f2772f62fe6df4d05a8c8d51db1d79a096df0c4d7f84f2b097d2a96cc115d1ca544c34171431998d91058e3915619a85acf5f94091f997686f7b961a2e6335edb8707d5813a6d07fe4cdb9f9232b4cff64a458bca8eb44e4e5cb18906df1beb93cff8c1a7d85b8c816e40c36edcac7227bc18d53232d0390776e6c68f028fb68721058205142e4d47f4cd36be55fe7108007948c1573bcd458d5648a5dad71ca0032b3", - "labelMap":{"dataType":"Map","value":[["c14n0","b1"],["c14n1","b2"],["c14n2","b0"]]}, - "mandatoryIndexes":[0,1,2,5,6,8,9], - "adjSelectiveIndexes":[0,1,5,7,10,16], - "presentationHeader":{"0":17,"1":51,"2":119,"3":170}, - "pseudonym":"ad1306b414ece48113bc00c17c1873b44497d3b8fb1c164553ddf5cdd0575e89585e71db13941aecd34f66bc459a0e97","featureOption":"pseudonym_hidden_pid", - "lengthBBSMessages":23 -} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/pseudonymInfo.json b/TestVectors/PseudoHiddenPid/pseudonymInfo.json deleted file mode 100644 index ceea397..0000000 --- a/TestVectors/PseudoHiddenPid/pseudonymInfo.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pseudonymHex": "ad1306b414ece48113bc00c17c1873b44497d3b8fb1c164553ddf5cdd0575e89585e71db13941aecd34f66bc459a0e97" -} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/verifyDerivedProofValue.json b/TestVectors/PseudoHiddenPid/verifyDerivedProofValue.json deleted file mode 100644 index ab3fa5f..0000000 --- a/TestVectors/PseudoHiddenPid/verifyDerivedProofValue.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "bbsProof": "86bd0f8ade091a628c57ac60613c9001c1d5a9d00cdcb6522cb9e0adc8b053b6bb55dfe52536419410e4e413034309118a9a8262fd586e0bee6a1ea75afaa262f87a07038099cfba13961e4cdd630ece4971d0e60fa9ad42b653c0e52c3934168fe9b112885d990568b24b2181faf19a6b30a8bb4fae9424dc290fa99e5dcc699231b8981a957769fb7bacb910a7a0da05f7dc652cca5e9a99d6dea4c9a7d4be8a1194fc264008af9ab6dc6e0119e08752f64400b2d54bf9f2ddf55d2332ea35df6cc517dde4df4c5b64ad8916c2e34b4f6ebe5ac5e9ec40120c411a37f33ccab226ddfc848d425458acd6fb0da69f0b6abec4450945fb1442261890afceda991cc18cbdfd7cef2b56e6f34a5c8f6f341c0ed4ea6eec371baccc7a4c4858f5a242eb800e9f1853f9b580ab40b3e6c5735209027b2134053aa9b1a97a890f6ee177e3b51c51d18a03550031865d363f14216c0036122a0b19b040f5544747d30122d57763be7f7d5878177b299ae8a185257e8f3b4f03e37fa7db492204952a26c06851ecbbec69be37108524e4270de758af4c35c679cae9a1e72abafc754db3bc0fa7e60789b161bbe6b15051f6d46a1842376291d9c024fc5ad23086880257ad9612650e9688ef960858f296d42eda41d269cf3452fe4a34d7e53e35b49004b739fb1312bc06019ce9bfb5c5d3d652438025d4b961774bc9c6218a05d48d5416eb426e8d978fc13b07598ceda1461534b00e8538ea1cf194922a6bc0a1d5a90a9ef378579a3d10468abe516c23c26122f2da1e2cb70a16dcd420dc254c55ffc0160555add13f02b4caeef6818adc952e5ddbb11646815d95e3cb462bff2cd024cc0bd098fd5584bbcce42b2e381542651a059dcfdd1103e3d7df48254ab6f9de605dbf3e5d180d5599ee0ced2950c872e00cae2c6be10d21b343e2bf023d9101a14998d8c24d612fbc1e51185108a1126edec634cd6c1a0829ed8a596030c50fbac8c4336875acdaf78687d6f2772f62fe6df4d05a8c8d51db1d79a096df0c4d7f84f2b097d2a96cc115d1ca544c34171431998d91058e3915619a85acf5f94091f997686f7b961a2e6335edb8707d5813a6d07fe4cdb9f9232b4cff64a458bca8eb44e4e5cb18906df1beb93cff8c1a7d85b8c816e40c36edcac7227bc18d53232d0390776e6c68f028fb68721058205142e4d47f4cd36be55fe7108007948c1573bcd458d5648a5dad71ca0032b3", - "labelMap": [ - [ - "c14n0", - "b1" - ], - [ - "c14n1", - "b2" - ], - [ - "c14n2", - "b0" - ] - ], - "mandatoryIndexes": [ - 0, - 1, - 2, - 5, - 6, - 8, - 9 - ], - "adjSelectedIndexes": [ - 0, - 1, - 5, - 7, - 10, - 16 - ] -} \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/derivedDisclosureData.json b/TestVectors/PseudoIssuerPid/derivedDisclosureData.json deleted file mode 100644 index 1a1b827..0000000 --- a/TestVectors/PseudoIssuerPid/derivedDisclosureData.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "bbsProof":"b1e7e101612e445e05c355545a0eaeda60c4d5f6b2118bd5bab4addd3d5a74a3c7296b1947079033b37e5e7ffead71c3a67b4251662fd1bb4cdbb6ed3b5aa916fa3f41e5bfdb2352c8cd0c7c2a9c16ee5d7b4e9195a92240c9d3c7403dadddccad4628e3c761fe9bb0983fd754efc28d36cc379e747074fa7029dc11187583ed87a8ead2e2105e834539c3cf5d1e47402a228a0668ef2bb124d41a2d7f11a026612da4138ef61d67bf28867a593615c312932ad74068a4eb54e8d56728574708057c3f88a30b4b380b90dcdbdd1fb7c54b6d11d348b4f33d1567fe23015fab3283fbf29ad2641cf0672a53b16ea9f20a0fb3a7e07a1f8951db23a794fdc4b97f3f2fe1b053f68a5db2159b8034b2b3544925f8e4e407ecaf1a8f1f025eff50e9cbad11192038d0ba07fb44b33fd77a695f9ea089bc86856d8d93f3891c5d230f0d2d4930d79671c9e8e8de3a40487dc869d5169a5397839a49baec8f409659ee9c45b15e39b0fd482ad76beeda9d5bd3143bd3be5312828b08dc889962bf1ea45d42c8d9ba34fb40a76082e375b004990d3806e90024fe211c4dec5b104f6ba01d69916f56605e32228c7a47449e94072a4887b9460573ec8fa5e92cb6ab21bcf4a6549af5f630493f42a584d49cd8a072b53bfd030f3863f79ef66167ff6b270f396c345520872facd16d75444f9fb333ec93043f0e4dad12ef3182fedd7d6fc2e430bca67506540c61a9a9bd84d5790c1711463e78d085f91b81629c0b22f55f8241ec5c3182ecd51cfa112beee6901aef8bec9f3ae27e82e509318d989b5a6a6d794562792ac0d138a1f75faada8e40c21a4519b841b313e1b0f1c8f3e7ce8b324c95fe29c202a3678f184ee7b70a10998fd6d80698b322f12806cc74fadc9ca2d4df487975a21e392bad0dae4add605dc5c8ad816da5cbf7ba19893d0d2388248504c375e7786ef6fffca18b0428184d25662f81f11f1dc276c71d8651367570d1263559e5d81049ee3b3c2d8eb4534367752e8b197af1d1989e1ebf55f8b71a616e49a98d09a456c0267e58cc1458997a8cfe00b499ffa91fbf0d01f5122329c9b822e981e42fa30c4e6a9511c53c2bcc34ca99350132260230296cbaf7a25ad678ef8a409b707ca78b51f016b52f571438d832b85f3c5fcfb67d7957113790616c9100684f1aaefb2335bed05a", - "labelMap":{"dataType":"Map","value":[["c14n0","b1"],["c14n1","b2"],["c14n2","b0"]]}, - "mandatoryIndexes":[0,1,2,5,6,8,9], - "adjSelectiveIndexes":[0,1,5,7,10,16], - "presentationHeader":{"0":17,"1":51,"2":119,"3":170}, - "pseudonym":"b2981ced4b1acc7ddcaef1df51de385b344d697727ad5c8aee2b60d76a349146b4995d348607363070dd47b31a558be1", - "lengthBBSMessages":24, - "featureOption":"pseudonym_issuer_pid" -} \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/pseudonymInfo.json b/TestVectors/PseudoIssuerPid/pseudonymInfo.json deleted file mode 100644 index 097df8a..0000000 --- a/TestVectors/PseudoIssuerPid/pseudonymInfo.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pseudonymHex": "b2981ced4b1acc7ddcaef1df51de385b344d697727ad5c8aee2b60d76a349146b4995d348607363070dd47b31a558be1" -} \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/verifyDerivedProofValue.json b/TestVectors/PseudoIssuerPid/verifyDerivedProofValue.json deleted file mode 100644 index 2d36ac2..0000000 --- a/TestVectors/PseudoIssuerPid/verifyDerivedProofValue.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "bbsProof": "b1e7e101612e445e05c355545a0eaeda60c4d5f6b2118bd5bab4addd3d5a74a3c7296b1947079033b37e5e7ffead71c3a67b4251662fd1bb4cdbb6ed3b5aa916fa3f41e5bfdb2352c8cd0c7c2a9c16ee5d7b4e9195a92240c9d3c7403dadddccad4628e3c761fe9bb0983fd754efc28d36cc379e747074fa7029dc11187583ed87a8ead2e2105e834539c3cf5d1e47402a228a0668ef2bb124d41a2d7f11a026612da4138ef61d67bf28867a593615c312932ad74068a4eb54e8d56728574708057c3f88a30b4b380b90dcdbdd1fb7c54b6d11d348b4f33d1567fe23015fab3283fbf29ad2641cf0672a53b16ea9f20a0fb3a7e07a1f8951db23a794fdc4b97f3f2fe1b053f68a5db2159b8034b2b3544925f8e4e407ecaf1a8f1f025eff50e9cbad11192038d0ba07fb44b33fd77a695f9ea089bc86856d8d93f3891c5d230f0d2d4930d79671c9e8e8de3a40487dc869d5169a5397839a49baec8f409659ee9c45b15e39b0fd482ad76beeda9d5bd3143bd3be5312828b08dc889962bf1ea45d42c8d9ba34fb40a76082e375b004990d3806e90024fe211c4dec5b104f6ba01d69916f56605e32228c7a47449e94072a4887b9460573ec8fa5e92cb6ab21bcf4a6549af5f630493f42a584d49cd8a072b53bfd030f3863f79ef66167ff6b270f396c345520872facd16d75444f9fb333ec93043f0e4dad12ef3182fedd7d6fc2e430bca67506540c61a9a9bd84d5790c1711463e78d085f91b81629c0b22f55f8241ec5c3182ecd51cfa112beee6901aef8bec9f3ae27e82e509318d989b5a6a6d794562792ac0d138a1f75faada8e40c21a4519b841b313e1b0f1c8f3e7ce8b324c95fe29c202a3678f184ee7b70a10998fd6d80698b322f12806cc74fadc9ca2d4df487975a21e392bad0dae4add605dc5c8ad816da5cbf7ba19893d0d2388248504c375e7786ef6fffca18b0428184d25662f81f11f1dc276c71d8651367570d1263559e5d81049ee3b3c2d8eb4534367752e8b197af1d1989e1ebf55f8b71a616e49a98d09a456c0267e58cc1458997a8cfe00b499ffa91fbf0d01f5122329c9b822e981e42fa30c4e6a9511c53c2bcc34ca99350132260230296cbaf7a25ad678ef8a409b707ca78b51f016b52f571438d832b85f3c5fcfb67d7957113790616c9100684f1aaefb2335bed05a", - "labelMap": [ - [ - "c14n0", - "b1" - ], - [ - "c14n1", - "b2" - ], - [ - "c14n2", - "b0" - ] - ], - "mandatoryIndexes": [ - 0, - 1, - 2, - 5, - 6, - 8, - 9 - ], - "adjSelectedIndexes": [ - 0, - 1, - 5, - 7, - 10, - 16 - ], - "pseudonym": "b2981ced4b1acc7ddcaef1df51de385b344d697727ad5c8aee2b60d76a349146b4995d348607363070dd47b31a558be1", - "lengthBBSMessages": 24 -} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/addBaseDocCanon.json b/TestVectors/Pseudonym/addBaseDocCanon.json similarity index 100% rename from TestVectors/PseudoHiddenPid/addBaseDocCanon.json rename to TestVectors/Pseudonym/addBaseDocCanon.json diff --git a/TestVectors/PseudoHiddenPid/addBaseDocHMACCanon.json b/TestVectors/Pseudonym/addBaseDocHMACCanon.json similarity index 100% rename from TestVectors/PseudoHiddenPid/addBaseDocHMACCanon.json rename to TestVectors/Pseudonym/addBaseDocHMACCanon.json diff --git a/TestVectors/PseudoHiddenPid/addBaseTransform.json b/TestVectors/Pseudonym/addBaseTransform.json similarity index 100% rename from TestVectors/PseudoHiddenPid/addBaseTransform.json rename to TestVectors/Pseudonym/addBaseTransform.json diff --git a/TestVectors/PseudoHiddenPid/addHashData.json b/TestVectors/Pseudonym/addHashData.json similarity index 100% rename from TestVectors/PseudoHiddenPid/addHashData.json rename to TestVectors/Pseudonym/addHashData.json diff --git a/TestVectors/PseudoHiddenPid/addProofConfig.json b/TestVectors/Pseudonym/addProofConfig.json similarity index 100% rename from TestVectors/PseudoHiddenPid/addProofConfig.json rename to TestVectors/Pseudonym/addProofConfig.json diff --git a/TestVectors/PseudoHiddenPid/addProofConfigCanon.txt b/TestVectors/Pseudonym/addProofConfigCanon.txt similarity index 100% rename from TestVectors/PseudoHiddenPid/addProofConfigCanon.txt rename to TestVectors/Pseudonym/addProofConfigCanon.txt diff --git a/TestVectors/PseudoIssuerPid/addRawBaseSignatureInfo.json b/TestVectors/Pseudonym/addRawBaseSignatureInfo.json similarity index 62% rename from TestVectors/PseudoIssuerPid/addRawBaseSignatureInfo.json rename to TestVectors/Pseudonym/addRawBaseSignatureInfo.json index 3a56c3c..24c3006 100644 --- a/TestVectors/PseudoIssuerPid/addRawBaseSignatureInfo.json +++ b/TestVectors/Pseudonym/addRawBaseSignatureInfo.json @@ -1,5 +1,5 @@ { - "bbsSignature": "af6ee041b56f890cf0794788acfc7cbfa81674b03bc29f55b86f43e199ac36fcf5fb958c453bfdcf1babb93cc33204190eb4cf77e229dfa85b4a031065db8a51c6408898d77f427dcec67c26c2de54e3", + "bbsSignature": "b9389149bab1b5a6032c20781732105a5cbc209592e712e182eec5c055f2072877683dee2949af32290d350ed9e9ffa246f65b8c3f6f199c4d29009d2ce6dff374ed4f22f2f9a7e12dc3c342e8c18107", "bbsHeader": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf8eea112c04d89e133880f96766ebae73693f75f1bbcbbaa473dc06254bdec4fb", "publicKey": "a4ef1afa3da575496f122b9b78b8c24761531a8a093206ae7c45b80759c168ba4f7a260f9c3367b6c019b4677841104b10665edbe70ba3ebe7d9cfbffbf71eb016f70abfbb163317f372697dc63efd21fc55764f63926a8f02eaea325a2a888f", "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", @@ -7,6 +7,6 @@ "/issuer", "/expirationDate" ], - "pidHex": "5105adaaa2b9d6a48a9ab9e46471b40d875febc15d35663016ddb5461619d6d1", - "featureOption": "pseudonym_issuer_pid" + "signerNymEntropyHex": "25555cf635188a1c33989056f5129e6ab4be0e7c5cc588c48d308e0254eed140", + "featureOption": "pseudonym" } \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/addSignedSDBase.json b/TestVectors/Pseudonym/addSignedSDBase.json similarity index 90% rename from TestVectors/PseudoHiddenPid/addSignedSDBase.json rename to TestVectors/Pseudonym/addSignedSDBase.json index 3282c1e..49f8108 100644 --- a/TestVectors/PseudoHiddenPid/addSignedSDBase.json +++ b/TestVectors/Pseudonym/addSignedSDBase.json @@ -68,6 +68,6 @@ "created": "2023-08-15T23:36:38Z", "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", "proofPurpose": "assertionMethod", - "proofValue": "u2V0IhlhQmKMuC6c2TzkaduRAsxSVDKDDf_snqohFfLolj_Vz3vKYmd_yccbnnRcyw4lvod4TUaD7g2FDUZQQGSbG0LVr6CivAZ0ugxfByGa537ZHiGJYQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjuoRLATYnhM4gPlnZuuuc2k_dfG7y7qkc9wGJUvexPtYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-CZy9pc3N1ZXJvL2V4cGlyYXRpb25EYXRlwlggFgYYECDYAlltrMK3XIHpBCTzDn53cj3Hh3sCPLhh2S0" + "proofValue": "u2V0IhlhQuTiRSbqxtaYDLCB4FzIQWly8IJWS5xLhgu7FwFXyByh3aD3uKUmvMikNNQ7Z6f-iRvZbjD9vGZxNKQCdLObf83TtTyLy-afhLcPDQujBgQdYQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjuoRLATYnhM4gPlnZuuuc2k_dfG7y7qkc9wGJUvexPtYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-CZy9pc3N1ZXJvL2V4cGlyYXRpb25EYXRlwlggJVVc9jUYihwzmJBW9RKearS-DnxcxYjEjTCOAlTu0UA" } } \ No newline at end of file diff --git a/TestVectors/Pseudonym/commitmentInfo.json b/TestVectors/Pseudonym/commitmentInfo.json new file mode 100644 index 0000000..6b0d6d8 --- /dev/null +++ b/TestVectors/Pseudonym/commitmentInfo.json @@ -0,0 +1,4 @@ +{ + "secretProverBlind": "2df3cd3d451b21069b72269f9984df449219c41273b19b1a8487d836fbb8baa1", + "commitmentWithProof": "a80f61f9470cb8ab88644fbef3616eaf5d3b147c4dc1dcad810148a5f2e73186cb3ffa27ea55728a6df470d0c3928be1408b95f5d261cee4d66992ecacf5ca2d6348c33bb7f90c2cef513cdc88be536550e9701d9a466320f49ce097551f8097317c530e2b80710748362b03f5a74280669c00eb29145eb3ec51975d8189fdf2c810d7fadefe36f93b0d2068a494175c" +} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/derivedAdjIndexes.json b/TestVectors/Pseudonym/derivedAdjIndexes.json similarity index 100% rename from TestVectors/PseudoHiddenPid/derivedAdjIndexes.json rename to TestVectors/Pseudonym/derivedAdjIndexes.json diff --git a/TestVectors/PseudoHiddenPid/derivedAllGroupData.json b/TestVectors/Pseudonym/derivedAllGroupData.json similarity index 88% rename from TestVectors/PseudoHiddenPid/derivedAllGroupData.json rename to TestVectors/Pseudonym/derivedAllGroupData.json index b631803..0e0a931 100644 --- a/TestVectors/PseudoHiddenPid/derivedAllGroupData.json +++ b/TestVectors/Pseudonym/derivedAllGroupData.json @@ -135,10 +135,10 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n" + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n" ] }, "selective": { @@ -273,14 +273,14 @@ ] }, "deskolemizedNQuads": [ - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"UA\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 _:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 _:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 .\n" + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"UA\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 _:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 _:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 .\n" ] }, "combined": { @@ -418,16 +418,16 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"UA\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 _:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 _:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n" + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"UA\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 _:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 _:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n" ] } }, @@ -542,13 +542,13 @@ "@value": "UTA" } ], - "@id": "urn:bnid:_1547cd58-cfa4-40b0-887b-ca74422a091b_0" + "@id": "urn:bnid:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0" } ], "@type": [ "https://w3id.org/vdl#LicensedDriver" ], - "@id": "urn:bnid:_1547cd58-cfa4-40b0-887b-ca74422a091b_1" + "@id": "urn:bnid:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1" } ], "https://schema.org/description": [ @@ -602,7 +602,7 @@ "https://www.w3.org/2018/credentials#VerifiableCredential", "https://w3id.org/vdl#Iso18013DriversLicenseCredential" ], - "@id": "urn:bnid:_1547cd58-cfa4-40b0-887b-ca74422a091b_2" + "@id": "urn:bnid:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2" } ], "compact": { @@ -612,7 +612,7 @@ "https://w3id.org/vdl/v1", "https://w3id.org/vdl/aamva/v1" ], - "id": "urn:bnid:_1547cd58-cfa4-40b0-887b-ca74422a091b_2", + "id": "urn:bnid:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2", "type": [ "VerifiableCredential", "Iso18013DriversLicenseCredential" @@ -621,10 +621,10 @@ "image": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUg...kSuQmCC", "name": "Utopia Driver's License", "credentialSubject": { - "id": "urn:bnid:_1547cd58-cfa4-40b0-887b-ca74422a091b_1", + "id": "urn:bnid:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1", "type": "LicensedDriver", "driversLicense": { - "id": "urn:bnid:_1547cd58-cfa4-40b0-887b-ca74422a091b_0", + "id": "urn:bnid:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0", "type": "Iso18013DriversLicense", "birth_date": "1998-08-28", "document_number": "542426814", @@ -678,47 +678,47 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"1998-08-28\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"542426814\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"2028-08-27T12:00:00-06:00\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"TURNER\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"SUSAN\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"2023-01-15T10:00:00-07:00\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"UADMV\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"UA\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"2\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"UTA\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"1ST\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"N\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 \"N\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 _:_1547cd58-cfa4-40b0-887b-ca74422a091b_0 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 \"A license granting driving privileges in Utopia.\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 \"Utopia Driver's License\" .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 _:_1547cd58-cfa4-40b0-887b-ca74422a091b_1 .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 \"2023-11-15T10:00:00-07:00\"^^ .\n", - "_:_1547cd58-cfa4-40b0-887b-ca74422a091b_2 .\n" + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"1998-08-28\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"542426814\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"2028-08-27T12:00:00-06:00\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"TURNER\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"SUSAN\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"2023-01-15T10:00:00-07:00\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"UADMV\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"UA\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"2\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"UTA\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"1ST\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"N\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 \"N\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 _:_38175cb3-75e5-40c8-afe4-e66d8fc22378_0 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 \"A license granting driving privileges in Utopia.\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 \"Utopia Driver's License\" .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 _:_38175cb3-75e5-40c8-afe4-e66d8fc22378_1 .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 \"2023-11-15T10:00:00-07:00\"^^ .\n", + "_:_38175cb3-75e5-40c8-afe4-e66d8fc22378_2 .\n" ], "labelMap": { "dataType": "Map", "value": [ [ - "_1547cd58-cfa4-40b0-887b-ca74422a091b_2", + "_38175cb3-75e5-40c8-afe4-e66d8fc22378_2", "b1" ], [ - "_1547cd58-cfa4-40b0-887b-ca74422a091b_1", + "_38175cb3-75e5-40c8-afe4-e66d8fc22378_1", "b0" ], [ - "_1547cd58-cfa4-40b0-887b-ca74422a091b_0", + "_38175cb3-75e5-40c8-afe4-e66d8fc22378_0", "b2" ] ] diff --git a/TestVectors/Pseudonym/derivedDisclosureData.json b/TestVectors/Pseudonym/derivedDisclosureData.json new file mode 100644 index 0000000..cf3882f --- /dev/null +++ b/TestVectors/Pseudonym/derivedDisclosureData.json @@ -0,0 +1,10 @@ +{ + "bbsProof":"b394693d54d67937aae0e4175ecf4331200c23470171188ac5513b30d27d9bd2e06173d44e1aca7c743ba30b3f59af0595965bf8256437bce6bef824fe243183af6aa14a1e8224ed7e4eeb16445594df13a46e75d8dfbae0a3e2e1e0871260e68f71de7be4309eb53523a446b8189446b8d5c60892bdd855b5067e0433b46d5b9ffc4dc54b712ff97ec9d7c44cff648929d826bf9e3a7f873c9bcd07c6a3747fc6befceaf892c4d8d38d385c19c399ab342a76c000a3ff9050fa9223e20acfdf4404f43605a24c44622ebcaaf144b161226a6cbe7c08474f9fb80a736be3a818e4e62aa738e701007871859bea36e062324ff3afd8670a5de8b69911fae58aa40e48e29a046c37b9f9cc3868c30482d2339746955c3deaf6f1d4c8cf8be8e503f3ea4715d11e385eb7ed9de6379b7de8436a4e89cf4427d53358b1882e27c6e1e3ba2e81cf10fbc792cf3461a0fdd63f35a151b8c8350505a9b6d612e9adc1dca11b2698a3d0a9f0df6e9bc0ece7aa462afab02d93a87fd5bebb0eee058770c81c5f2fe6eeefcb0a657d9f116b96e2b04b4cc7f4baad4fe784bd9563aea20272138f2dbe94a5e25d30633b5f83eac4b42af25f144bddb631738bf3d54206e8d8b5172c8d52d3c272f799b782c73d480e1289e262ddbb70ab29491cf85a8428c4672437677407524a6dacb53332565dab5d056dbc5451becb123f91d173f6a7c785b7d9f19c43864a785bd941db248322539a097e9ac06244308a3b8df88b5213724cf09715b09e06425448c400680b943ba4711f14a719920b06ec2c6aff908ecf4f5793afd233d270a5ef92131606035517a89e4118dc65dbeb9051f92797036f54f8400910fa56cdd7b87b122e39e41233ea493239fab55c4c836a0a38732a68e6a9f9e11d32b991599e19edbb386f0d364b91e10dd9bf82898f79e90045a0c4987a0cf365d37d8380539a794284841c50c83f2bc3ee9cf7432f44dbfca897ff99feabf224e51137313630c5000d39429d9ea69a2a8237fe3a1857121c14ebb00d57b90db39e2e11bfa37858187d183027c45e317a72e5334681de26788e3176bd48d5761d54c1f2af0a6c3549a0de05b21d0a066c732a540072ae7676b867027b18323e08fcbfaf38ec22aeccd3375bb7b6965d9f6ab3ac4adc2a0700a4bc82fe58afbdd035af48fb85fcd8bf14f81d5ca3f2626be8962cbea13da31ff3cc6c6ebfeeef42f25708af872a14019f83", + "labelMap":{"dataType":"Map","value":[["c14n0","b1"],["c14n1","b2"],["c14n2","b0"]]}, + "mandatoryIndexes":[0,1,2,5,6,8,9], + "adjSelectiveIndexes":[0,1,5,7,10,16], + "presentationHeader":{"0":17,"1":51,"2":119,"3":170}, + "pseudonym":"838607ff2c8dcb2a0740ef13c2c87418efb57559243232a69daf1e294dd092af833ad4df1e99e0034c737b932916f378", + "featureOption":"pseudonym", + "lengthBBSMessages":23 +} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/derivedGroupIndexes.json b/TestVectors/Pseudonym/derivedGroupIndexes.json similarity index 100% rename from TestVectors/PseudoHiddenPid/derivedGroupIndexes.json rename to TestVectors/Pseudonym/derivedGroupIndexes.json diff --git a/TestVectors/PseudoIssuerPid/derivedRecoveredBaseData.json b/TestVectors/Pseudonym/derivedRecoveredBaseData.json similarity index 62% rename from TestVectors/PseudoIssuerPid/derivedRecoveredBaseData.json rename to TestVectors/Pseudonym/derivedRecoveredBaseData.json index 3a56c3c..7820b81 100644 --- a/TestVectors/PseudoIssuerPid/derivedRecoveredBaseData.json +++ b/TestVectors/Pseudonym/derivedRecoveredBaseData.json @@ -1,5 +1,5 @@ { - "bbsSignature": "af6ee041b56f890cf0794788acfc7cbfa81674b03bc29f55b86f43e199ac36fcf5fb958c453bfdcf1babb93cc33204190eb4cf77e229dfa85b4a031065db8a51c6408898d77f427dcec67c26c2de54e3", + "bbsSignature": "b9389149bab1b5a6032c20781732105a5cbc209592e712e182eec5c055f2072877683dee2949af32290d350ed9e9ffa246f65b8c3f6f199c4d29009d2ce6dff374ed4f22f2f9a7e12dc3c342e8c18107", "bbsHeader": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf8eea112c04d89e133880f96766ebae73693f75f1bbcbbaa473dc06254bdec4fb", "publicKey": "a4ef1afa3da575496f122b9b78b8c24761531a8a093206ae7c45b80759c168ba4f7a260f9c3367b6c019b4677841104b10665edbe70ba3ebe7d9cfbffbf71eb016f70abfbb163317f372697dc63efd21fc55764f63926a8f02eaea325a2a888f", "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", @@ -7,6 +7,6 @@ "/issuer", "/expirationDate" ], - "pidHex": "5105adaaa2b9d6a48a9ab9e46471b40d875febc15d35663016ddb5461619d6d1", - "featureOption": "pseudonym_issuer_pid" + "signerNymEntropy": "25555cf635188a1c33989056f5129e6ab4be0e7c5cc588c48d308e0254eed140", + "featureOption": "pseudonym" } \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/derivedRevealDocument.json b/TestVectors/Pseudonym/derivedRevealDocument.json similarity index 56% rename from TestVectors/PseudoHiddenPid/derivedRevealDocument.json rename to TestVectors/Pseudonym/derivedRevealDocument.json index 1a4a85b..99a1ab0 100644 --- a/TestVectors/PseudoHiddenPid/derivedRevealDocument.json +++ b/TestVectors/Pseudonym/derivedRevealDocument.json @@ -51,6 +51,6 @@ "created": "2023-08-15T23:36:38Z", "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", "proofPurpose": "assertionMethod", - "proofValue": "u2V0Jh1kDcIa9D4reCRpijFesYGE8kAHB1anQDNy2Uiy54K3IsFO2u1Xf5SU2QZQQ5OQTA0MJEYqagmL9WG4L7moep1r6omL4egcDgJnPuhOWHkzdYw7OSXHQ5g-prUK2U8DlLDk0Fo_psRKIXZkFaLJLIYH68ZprMKi7T66UJNwpD6meXcxpkjG4mBqVd2n7e6y5EKeg2gX33GUsyl6amdbepMmn1L6KEZT8JkAIr5q23G4BGeCHUvZEALLVS_ny3fVdIzLqNd9sxRfd5N9MW2StiRbC40tPbr5axensQBIMQRo38zzKsibd_ISNQlRYrNb7DaafC2q-xEUJRfsUQiYYkK_O2pkcwYy9_XzvK1bm80pcj280HA7U6m7sNxuszHpMSFj1okLrgA6fGFP5tYCrQLPmxXNSCQJ7ITQFOqmxqXqJD27hd-O1HFHRigNVADGGXTY_FCFsADYSKgsZsED1VEdH0wEi1Xdjvn99WHgXeyma6KGFJX6PO08D43-n20kiBJUqJsBoUey77Gm-NxCFJOQnDedYr0w1xnnK6aHnKrr8dU2zvA-n5geJsWG75rFQUfbUahhCN2KR2cAk_FrSMIaIAletlhJlDpaI75YIWPKW1C7aQdJpzzRS_ko01-U-NbSQBLc5-xMSvAYBnOm_tcXT1lJDgCXUuWF3S8nGIYoF1I1UFutCbo2Xj8E7B1mM7aFGFTSwDoU46hzxlJIqa8Ch1akKnvN4V5o9EEaKvlFsI8JhIvLaHiy3Chbc1CDcJUxV_8AWBVWt0T8CtMru9oGK3JUuXduxFkaBXZXjy0Yr_yzQJMwL0Jj9VYS7zOQrLjgVQmUaBZ3P3RED49ffSCVKtvneYF2_Pl0YDVWZ7gztKVDIcuAMrixr4Q0hs0PivwI9kQGhSZjYwk1hL7weURhRCKESbt7GNM1sGggp7YpZYDDFD7rIxDNodaza94aH1vJ3L2L-bfTQWoyNUdsdeaCW3wxNf4TysJfSqWzBFdHKVEw0FxQxmY2RBY45FWGahaz1-UCR-Zdob3uWGi5jNe24cH1YE6bQf-TNufkjK0z_ZKRYvKjrROTlyxiQbfG-uTz_jBp9hbjIFuQMNu3KxyJ7wY1TIy0DkHdubGjwKPtochBYIFFC5NR_TNNr5V_nEIAHlIwVc7zUWNVkil2tccoAMrOjAAEBAgIAhwABAgUGCAmGAAEFBwoQRBEzd6pYMK0TBrQU7OSBE7wAwXwYc7REl9O4-xwWRVPd9c3QV16JWF5x2xOUGuzTT2a8RZoOlxc" + "proofValue": "u2V0Jh1kDcLOUaT1U1nk3quDkF17PQzEgDCNHAXEYisVROzDSfZvS4GFz1E4aynx0O6MLP1mvBZWWW_glZDe85r74JP4kMYOvaqFKHoIk7X5O6xZEVZTfE6RuddjfuuCj4uHghxJg5o9x3nvkMJ61NSOkRrgYlEa41cYIkr3YVbUGfgQztG1bn_xNxUtxL_l-ydfETP9kiSnYJr-eOn-HPJvNB8ajdH_Gvvzq-JLE2NONOFwZw5mrNCp2wACj_5BQ-pIj4grP30QE9DYFokxEYi68qvFEsWEiamy-fAhHT5-4CnNr46gY5OYqpzjnAQB4cYWb6jbgYjJP86_YZwpd6LaZEfrliqQOSOKaBGw3ufnMOGjDBILSM5dGlVw96vbx1MjPi-jlA_PqRxXRHjhet-2d5jebfehDak6Jz0Qn1TNYsYguJ8bh47ougc8Q-8eSzzRhoP3WPzWhUbjINQUFqbbWEumtwdyhGyaYo9Cp8N9um8Ds56pGKvqwLZOof9W-uw7uBYdwyBxfL-bu78sKZX2fEWuW4rBLTMf0uq1P54S9lWOuogJyE48tvpSl4l0wYztfg-rEtCryXxRL3bYxc4vz1UIG6Ni1FyyNUtPCcveZt4LHPUgOEoniYt27cKspSRz4WoQoxGckN2d0B1JKbay1MzJWXatdBW28VFG-yxI_kdFz9qfHhbfZ8ZxDhkp4W9lB2ySDIlOaCX6awGJEMIo7jfiLUhNyTPCXFbCeBkJUSMQAaAuUO6RxHxSnGZILBuwsav-Qjs9PV5Ov0jPScKXvkhMWBgNVF6ieQRjcZdvrkFH5J5cDb1T4QAkQ-lbN17h7Ei455BIz6kkyOfq1XEyDago4cypo5qn54R0yuZFZnhntuzhvDTZLkeEN2b-CiY956QBFoMSYegzzZdN9g4BTmnlChIQcUMg_K8PunPdDL0Tb_KiX_5n-q_Ik5RE3MTYwxQANOUKdnqaaKoI3_joYVxIcFOuwDVe5DbOeLhG_o3hYGH0YMCfEXjF6cuUzRoHeJniOMXa9SNV2HVTB8q8KbDVJoN4Fsh0KBmxzKlQAcq52drhnAnsYMj4I_L-vOOwirszTN1u3tpZdn2qzrErcKgcApLyC_livvdA1r0j7hfzYvxT4HVyj8mJr6JYsvqE9ox_zzGxuv-7vQvJXCK-HKhQBn4OjAAEBAgIAhwABAgUGCAmGAAEFBwoQRBEzd6pYMIOGB_8sjcsqB0DvE8LIdBjvtXVZJDIypp2vHilN0JKvgzrU3x6Z4ANMc3uTKRbzeBc" } } \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/derivedUnsignedReveal.json b/TestVectors/Pseudonym/derivedUnsignedReveal.json similarity index 100% rename from TestVectors/PseudoHiddenPid/derivedUnsignedReveal.json rename to TestVectors/Pseudonym/derivedUnsignedReveal.json diff --git a/TestVectors/Pseudonym/nymSecret.json b/TestVectors/Pseudonym/nymSecret.json new file mode 100644 index 0000000..72396b3 --- /dev/null +++ b/TestVectors/Pseudonym/nymSecret.json @@ -0,0 +1,3 @@ +{ + "nymSecretHex": "f883d069aec1252f167b0880e8960d72fa2623e11b6967541a457aa5c3cb088" +} \ No newline at end of file diff --git a/TestVectors/Pseudonym/verifyDerivedProofValue.json b/TestVectors/Pseudonym/verifyDerivedProofValue.json new file mode 100644 index 0000000..703c6ba --- /dev/null +++ b/TestVectors/Pseudonym/verifyDerivedProofValue.json @@ -0,0 +1,34 @@ +{ + "bbsProof": "b394693d54d67937aae0e4175ecf4331200c23470171188ac5513b30d27d9bd2e06173d44e1aca7c743ba30b3f59af0595965bf8256437bce6bef824fe243183af6aa14a1e8224ed7e4eeb16445594df13a46e75d8dfbae0a3e2e1e0871260e68f71de7be4309eb53523a446b8189446b8d5c60892bdd855b5067e0433b46d5b9ffc4dc54b712ff97ec9d7c44cff648929d826bf9e3a7f873c9bcd07c6a3747fc6befceaf892c4d8d38d385c19c399ab342a76c000a3ff9050fa9223e20acfdf4404f43605a24c44622ebcaaf144b161226a6cbe7c08474f9fb80a736be3a818e4e62aa738e701007871859bea36e062324ff3afd8670a5de8b69911fae58aa40e48e29a046c37b9f9cc3868c30482d2339746955c3deaf6f1d4c8cf8be8e503f3ea4715d11e385eb7ed9de6379b7de8436a4e89cf4427d53358b1882e27c6e1e3ba2e81cf10fbc792cf3461a0fdd63f35a151b8c8350505a9b6d612e9adc1dca11b2698a3d0a9f0df6e9bc0ece7aa462afab02d93a87fd5bebb0eee058770c81c5f2fe6eeefcb0a657d9f116b96e2b04b4cc7f4baad4fe784bd9563aea20272138f2dbe94a5e25d30633b5f83eac4b42af25f144bddb631738bf3d54206e8d8b5172c8d52d3c272f799b782c73d480e1289e262ddbb70ab29491cf85a8428c4672437677407524a6dacb53332565dab5d056dbc5451becb123f91d173f6a7c785b7d9f19c43864a785bd941db248322539a097e9ac06244308a3b8df88b5213724cf09715b09e06425448c400680b943ba4711f14a719920b06ec2c6aff908ecf4f5793afd233d270a5ef92131606035517a89e4118dc65dbeb9051f92797036f54f8400910fa56cdd7b87b122e39e41233ea493239fab55c4c836a0a38732a68e6a9f9e11d32b991599e19edbb386f0d364b91e10dd9bf82898f79e90045a0c4987a0cf365d37d8380539a794284841c50c83f2bc3ee9cf7432f44dbfca897ff99feabf224e51137313630c5000d39429d9ea69a2a8237fe3a1857121c14ebb00d57b90db39e2e11bfa37858187d183027c45e317a72e5334681de26788e3176bd48d5761d54c1f2af0a6c3549a0de05b21d0a066c732a540072ae7676b867027b18323e08fcbfaf38ec22aeccd3375bb7b6965d9f6ab3ac4adc2a0700a4bc82fe58afbdd035af48fb85fcd8bf14f81d5ca3f2626be8962cbea13da31ff3cc6c6ebfeeef42f25708af872a14019f83", + "labelMap": [ + [ + "c14n0", + "b1" + ], + [ + "c14n1", + "b2" + ], + [ + "c14n2", + "b0" + ] + ], + "mandatoryIndexes": [ + 0, + 1, + 2, + 5, + 6, + 8, + 9 + ], + "adjSelectedIndexes": [ + 0, + 1, + 5, + 7, + 10, + 16 + ] +} \ No newline at end of file diff --git a/TestVectors/PseudoHiddenPid/verifyNQuads.json b/TestVectors/Pseudonym/verifyNQuads.json similarity index 100% rename from TestVectors/PseudoHiddenPid/verifyNQuads.json rename to TestVectors/Pseudonym/verifyNQuads.json diff --git a/TestVectors/PseudoIssuerPid/addBaseDocCanon.json b/TestVectors/PseudonymHB/addBaseDocCanon.json similarity index 100% rename from TestVectors/PseudoIssuerPid/addBaseDocCanon.json rename to TestVectors/PseudonymHB/addBaseDocCanon.json diff --git a/TestVectors/PseudoIssuerPid/addBaseDocHMACCanon.json b/TestVectors/PseudonymHB/addBaseDocHMACCanon.json similarity index 100% rename from TestVectors/PseudoIssuerPid/addBaseDocHMACCanon.json rename to TestVectors/PseudonymHB/addBaseDocHMACCanon.json diff --git a/TestVectors/PseudoIssuerPid/addBaseTransform.json b/TestVectors/PseudonymHB/addBaseTransform.json similarity index 100% rename from TestVectors/PseudoIssuerPid/addBaseTransform.json rename to TestVectors/PseudonymHB/addBaseTransform.json diff --git a/TestVectors/PseudoIssuerPid/addHashData.json b/TestVectors/PseudonymHB/addHashData.json similarity index 100% rename from TestVectors/PseudoIssuerPid/addHashData.json rename to TestVectors/PseudonymHB/addHashData.json diff --git a/TestVectors/PseudoIssuerPid/addProofConfig.json b/TestVectors/PseudonymHB/addProofConfig.json similarity index 100% rename from TestVectors/PseudoIssuerPid/addProofConfig.json rename to TestVectors/PseudonymHB/addProofConfig.json diff --git a/TestVectors/PseudoIssuerPid/addProofConfigCanon.txt b/TestVectors/PseudonymHB/addProofConfigCanon.txt similarity index 100% rename from TestVectors/PseudoIssuerPid/addProofConfigCanon.txt rename to TestVectors/PseudonymHB/addProofConfigCanon.txt diff --git a/TestVectors/PseudoHiddenPid/addRawBaseSignatureInfo.json b/TestVectors/PseudonymHB/addRawBaseSignatureInfo.json similarity index 61% rename from TestVectors/PseudoHiddenPid/addRawBaseSignatureInfo.json rename to TestVectors/PseudonymHB/addRawBaseSignatureInfo.json index 11e1fde..27953ef 100644 --- a/TestVectors/PseudoHiddenPid/addRawBaseSignatureInfo.json +++ b/TestVectors/PseudonymHB/addRawBaseSignatureInfo.json @@ -1,5 +1,5 @@ { - "bbsSignature": "98a32e0ba7364f391a76e440b314950ca0c37ffb27aa88457cba258ff573def29899dff271c6e79d1732c3896fa1de1351a0fb8361435194101926c6d0b56be828af019d2e8317c1c866b9dfb6478862", + "bbsSignature": "9251f497cb002c19f959a760fa24c5e961df9cb8ff5fbaaef14f2b7f1f41649990c30bd8c1d373e878a5d120123d658a326141275eee7833352d611cc1c05175c9c0f0ddeb0fdec09ad1bfad8796e410", "bbsHeader": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf8eea112c04d89e133880f96766ebae73693f75f1bbcbbaa473dc06254bdec4fb", "publicKey": "a4ef1afa3da575496f122b9b78b8c24761531a8a093206ae7c45b80759c168ba4f7a260f9c3367b6c019b4677841104b10665edbe70ba3ebe7d9cfbffbf71eb016f70abfbb163317f372697dc63efd21fc55764f63926a8f02eaea325a2a888f", "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", @@ -7,6 +7,6 @@ "/issuer", "/expirationDate" ], - "signerBlind": "1606181020d802596dacc2b75c81e90424f30e7e77723dc7877b023cb861d92d", - "featureOption": "pseudonym_hidden_pid" + "signerNymEntropyHex": "25555cf635188a1c33989056f5129e6ab4be0e7c5cc588c48d308e0254eed140", + "featureOption": "holder_binding_pseudonym" } \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/addSignedSDBase.json b/TestVectors/PseudonymHB/addSignedSDBase.json similarity index 90% rename from TestVectors/PseudoIssuerPid/addSignedSDBase.json rename to TestVectors/PseudonymHB/addSignedSDBase.json index fb44bd7..dc5aec4 100644 --- a/TestVectors/PseudoIssuerPid/addSignedSDBase.json +++ b/TestVectors/PseudonymHB/addSignedSDBase.json @@ -68,6 +68,6 @@ "created": "2023-08-15T23:36:38Z", "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", "proofPurpose": "assertionMethod", - "proofValue": "u2V0GhlhQr27gQbVviQzweUeIrPx8v6gWdLA7wp9VuG9D4ZmsNvz1-5WMRTv9zxuruTzDMgQZDrTPd-Ip36hbSgMQZduKUcZAiJjXf0J9zsZ8JsLeVONYQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjuoRLATYnhM4gPlnZuuuc2k_dfG7y7qkc9wGJUvexPtYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-CZy9pc3N1ZXJvL2V4cGlyYXRpb25EYXRlWCBRBa2qornWpIqaueRkcbQNh1_rwV01ZjAW3bVGFhnW0Q" + "proofValue": "u2V0IhlhQklH0l8sALBn5Wadg-iTF6WHfnLj_X7qu8U8rfx9BZJmQwwvYwdNz6Hil0SASPWWKMmFBJ17ueDM1LWEcwcBRdcnA8N3rD97AmtG_rYeW5BBYQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjuoRLATYnhM4gPlnZuuuc2k_dfG7y7qkc9wGJUvexPtYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-CZy9pc3N1ZXJvL2V4cGlyYXRpb25EYXRlwlggJVVc9jUYihwzmJBW9RKearS-DnxcxYjEjTCOAlTu0UA" } } \ No newline at end of file diff --git a/TestVectors/PseudonymHB/commitmentInfo.json b/TestVectors/PseudonymHB/commitmentInfo.json new file mode 100644 index 0000000..e23e8b4 --- /dev/null +++ b/TestVectors/PseudonymHB/commitmentInfo.json @@ -0,0 +1,4 @@ +{ + "secretProverBlind": "0d215067232c77c94a7572eb80794592090da8aff35cca53d2d528d059e70fce", + "commitmentWithProof": "ab72f3e6d7a4185d100ede6ce7dde1c69db9a2128ad11d1b6991a018c340ca2672d7be636f153398be50f44ee434edf14322dd115f7527e770a0f0c41d8aeb2088d004f2703548db6ce15e2505368a1f686f20702aa9ff46bce301330ea0c4c16ef4d8bbf624064a60df3a563142d7b236cad6cf6bcf1f3694d0bf4c2b5ffce55bb26abc05e31f9aaf8b60674fefe02666f89c150c479694f4a89a9088b28a1e6e2cf0c2caaa01810d2e3a52853f3a2a" +} \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/derivedAdjIndexes.json b/TestVectors/PseudonymHB/derivedAdjIndexes.json similarity index 100% rename from TestVectors/PseudoIssuerPid/derivedAdjIndexes.json rename to TestVectors/PseudonymHB/derivedAdjIndexes.json diff --git a/TestVectors/PseudoIssuerPid/derivedAllGroupData.json b/TestVectors/PseudonymHB/derivedAllGroupData.json similarity index 88% rename from TestVectors/PseudoIssuerPid/derivedAllGroupData.json rename to TestVectors/PseudonymHB/derivedAllGroupData.json index 191e604..d0ff9d3 100644 --- a/TestVectors/PseudoIssuerPid/derivedAllGroupData.json +++ b/TestVectors/PseudonymHB/derivedAllGroupData.json @@ -135,10 +135,10 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n" + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n" ] }, "selective": { @@ -273,14 +273,14 @@ ] }, "deskolemizedNQuads": [ - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"UA\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_1 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_1 _:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 _:_e18d4304-586f-479d-9b0c-163e4f575d79_1 .\n" + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"UA\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 _:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 _:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 .\n" ] }, "combined": { @@ -418,16 +418,16 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"UA\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_1 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_1 _:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 _:_e18d4304-586f-479d-9b0c-163e4f575d79_1 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n" + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"UA\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 _:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 _:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n" ] } }, @@ -542,13 +542,13 @@ "@value": "UTA" } ], - "@id": "urn:bnid:_e18d4304-586f-479d-9b0c-163e4f575d79_0" + "@id": "urn:bnid:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0" } ], "@type": [ "https://w3id.org/vdl#LicensedDriver" ], - "@id": "urn:bnid:_e18d4304-586f-479d-9b0c-163e4f575d79_1" + "@id": "urn:bnid:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1" } ], "https://schema.org/description": [ @@ -602,7 +602,7 @@ "https://www.w3.org/2018/credentials#VerifiableCredential", "https://w3id.org/vdl#Iso18013DriversLicenseCredential" ], - "@id": "urn:bnid:_e18d4304-586f-479d-9b0c-163e4f575d79_2" + "@id": "urn:bnid:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2" } ], "compact": { @@ -612,7 +612,7 @@ "https://w3id.org/vdl/v1", "https://w3id.org/vdl/aamva/v1" ], - "id": "urn:bnid:_e18d4304-586f-479d-9b0c-163e4f575d79_2", + "id": "urn:bnid:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2", "type": [ "VerifiableCredential", "Iso18013DriversLicenseCredential" @@ -621,10 +621,10 @@ "image": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUg...kSuQmCC", "name": "Utopia Driver's License", "credentialSubject": { - "id": "urn:bnid:_e18d4304-586f-479d-9b0c-163e4f575d79_1", + "id": "urn:bnid:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1", "type": "LicensedDriver", "driversLicense": { - "id": "urn:bnid:_e18d4304-586f-479d-9b0c-163e4f575d79_0", + "id": "urn:bnid:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0", "type": "Iso18013DriversLicense", "birth_date": "1998-08-28", "document_number": "542426814", @@ -678,47 +678,47 @@ " .\n", " \"Utopia Department of Motor Vehicles\" .\n", " .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"1998-08-28\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"542426814\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"2028-08-27T12:00:00-06:00\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"TURNER\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"SUSAN\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"2023-01-15T10:00:00-07:00\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"UADMV\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"UA\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"2\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"UTA\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"1ST\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"N\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_0 \"N\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_1 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_1 _:_e18d4304-586f-479d-9b0c-163e4f575d79_0 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 \"A license granting driving privileges in Utopia.\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 \"Utopia Driver's License\" .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 _:_e18d4304-586f-479d-9b0c-163e4f575d79_1 .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 \"2023-11-15T10:00:00-07:00\"^^ .\n", - "_:_e18d4304-586f-479d-9b0c-163e4f575d79_2 .\n" + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"1998-08-28\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"542426814\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"[{\\\"codes\\\":[{\\\"code\\\":\\\"D\\\"}],\\\"expiry_date\\\":\\\"2027-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"D\\\"},{\\\"codes\\\":[{\\\"code\\\":\\\"C\\\"}],\\\"expiry_date\\\":\\\"2017-01-01\\\",\\\"issue_date\\\":\\\"2019-01-01\\\",\\\"vehicle_category_code\\\":\\\"C\\\"}]\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"2028-08-27T12:00:00-06:00\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"TURNER\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"SUSAN\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"2023-01-15T10:00:00-07:00\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"UADMV\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"UA\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"2\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"UTA\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"1ST\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"N\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 \"N\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 _:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 \"A license granting driving privileges in Utopia.\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 \"Utopia Driver's License\" .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 _:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1 .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 \"2028-11-15T12:00:00-06:00\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 \"2023-11-15T10:00:00-07:00\"^^ .\n", + "_:_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2 .\n" ], "labelMap": { "dataType": "Map", "value": [ [ - "_e18d4304-586f-479d-9b0c-163e4f575d79_2", + "_62f71133-fb12-4e90-bcdd-9629c4aee4c2_2", "b1" ], [ - "_e18d4304-586f-479d-9b0c-163e4f575d79_1", + "_62f71133-fb12-4e90-bcdd-9629c4aee4c2_1", "b0" ], [ - "_e18d4304-586f-479d-9b0c-163e4f575d79_0", + "_62f71133-fb12-4e90-bcdd-9629c4aee4c2_0", "b2" ] ] diff --git a/TestVectors/PseudonymHB/derivedDisclosureData.json b/TestVectors/PseudonymHB/derivedDisclosureData.json new file mode 100644 index 0000000..16c9d31 --- /dev/null +++ b/TestVectors/PseudonymHB/derivedDisclosureData.json @@ -0,0 +1,9 @@ +{ + "bbsProof":"94752c678297191b42617aca412377d4a5b3d7872779ffea31e0b418f50e95056d923a97e8dc156edc2a3a3a54e7b27cafa26a989fc3e8a8bc7a08b84e706a1863bd06c396b973b1af0da4f6c20ea463e124d2ad97060a25ccc3ff695c71977ba2e83a6468205d9e0bfb756089ad40dededab480eeb13cf00265f49824c5f89e23ac48d07fa3164823741df5c066bdc31a231a7d4fecb75c912adb800b1efe8da3cd26805ffa56775b1c32da34e36e9716a4da909fa6803ca0aa2df2d82f697229ccb210503274d4d61c7386a44e9fb459c020fbcd62c7f437da8ffd5ea7e56d2c4e7d9c3f593b2a964346f24f71bec30a2c3ededa0bd3707e2e06cac2dddb66762135a229dc09b67fa61d690d33be78150bc60f3655ac1063f96d6fe95a260004c7bf9e924cc7439c6426f951d0cee963985557097788d2387b72c9aeb390f9a4fa4b519bc11ca81dfca8a4fd3c77805e1a0ef5c165b16c3cdc564e7a5593f0ddd0560f3514393c1b305d3950c29fbb72cc8b58979843cec768e9a77b14f70704771f877c49fc0d0d4ffbe3f0aaf8e472a83b14e32e46207d5012e79b9bcfc6197c858eb18ad97f589dddb5dc45e9ef65f482d3c07fbcbfef92bf293643539fffc94a8bc98b3b4dd3335bb8b248aa606a751330516f148211d5f2d513e02d45ec5a51add1f878948a673a0349d7cb4417b1f9c16945e1f607bdecf6ca3b96a64fb14ee1fc5dbecf751be23041df32842367285f2b3b02c13512c28c0e7671874699b9ff169e35f91debc796fd487d3e41dcc5f12949558f2705be3e8195d4c93a6c149dcb5f63e62d3ce0bf51034021251b74ed2a1186fd77741ce3bf51f57f19a9d4a9e6315a88024062269a9fec426a73199882113168573da451ca38aeacf28f7eef3892181f0bc511562fba00d035f608c4f85579fc9614618763fa4e6c2210184e12f83e1c22078dd4ca488de41dbf2c146a2e0c47137be7f006c6810f44746a819229349b50ca59a51f7c51bb62cacc1a1cc4a6f089680514d41800da57470ef275f390eb4a08db78789e71bd32bd8929961c9f79d1ca071a2608a393f162c2f644584473f11b41cc35c838f11fbd2adf47051829d378ac9dc151e64bc70cd21b2ea6bca3f77b9c2b35abcebb0ecbf1c09365a8e372a2fce74b97088c9e9505c5c0272a4d6959bec54911a99b6c8a1654395f0cd4e7d38d695ab45875ecc535439dde3fb3d4658d9ff9427d8e36d7bd19ea53fb875c4b138f6ffc06bfd496b1a744a63283ebc0fa34ea828d98", + "labelMap":{"dataType":"Map","value":[["c14n0","b1"],["c14n1","b2"],["c14n2","b0"]]}, + "mandatoryIndexes":[0,1,2,5,6,8,9],"adjSelectiveIndexes":[0,1,5,7,10,16], + "presentationHeader":{"0":17,"1":51,"2":119,"3":170}, + "pseudonym":"838607ff2c8dcb2a0740ef13c2c87418efb57559243232a69daf1e294dd092af833ad4df1e99e0034c737b932916f378", + "featureOption":"holder_binding_pseudonym", + "lengthBBSMessages":23 +} \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/derivedGroupIndexes.json b/TestVectors/PseudonymHB/derivedGroupIndexes.json similarity index 100% rename from TestVectors/PseudoIssuerPid/derivedGroupIndexes.json rename to TestVectors/PseudonymHB/derivedGroupIndexes.json diff --git a/TestVectors/PseudoHiddenPid/derivedRecoveredBaseData.json b/TestVectors/PseudonymHB/derivedRecoveredBaseData.json similarity index 61% rename from TestVectors/PseudoHiddenPid/derivedRecoveredBaseData.json rename to TestVectors/PseudonymHB/derivedRecoveredBaseData.json index 11e1fde..2254d78 100644 --- a/TestVectors/PseudoHiddenPid/derivedRecoveredBaseData.json +++ b/TestVectors/PseudonymHB/derivedRecoveredBaseData.json @@ -1,5 +1,5 @@ { - "bbsSignature": "98a32e0ba7364f391a76e440b314950ca0c37ffb27aa88457cba258ff573def29899dff271c6e79d1732c3896fa1de1351a0fb8361435194101926c6d0b56be828af019d2e8317c1c866b9dfb6478862", + "bbsSignature": "9251f497cb002c19f959a760fa24c5e961df9cb8ff5fbaaef14f2b7f1f41649990c30bd8c1d373e878a5d120123d658a326141275eee7833352d611cc1c05175c9c0f0ddeb0fdec09ad1bfad8796e410", "bbsHeader": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf8eea112c04d89e133880f96766ebae73693f75f1bbcbbaa473dc06254bdec4fb", "publicKey": "a4ef1afa3da575496f122b9b78b8c24761531a8a093206ae7c45b80759c168ba4f7a260f9c3367b6c019b4677841104b10665edbe70ba3ebe7d9cfbffbf71eb016f70abfbb163317f372697dc63efd21fc55764f63926a8f02eaea325a2a888f", "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", @@ -7,6 +7,6 @@ "/issuer", "/expirationDate" ], - "signerBlind": "1606181020d802596dacc2b75c81e90424f30e7e77723dc7877b023cb861d92d", - "featureOption": "pseudonym_hidden_pid" + "signerNymEntropy": "25555cf635188a1c33989056f5129e6ab4be0e7c5cc588c48d308e0254eed140", + "featureOption": "holder_binding_pseudonym" } \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/derivedRevealDocument.json b/TestVectors/PseudonymHB/derivedRevealDocument.json similarity index 55% rename from TestVectors/PseudoIssuerPid/derivedRevealDocument.json rename to TestVectors/PseudonymHB/derivedRevealDocument.json index d2b3fc5..59ab59d 100644 --- a/TestVectors/PseudoIssuerPid/derivedRevealDocument.json +++ b/TestVectors/PseudonymHB/derivedRevealDocument.json @@ -51,6 +51,6 @@ "created": "2023-08-15T23:36:38Z", "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", "proofPurpose": "assertionMethod", - "proofValue": "u2V0Hh1kDULHn4QFhLkReBcNVVFoOrtpgxNX2shGL1bq0rd09WnSjxylrGUcHkDOzfl5__q1xw6Z7QlFmL9G7TNu27TtaqRb6P0Hlv9sjUsjNDHwqnBbuXXtOkZWpIkDJ08dAPa3dzK1GKOPHYf6bsJg_11Tvwo02zDeedHB0-nAp3BEYdYPth6jq0uIQXoNFOcPPXR5HQCoiigZo7yuxJNQaLX8RoCZhLaQTjvYdZ78ohnpZNhXDEpMq10BopOtU6NVnKFdHCAV8P4ijC0s4C5Dc290ft8VLbRHTSLTzPRVn_iMBX6syg_vymtJkHPBnKlOxbqnyCg-zp-B6H4lR2yOnlP3EuX8_L-GwU_aKXbIVm4A0srNUSSX45OQH7K8ajx8CXv9Q6cutERkgONC6B_tEsz_XemlfnqCJvIaFbY2T84kcXSMPDS1JMNeWccno6N46QEh9yGnVFppTl4OaSbrsj0CWWe6cRbFeObD9SCrXa-7anVvTFDvTvlMSgosI3IiZYr8epF1CyNm6NPtAp2CC43WwBJkNOAbpACT-IRxN7FsQT2ugHWmRb1ZgXjIijHpHRJ6UBypIh7lGBXPsj6XpLLarIbz0plSa9fYwST9CpYTUnNigcrU7_QMPOGP3nvZhZ_9rJw85bDRVIIcvrNFtdURPn7Mz7JMEPw5NrRLvMYL-3X1vwuQwvKZ1BlQMYampvYTVeQwXEUY-eNCF-RuBYpwLIvVfgkHsXDGC7NUc-hEr7uaQGu-L7J864n6C5QkxjZibWmpteUVieSrA0Tih91-q2o5AwhpFGbhBsxPhsPHI8-fOizJMlf4pwgKjZ48YTue3ChCZj9bYBpizIvEoBsx0-tycotTfSHl1oh45K60NrkrdYF3FyK2BbaXL97oZiT0NI4gkhQTDded4bvb__KGLBCgYTSVmL4HxHx3CdscdhlE2dXDRJjVZ5dgQSe47PC2OtFNDZ3Uuixl68dGYnh6_Vfi3GmFuSamNCaRWwCZ-WMwUWJl6jP4AtJn_qR-_DQH1EiMpybgi6YHkL6MMTmqVEcU8K8w0ypk1ATImAjApbLr3olrWeO-KQJtwfKeLUfAWtS9XFDjYMrhfPF_Ptn15VxE3kGFskQBoTxqu-yM1vtBaowABAQICAIcAAQIFBggJhgABBQcKEEQRM3eqWDCymBztSxrMfdyu8d9R3jhbNE1pdyetXIruK2DXajSRRrSZXTSGBzYwcN1HsxpVi-EYGA" + "proofValue": "u2V0Jh1kDkJR1LGeClxkbQmF6ykEjd9Sls9eHJ3n_6jHgtBj1DpUFbZI6l-jcFW7cKjo6VOeyfK-iapifw-iovHoIuE5wahhjvQbDlrlzsa8NpPbCDqRj4STSrZcGCiXMw_9pXHGXe6LoOmRoIF2eC_t1YImtQN7e2rSA7rE88AJl9JgkxfieI6xI0H-jFkgjdB31wGa9wxojGn1P7LdckSrbgAse_o2jzSaAX_pWd1scMto0426XFqTakJ-mgDygqi3y2C9pcinMshBQMnTU1hxzhqROn7RZwCD7zWLH9Dfaj_1ep-VtLE59nD9ZOyqWQ0byT3G-wwosPt7aC9Nwfi4GysLd22Z2ITWiKdwJtn-mHWkNM754FQvGDzZVrBBj-W1v6VomAATHv56STMdDnGQm-VHQzuljmFVXCXeI0jh7csmus5D5pPpLUZvBHKgd_Kik_Tx3gF4aDvXBZbFsPNxWTnpVk_Dd0FYPNRQ5PBswXTlQwp-7csyLWJeYQ87HaOmnexT3BwR3H4d8SfwNDU_74_Cq-ORyqDsU4y5GIH1QEuebm8_GGXyFjrGK2X9Ynd213EXp72X0gtPAf7y_75K_KTZDU5__yUqLyYs7TdMzW7iySKpganUTMFFvFIIR1fLVE-AtRexaUa3R-HiUimc6A0nXy0QXsfnBaUXh9ge97PbKO5amT7FO4fxdvs91G-IwQd8yhCNnKF8rOwLBNRLCjA52cYdGmbn_Fp41-R3rx5b9SH0-QdzF8SlJVY8nBb4-gZXUyTpsFJ3LX2PmLTzgv1EDQCElG3TtKhGG_Xd0HOO_UfV_GanUqeYxWogCQGImmp_sQmpzGZiCETFoVz2kUco4rqzyj37vOJIYHwvFEVYvugDQNfYIxPhVefyWFGGHY_pObCIQGE4S-D4cIgeN1MpIjeQdvywUai4MRxN75_AGxoEPRHRqgZIpNJtQylmlH3xRu2LKzBocxKbwiWgFFNQYANpXRw7ydfOQ60oI23h4nnG9Mr2JKZYcn3nRygcaJgijk_FiwvZEWERz8RtBzDXIOPEfvSrfRwUYKdN4rJ3BUeZLxwzSGy6mvKP3e5wrNavOuw7L8cCTZajjcqL850uXCIyelQXFwCcqTWlZvsVJEambbIoWVDlfDNTn041pWrRYdezFNUOd3j-z1GWNn_lCfY42170Z6lP7h1xLE49v_Aa_1Jaxp0SmMoPrwPo06oKNmKMAAQECAgCHAAECBQYICYYAAQUHChBEETN3qlgwg4YH_yyNyyoHQO8Twsh0GO-1dVkkMjKmna8eKU3Qkq-DOtTfHpngA0xze5MpFvN4Fw" } } \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/derivedUnsignedReveal.json b/TestVectors/PseudonymHB/derivedUnsignedReveal.json similarity index 100% rename from TestVectors/PseudoIssuerPid/derivedUnsignedReveal.json rename to TestVectors/PseudonymHB/derivedUnsignedReveal.json diff --git a/TestVectors/PseudonymHB/nymSecret.json b/TestVectors/PseudonymHB/nymSecret.json new file mode 100644 index 0000000..36ff75b --- /dev/null +++ b/TestVectors/PseudonymHB/nymSecret.json @@ -0,0 +1 @@ +{"nymSecretHex":"f883d069aec1252f167b0880e8960d72fa2623e11b6967541a457aa5c3cb088"} \ No newline at end of file diff --git a/TestVectors/PseudonymHB/verifyDerivedProofValue.json b/TestVectors/PseudonymHB/verifyDerivedProofValue.json new file mode 100644 index 0000000..7c2b0d1 --- /dev/null +++ b/TestVectors/PseudonymHB/verifyDerivedProofValue.json @@ -0,0 +1,34 @@ +{ + "bbsProof": "94752c678297191b42617aca412377d4a5b3d7872779ffea31e0b418f50e95056d923a97e8dc156edc2a3a3a54e7b27cafa26a989fc3e8a8bc7a08b84e706a1863bd06c396b973b1af0da4f6c20ea463e124d2ad97060a25ccc3ff695c71977ba2e83a6468205d9e0bfb756089ad40dededab480eeb13cf00265f49824c5f89e23ac48d07fa3164823741df5c066bdc31a231a7d4fecb75c912adb800b1efe8da3cd26805ffa56775b1c32da34e36e9716a4da909fa6803ca0aa2df2d82f697229ccb210503274d4d61c7386a44e9fb459c020fbcd62c7f437da8ffd5ea7e56d2c4e7d9c3f593b2a964346f24f71bec30a2c3ededa0bd3707e2e06cac2dddb66762135a229dc09b67fa61d690d33be78150bc60f3655ac1063f96d6fe95a260004c7bf9e924cc7439c6426f951d0cee963985557097788d2387b72c9aeb390f9a4fa4b519bc11ca81dfca8a4fd3c77805e1a0ef5c165b16c3cdc564e7a5593f0ddd0560f3514393c1b305d3950c29fbb72cc8b58979843cec768e9a77b14f70704771f877c49fc0d0d4ffbe3f0aaf8e472a83b14e32e46207d5012e79b9bcfc6197c858eb18ad97f589dddb5dc45e9ef65f482d3c07fbcbfef92bf293643539fffc94a8bc98b3b4dd3335bb8b248aa606a751330516f148211d5f2d513e02d45ec5a51add1f878948a673a0349d7cb4417b1f9c16945e1f607bdecf6ca3b96a64fb14ee1fc5dbecf751be23041df32842367285f2b3b02c13512c28c0e7671874699b9ff169e35f91debc796fd487d3e41dcc5f12949558f2705be3e8195d4c93a6c149dcb5f63e62d3ce0bf51034021251b74ed2a1186fd77741ce3bf51f57f19a9d4a9e6315a88024062269a9fec426a73199882113168573da451ca38aeacf28f7eef3892181f0bc511562fba00d035f608c4f85579fc9614618763fa4e6c2210184e12f83e1c22078dd4ca488de41dbf2c146a2e0c47137be7f006c6810f44746a819229349b50ca59a51f7c51bb62cacc1a1cc4a6f089680514d41800da57470ef275f390eb4a08db78789e71bd32bd8929961c9f79d1ca071a2608a393f162c2f644584473f11b41cc35c838f11fbd2adf47051829d378ac9dc151e64bc70cd21b2ea6bca3f77b9c2b35abcebb0ecbf1c09365a8e372a2fce74b97088c9e9505c5c0272a4d6959bec54911a99b6c8a1654395f0cd4e7d38d695ab45875ecc535439dde3fb3d4658d9ff9427d8e36d7bd19ea53fb875c4b138f6ffc06bfd496b1a744a63283ebc0fa34ea828d98", + "labelMap": [ + [ + "c14n0", + "b1" + ], + [ + "c14n1", + "b2" + ], + [ + "c14n2", + "b0" + ] + ], + "mandatoryIndexes": [ + 0, + 1, + 2, + 5, + 6, + 8, + 9 + ], + "adjSelectedIndexes": [ + 0, + 1, + 5, + 7, + 10, + 16 + ] +} \ No newline at end of file diff --git a/TestVectors/PseudoIssuerPid/verifyNQuads.json b/TestVectors/PseudonymHB/verifyNQuads.json similarity index 100% rename from TestVectors/PseudoIssuerPid/verifyNQuads.json rename to TestVectors/PseudonymHB/verifyNQuads.json diff --git a/TestVectors/prCredMandatory.json b/TestVectors/prCredMandatory.json new file mode 100644 index 0000000..841bfec --- /dev/null +++ b/TestVectors/prCredMandatory.json @@ -0,0 +1 @@ +["/issuer"] \ No newline at end of file diff --git a/TestVectors/prCredSelective.json b/TestVectors/prCredSelective.json new file mode 100644 index 0000000..54a805a --- /dev/null +++ b/TestVectors/prCredSelective.json @@ -0,0 +1 @@ +["/validFrom", "/validUntil", "/credentialSubject/birthCountry"] \ No newline at end of file diff --git a/TestVectors/prCredUnsigned.json b/TestVectors/prCredUnsigned.json new file mode 100644 index 0000000..b2431b4 --- /dev/null +++ b/TestVectors/prCredUnsigned.json @@ -0,0 +1,40 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/citizenship/v4rc1" + ], + "type": [ + "VerifiableCredential", + "PermanentResidentCardCredential" + ], + "issuer": { + "id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + }, + "name": "Permanent Resident Card", + "description": "Government of Utopia Permanent Resident Card.", + "credentialSubject": { + "type": [ + "PermanentResident", + "Person" + ], + "givenName": "JANE", + "familyName": "SMITH", + "gender": "Female", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4v43hPwAHIgK1v4tX6wAAAABJRU5ErkJggg==", + "residentSince": "2015-01-01", + "commuterClassification": "C1", + "birthCountry": "Arcadia", + "birthDate": "1978-07-17", + "permanentResidentCard": { + "type": [ + "PermanentResidentCard" + ], + "identifier": "83627465", + "lprCategory": "C09", + "lprNumber": "999-999-999" + } + }, + "validFrom": "2024-12-16T00:00:00Z", + "validUntil": "2025-12-16T23:59:59Z" +} \ No newline at end of file diff --git a/TestVectors/prc/addBaseDocCanon.json b/TestVectors/prc/addBaseDocCanon.json new file mode 100644 index 0000000..413f066 --- /dev/null +++ b/TestVectors/prc/addBaseDocCanon.json @@ -0,0 +1,26 @@ +[ + " .\n", + "_:c14n0 .\n", + "_:c14n0 \"83627465\" .\n", + "_:c14n0 \"C09\" .\n", + "_:c14n0 \"999-999-999\" .\n", + "_:c14n1 .\n", + "_:c14n1 .\n", + "_:c14n1 \"1978-07-17\"^^ .\n", + "_:c14n1 \"SMITH\" .\n", + "_:c14n1 \"Female\" .\n", + "_:c14n1 \"JANE\" .\n", + "_:c14n1 .\n", + "_:c14n1 \"Arcadia\" .\n", + "_:c14n1 \"C1\" .\n", + "_:c14n1 _:c14n0 .\n", + "_:c14n1 \"2015-01-01\"^^ .\n", + "_:c14n2 .\n", + "_:c14n2 .\n", + "_:c14n2 \"Permanent Resident Card from Government of Utopia.\" .\n", + "_:c14n2 \"Permanent Resident Card\" .\n", + "_:c14n2 _:c14n1 .\n", + "_:c14n2 .\n", + "_:c14n2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:c14n2 \"2025-12-16T23:59:59Z\"^^ .\n" +] \ No newline at end of file diff --git a/TestVectors/prc/addBaseDocHMACCanon.json b/TestVectors/prc/addBaseDocHMACCanon.json new file mode 100644 index 0000000..8aedc17 --- /dev/null +++ b/TestVectors/prc/addBaseDocHMACCanon.json @@ -0,0 +1,26 @@ +[ + " .\n", + "_:b0 .\n", + "_:b0 .\n", + "_:b0 \"1978-07-17\"^^ .\n", + "_:b0 \"SMITH\" .\n", + "_:b0 \"Female\" .\n", + "_:b0 \"JANE\" .\n", + "_:b0 .\n", + "_:b0 \"Arcadia\" .\n", + "_:b0 \"C1\" .\n", + "_:b0 _:b1 .\n", + "_:b0 \"2015-01-01\"^^ .\n", + "_:b1 .\n", + "_:b1 \"83627465\" .\n", + "_:b1 \"C09\" .\n", + "_:b1 \"999-999-999\" .\n", + "_:b2 .\n", + "_:b2 .\n", + "_:b2 \"Permanent Resident Card from Government of Utopia.\" .\n", + "_:b2 \"Permanent Resident Card\" .\n", + "_:b2 _:b0 .\n", + "_:b2 .\n", + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" +] \ No newline at end of file diff --git a/TestVectors/prc/addBaseTransform.json b/TestVectors/prc/addBaseTransform.json new file mode 100644 index 0000000..0420eee --- /dev/null +++ b/TestVectors/prc/addBaseTransform.json @@ -0,0 +1,112 @@ +{ + "mandatoryPointers": [ + "/issuer" + ], + "mandatory": { + "dataType": "Map", + "value": [ + [ + 0, + " .\n" + ], + [ + 16, + "_:b2 .\n" + ], + [ + 17, + "_:b2 .\n" + ], + [ + 21, + "_:b2 .\n" + ] + ] + }, + "nonMandatory": { + "dataType": "Map", + "value": [ + [ + 1, + "_:b0 .\n" + ], + [ + 2, + "_:b0 .\n" + ], + [ + 3, + "_:b0 \"1978-07-17\"^^ .\n" + ], + [ + 4, + "_:b0 \"SMITH\" .\n" + ], + [ + 5, + "_:b0 \"Female\" .\n" + ], + [ + 6, + "_:b0 \"JANE\" .\n" + ], + [ + 7, + "_:b0 .\n" + ], + [ + 8, + "_:b0 \"Arcadia\" .\n" + ], + [ + 9, + "_:b0 \"C1\" .\n" + ], + [ + 10, + "_:b0 _:b1 .\n" + ], + [ + 11, + "_:b0 \"2015-01-01\"^^ .\n" + ], + [ + 12, + "_:b1 .\n" + ], + [ + 13, + "_:b1 \"83627465\" .\n" + ], + [ + 14, + "_:b1 \"C09\" .\n" + ], + [ + 15, + "_:b1 \"999-999-999\" .\n" + ], + [ + 18, + "_:b2 \"Permanent Resident Card from Government of Utopia.\" .\n" + ], + [ + 19, + "_:b2 \"Permanent Resident Card\" .\n" + ], + [ + 20, + "_:b2 _:b0 .\n" + ], + [ + 22, + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n" + ], + [ + 23, + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] + ] + }, + "hmacKeyString": "00112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF" +} \ No newline at end of file diff --git a/TestVectors/prc/addHashData.json b/TestVectors/prc/addHashData.json new file mode 100644 index 0000000..f418485 --- /dev/null +++ b/TestVectors/prc/addHashData.json @@ -0,0 +1,4 @@ +{ + "proofHash": "3a5bbf25d34d90b18c35cd2357be6a6f42301e94fc9e52f77e93b773c5614bdf", + "mandatoryHash": "8e7cc22c318dd2094e02d0bf06c5d73a5dba717611a40f6d1bedc5ea7c300fd6" +} \ No newline at end of file diff --git a/TestVectors/prc/addPointerValues.json b/TestVectors/prc/addPointerValues.json new file mode 100644 index 0000000..64d026a --- /dev/null +++ b/TestVectors/prc/addPointerValues.json @@ -0,0 +1,9 @@ +[ + { + "pointer": "/issuer", + "value": { + "id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + } + } +] \ No newline at end of file diff --git a/TestVectors/prc/addProofConfig.json b/TestVectors/prc/addProofConfig.json new file mode 100644 index 0000000..48ef16e --- /dev/null +++ b/TestVectors/prc/addProofConfig.json @@ -0,0 +1,11 @@ +{ + "type": "DataIntegrityProof", + "cryptosuite": "bbs-2023", + "created": "2023-08-15T23:36:38Z", + "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", + "proofPurpose": "assertionMethod", + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/citizenship/v4rc1" + ] +} \ No newline at end of file diff --git a/TestVectors/prc/addProofConfigCanon.txt b/TestVectors/prc/addProofConfigCanon.txt new file mode 100644 index 0000000..c8e9741 --- /dev/null +++ b/TestVectors/prc/addProofConfigCanon.txt @@ -0,0 +1,5 @@ +_:c14n0 "2023-08-15T23:36:38Z"^^ . +_:c14n0 . +_:c14n0 "bbs-2023"^^ . +_:c14n0 . +_:c14n0 . diff --git a/TestVectors/prc/addRawBaseSignatureInfo.json b/TestVectors/prc/addRawBaseSignatureInfo.json new file mode 100644 index 0000000..419c06b --- /dev/null +++ b/TestVectors/prc/addRawBaseSignatureInfo.json @@ -0,0 +1,6 @@ +{ + "bbsSignature": "86168dd2b5d0c7c6a56a30f4212ed116a53def05d0d6708207d483c7ff2053aefa22d24ba7659d60852694f8d85be0fa2adc3974c7dc4cc68b3db17b2423975047104162c24502b41591879ac24f1bb1", + "mandatoryPointers": [ + "/issuer" + ] +} \ No newline at end of file diff --git a/TestVectors/prc/addSignedSDBase.json b/TestVectors/prc/addSignedSDBase.json new file mode 100644 index 0000000..d91b234 --- /dev/null +++ b/TestVectors/prc/addSignedSDBase.json @@ -0,0 +1,48 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/citizenship/v4rc1" + ], + "type": [ + "VerifiableCredential", + "PermanentResidentCardCredential" + ], + "issuer": { + "id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + }, + "name": "Permanent Resident Card", + "description": "Permanent Resident Card from Government of Utopia.", + "credentialSubject": { + "type": [ + "PermanentResident", + "Person" + ], + "givenName": "JANE", + "familyName": "SMITH", + "gender": "Female", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4v43hPwAHIgK1v4tX6wAAAABJRU5ErkJggg==", + "residentSince": "2015-01-01", + "commuterClassification": "C1", + "birthCountry": "Arcadia", + "birthDate": "1978-07-17", + "permanentResidentCard": { + "type": [ + "PermanentResidentCard" + ], + "identifier": "83627465", + "lprCategory": "C09", + "lprNumber": "999-999-999" + } + }, + "validFrom": "2024-12-16T00:00:00Z", + "validUntil": "2025-12-16T23:59:59Z", + "proof": { + "type": "DataIntegrityProof", + "cryptosuite": "bbs-2023", + "created": "2023-08-15T23:36:38Z", + "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", + "proofPurpose": "assertionMethod", + "proofValue": "u2V0ChVhQhhaN0rXQx8alajD0IS7RFqU97wXQ1nCCB9SDx_8gU676ItJLp2WdYIUmlPjYW-D6Ktw5dMfcTMaLPbF7JCOXUEcQQWLCRQK0FZGHmsJPG7FYQDpbvyXTTZCxjDXNI1e-am9CMB6U_J5S936Tt3PFYUvfjnzCLDGN0glOAtC_BsXXOl26cXYRpA9tG-3F6nwwD9ZYYKTvGvo9pXVJbxIrm3i4wkdhUxqKCTIGrnxFuAdZwWi6T3omD5wzZ7bAGbRneEEQSxBmXtvnC6Pr59nPv_v3HrAW9wq_uxYzF_NyaX3GPv0h_FV2T2OSao8C6uoyWiqIj1ggABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v-BZy9pc3N1ZXI" + } +} \ No newline at end of file diff --git a/TestVectors/prc/derivedAdjIndexes.json b/TestVectors/prc/derivedAdjIndexes.json new file mode 100644 index 0000000..98cc79a --- /dev/null +++ b/TestVectors/prc/derivedAdjIndexes.json @@ -0,0 +1 @@ +{"adjMandatoryIndexes":[0,4,5,7],"adjSelectiveIndexes":[0,1,7,17,18,19]} \ No newline at end of file diff --git a/TestVectors/prc/derivedAllGroupData.json b/TestVectors/prc/derivedAllGroupData.json new file mode 100644 index 0000000..586188a --- /dev/null +++ b/TestVectors/prc/derivedAllGroupData.json @@ -0,0 +1,583 @@ +{ + "groups": { + "selective": { + "matching": { + "dataType": "Map", + "value": [ + [ + 1, + "_:b0 .\n" + ], + [ + 2, + "_:b0 .\n" + ], + [ + 8, + "_:b0 \"Arcadia\" .\n" + ], + [ + 16, + "_:b2 .\n" + ], + [ + 17, + "_:b2 .\n" + ], + [ + 20, + "_:b2 _:b0 .\n" + ], + [ + 22, + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n" + ], + [ + 23, + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] + ] + }, + "nonMatching": { + "dataType": "Map", + "value": [ + [ + 0, + " .\n" + ], + [ + 3, + "_:b0 \"1978-07-17\"^^ .\n" + ], + [ + 4, + "_:b0 \"SMITH\" .\n" + ], + [ + 5, + "_:b0 \"Female\" .\n" + ], + [ + 6, + "_:b0 \"JANE\" .\n" + ], + [ + 7, + "_:b0 .\n" + ], + [ + 9, + "_:b0 \"C1\" .\n" + ], + [ + 10, + "_:b0 _:b1 .\n" + ], + [ + 11, + "_:b0 \"2015-01-01\"^^ .\n" + ], + [ + 12, + "_:b1 .\n" + ], + [ + 13, + "_:b1 \"83627465\" .\n" + ], + [ + 14, + "_:b1 \"C09\" .\n" + ], + [ + 15, + "_:b1 \"999-999-999\" .\n" + ], + [ + 18, + "_:b2 \"Permanent Resident Card from Government of Utopia.\" .\n" + ], + [ + 19, + "_:b2 \"Permanent Resident Card\" .\n" + ], + [ + 21, + "_:b2 .\n" + ] + ] + }, + "deskolemizedNQuads": [ + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"Arcadia\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 _:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] + }, + "mandatory": { + "matching": { + "dataType": "Map", + "value": [ + [ + 0, + " .\n" + ], + [ + 16, + "_:b2 .\n" + ], + [ + 17, + "_:b2 .\n" + ], + [ + 21, + "_:b2 .\n" + ] + ] + }, + "nonMatching": { + "dataType": "Map", + "value": [ + [ + 1, + "_:b0 .\n" + ], + [ + 2, + "_:b0 .\n" + ], + [ + 3, + "_:b0 \"1978-07-17\"^^ .\n" + ], + [ + 4, + "_:b0 \"SMITH\" .\n" + ], + [ + 5, + "_:b0 \"Female\" .\n" + ], + [ + 6, + "_:b0 \"JANE\" .\n" + ], + [ + 7, + "_:b0 .\n" + ], + [ + 8, + "_:b0 \"Arcadia\" .\n" + ], + [ + 9, + "_:b0 \"C1\" .\n" + ], + [ + 10, + "_:b0 _:b1 .\n" + ], + [ + 11, + "_:b0 \"2015-01-01\"^^ .\n" + ], + [ + 12, + "_:b1 .\n" + ], + [ + 13, + "_:b1 \"83627465\" .\n" + ], + [ + 14, + "_:b1 \"C09\" .\n" + ], + [ + 15, + "_:b1 \"999-999-999\" .\n" + ], + [ + 18, + "_:b2 \"Permanent Resident Card from Government of Utopia.\" .\n" + ], + [ + 19, + "_:b2 \"Permanent Resident Card\" .\n" + ], + [ + 20, + "_:b2 _:b0 .\n" + ], + [ + 22, + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n" + ], + [ + 23, + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] + ] + }, + "deskolemizedNQuads": [ + " .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n" + ] + }, + "combined": { + "matching": { + "dataType": "Map", + "value": [ + [ + 0, + " .\n" + ], + [ + 1, + "_:b0 .\n" + ], + [ + 2, + "_:b0 .\n" + ], + [ + 8, + "_:b0 \"Arcadia\" .\n" + ], + [ + 16, + "_:b2 .\n" + ], + [ + 17, + "_:b2 .\n" + ], + [ + 20, + "_:b2 _:b0 .\n" + ], + [ + 21, + "_:b2 .\n" + ], + [ + 22, + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n" + ], + [ + 23, + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] + ] + }, + "nonMatching": { + "dataType": "Map", + "value": [ + [ + 3, + "_:b0 \"1978-07-17\"^^ .\n" + ], + [ + 4, + "_:b0 \"SMITH\" .\n" + ], + [ + 5, + "_:b0 \"Female\" .\n" + ], + [ + 6, + "_:b0 \"JANE\" .\n" + ], + [ + 7, + "_:b0 .\n" + ], + [ + 9, + "_:b0 \"C1\" .\n" + ], + [ + 10, + "_:b0 _:b1 .\n" + ], + [ + 11, + "_:b0 \"2015-01-01\"^^ .\n" + ], + [ + 12, + "_:b1 .\n" + ], + [ + 13, + "_:b1 \"83627465\" .\n" + ], + [ + 14, + "_:b1 \"C09\" .\n" + ], + [ + 15, + "_:b1 \"999-999-999\" .\n" + ], + [ + 18, + "_:b2 \"Permanent Resident Card from Government of Utopia.\" .\n" + ], + [ + 19, + "_:b2 \"Permanent Resident Card\" .\n" + ] + ] + }, + "deskolemizedNQuads": [ + " .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"Arcadia\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 _:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] + } + }, + "skolemized": { + "expanded": [ + { + "https://www.w3.org/2018/credentials#credentialSubject": [ + { + "https://w3id.org/citizenship#birthCountry": [ + { + "@value": "Arcadia" + } + ], + "https://schema.org/birthDate": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "1978-07-17" + } + ], + "https://w3id.org/citizenship#commuterClassification": [ + { + "@value": "C1" + } + ], + "https://schema.org/familyName": [ + { + "@value": "SMITH" + } + ], + "https://schema.org/gender": [ + { + "@value": "Female" + } + ], + "https://schema.org/givenName": [ + { + "@value": "JANE" + } + ], + "https://schema.org/image": [ + { + "@id": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4v43hPwAHIgK1v4tX6wAAAABJRU5ErkJggg==" + } + ], + "https://w3id.org/citizenship#permanentResidentCard": [ + { + "https://schema.org/identifier": [ + { + "@value": "83627465" + } + ], + "https://w3id.org/citizenship#lprCategory": [ + { + "@value": "C09" + } + ], + "https://w3id.org/citizenship#lprNumber": [ + { + "@value": "999-999-999" + } + ], + "@type": [ + "https://w3id.org/citizenship#PermanentResidentCard" + ], + "@id": "urn:bnid:_d3b161e0-573e-4362-81df-e9512fae4442_0" + } + ], + "https://w3id.org/citizenship#residentSince": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2015-01-01" + } + ], + "@type": [ + "https://w3id.org/citizenship#PermanentResident", + "https://schema.org/Person" + ], + "@id": "urn:bnid:_d3b161e0-573e-4362-81df-e9512fae4442_1" + } + ], + "https://schema.org/description": [ + { + "@value": "Permanent Resident Card from Government of Utopia." + } + ], + "https://www.w3.org/2018/credentials#issuer": [ + { + "@id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "https://schema.org/image": [ + { + "@id": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + } + ] + } + ], + "https://schema.org/name": [ + { + "@value": "Permanent Resident Card" + } + ], + "@type": [ + "https://www.w3.org/2018/credentials#VerifiableCredential", + "https://w3id.org/citizenship#PermanentResidentCardCredential" + ], + "https://www.w3.org/2018/credentials#validFrom": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2024-12-16T00:00:00Z" + } + ], + "https://www.w3.org/2018/credentials#validUntil": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2025-12-16T23:59:59Z" + } + ], + "@id": "urn:bnid:_d3b161e0-573e-4362-81df-e9512fae4442_2" + } + ], + "compact": { + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/citizenship/v4rc1" + ], + "id": "urn:bnid:_d3b161e0-573e-4362-81df-e9512fae4442_2", + "type": [ + "VerifiableCredential", + "PermanentResidentCardCredential" + ], + "description": "Permanent Resident Card from Government of Utopia.", + "name": "Permanent Resident Card", + "credentialSubject": { + "id": "urn:bnid:_d3b161e0-573e-4362-81df-e9512fae4442_1", + "type": [ + "PermanentResident", + "Person" + ], + "birthDate": "1978-07-17", + "familyName": "SMITH", + "gender": "Female", + "givenName": "JANE", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4v43hPwAHIgK1v4tX6wAAAABJRU5ErkJggg==", + "birthCountry": "Arcadia", + "commuterClassification": "C1", + "permanentResidentCard": { + "id": "urn:bnid:_d3b161e0-573e-4362-81df-e9512fae4442_0", + "type": "PermanentResidentCard", + "identifier": "83627465", + "lprCategory": "C09", + "lprNumber": "999-999-999" + }, + "residentSince": "2015-01-01" + }, + "issuer": { + "id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + }, + "validFrom": "2024-12-16T00:00:00Z", + "validUntil": "2025-12-16T23:59:59Z" + } + }, + "deskolemizedNQuads": [ + " .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_0 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_0 \"83627465\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_0 \"C09\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_0 \"999-999-999\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"1978-07-17\"^^ .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"SMITH\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"Female\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"JANE\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"Arcadia\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"C1\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 _:_d3b161e0-573e-4362-81df-e9512fae4442_0 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_1 \"2015-01-01\"^^ .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"Permanent Resident Card from Government of Utopia.\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"Permanent Resident Card\" .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 _:_d3b161e0-573e-4362-81df-e9512fae4442_1 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:_d3b161e0-573e-4362-81df-e9512fae4442_2 \"2025-12-16T23:59:59Z\"^^ .\n" + ], + "labelMap": { + "dataType": "Map", + "value": [ + [ + "_d3b161e0-573e-4362-81df-e9512fae4442_0", + "b1" + ], + [ + "_d3b161e0-573e-4362-81df-e9512fae4442_1", + "b0" + ], + [ + "_d3b161e0-573e-4362-81df-e9512fae4442_2", + "b2" + ] + ] + }, + "nquads": [ + " .\n", + "_:b0 .\n", + "_:b0 .\n", + "_:b0 \"1978-07-17\"^^ .\n", + "_:b0 \"SMITH\" .\n", + "_:b0 \"Female\" .\n", + "_:b0 \"JANE\" .\n", + "_:b0 .\n", + "_:b0 \"Arcadia\" .\n", + "_:b0 \"C1\" .\n", + "_:b0 _:b1 .\n", + "_:b0 \"2015-01-01\"^^ .\n", + "_:b1 .\n", + "_:b1 \"83627465\" .\n", + "_:b1 \"C09\" .\n", + "_:b1 \"999-999-999\" .\n", + "_:b2 .\n", + "_:b2 .\n", + "_:b2 \"Permanent Resident Card from Government of Utopia.\" .\n", + "_:b2 \"Permanent Resident Card\" .\n", + "_:b2 _:b0 .\n", + "_:b2 .\n", + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" + ] +} \ No newline at end of file diff --git a/TestVectors/prc/derivedDisclosureData.json b/TestVectors/prc/derivedDisclosureData.json new file mode 100644 index 0000000..13ba26b --- /dev/null +++ b/TestVectors/prc/derivedDisclosureData.json @@ -0,0 +1 @@ +{"bbsProof":"96ac5ff7b89bf2d8b0f3cc51c547f1a22b01e24e246579d212362cdf6bf0fabe18be0c9d1f84c904bb4c6c613fd0ecabb7ad92e615341da97a45a918721626cc859c455b473a36e39572561d5fc483c637424717a43dcffb3b130d8fe11f88a8802f3b231efe2444f8b47feded0b621e3d5cd22cb3ec23ebc4f6dca745b5c1ce2f42a710b92510a71225a7d39e00e0c26da2fae242cdf154e93de42017270b99023fe95b42c42a461a2eab19e04aa44839af39aa71f830162cb424a5aa0acc046dc7e7b8bdfc73cf3641c76aeeb7fbb56cd936776050dbd632bf7fc80d33c621dc6b837184ade619630f72bd25d8aea626ba994d15a65def1b0dc8af09c54a0cf5e5b54d1b1b28047aa2dbf63805fec9533bab46d12349ca47dfd83ff30454cedacd23da4eb9a3ebe198c80ac1992e2a203ffcf46afaa3482a63b7b00033df1a2da361d600a1cfd5139be010ca302e082af7ee34a5ff3d24cc7062f57fa36d47846edd5219e59bd438576bff709bfd7920d6bad8367b0fe8c749318ef8726beda9c1d9095bed738e4fd1c38333a27f4f2071a21a863671b43fe521f737444be865e887cbf33caa39226fb8013003721e37c6d949867befba1c8b7bf641bd647851ad92aed3da91af52f17d058a9f74eb30744304c05813840be6a528f54cd5a24b73ae2f42dec1bfc2e1354fb061a96c0df3ab96ddc9ada96cb882571cccb89774fcf0326e1c8b2b87cc4cf4eafbd75632518919cbe58a9f86ade12b0f6989c0886e358d801b99b1dd32c7e6e56a653c0e264a84b51d2d23679c75e282451af3bcaa6f19ec7bc3aa603fec87db5a57d42961e2907d899a8fd5d1ce17dde8a75cd1192494cd93b112da7774c2bb2f679f5b4b404dabe485d78a017b2be81e5ff8bacf90d5f24b2e83ab4169f8f55ca6f703141f91565abbec7445e6cf4663f5e34b9188283d57cedf36c586b18a130b83652436bf6862673ddeebd9aefdc2fbfc97dde80e36483491c4357ccd2fc131fb","labelMap":{"dataType":"Map","value":[["c14n0","b0"],["c14n1","b2"]]},"mandatoryIndexes":[0,4,5,7],"adjSelectiveIndexes":[0,1,7,17,18,19],"presentationHeader":{"0":17,"1":51,"2":119,"3":170}} \ No newline at end of file diff --git a/TestVectors/prc/derivedGroupIndexes.json b/TestVectors/prc/derivedGroupIndexes.json new file mode 100644 index 0000000..65d4b05 --- /dev/null +++ b/TestVectors/prc/derivedGroupIndexes.json @@ -0,0 +1 @@ +{"combinedIndexes":[0,1,2,8,16,17,20,21,22,23],"mandatoryIndexes":[0,16,17,21],"nonMandatoryIndexes":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19,20,22,23],"selectiveIndexes":[1,2,8,16,17,20,22,23]} \ No newline at end of file diff --git a/TestVectors/prc/derivedRecoveredBaseData.json b/TestVectors/prc/derivedRecoveredBaseData.json new file mode 100644 index 0000000..479c747 --- /dev/null +++ b/TestVectors/prc/derivedRecoveredBaseData.json @@ -0,0 +1,7 @@ +{ + "bbsSignature": "86168dd2b5d0c7c6a56a30f4212ed116a53def05d0d6708207d483c7ff2053aefa22d24ba7659d60852694f8d85be0fa2adc3974c7dc4cc68b3db17b2423975047104162c24502b41591879ac24f1bb1", + "hmacKey": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "mandatoryPointers": [ + "/issuer" + ] +} \ No newline at end of file diff --git a/TestVectors/prc/derivedRevealDocument.json b/TestVectors/prc/derivedRevealDocument.json new file mode 100644 index 0000000..e3e3e7d --- /dev/null +++ b/TestVectors/prc/derivedRevealDocument.json @@ -0,0 +1,31 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/citizenship/v4rc1" + ], + "type": [ + "VerifiableCredential", + "PermanentResidentCardCredential" + ], + "issuer": { + "id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + }, + "validFrom": "2024-12-16T00:00:00Z", + "validUntil": "2025-12-16T23:59:59Z", + "credentialSubject": { + "type": [ + "PermanentResident", + "Person" + ], + "birthCountry": "Arcadia" + }, + "proof": { + "type": "DataIntegrityProof", + "cryptosuite": "bbs-2023", + "created": "2023-08-15T23:36:38Z", + "verificationMethod": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ", + "proofPurpose": "assertionMethod", + "proofValue": "u2V0DhVkC0JasX_e4m_LYsPPMUcVH8aIrAeJOJGV50hI2LN9r8Pq-GL4MnR-EyQS7TGxhP9Dsq7etkuYVNB2pekWpGHIWJsyFnEVbRzo245VyVh1fxIPGN0JHF6Q9z_s7Ew2P4R-IqIAvOyMe_iRE-LR_7e0LYh49XNIss-wj68T23KdFtcHOL0KnELklEKcSJafTngDgwm2i-uJCzfFU6T3kIBcnC5kCP-lbQsQqRhouqxngSqRIOa85qnH4MBYstCSlqgrMBG3H57i9_HPPNkHHau63-7Vs2TZ3YFDb1jK_f8gNM8Yh3GuDcYSt5hljD3K9Jdiupia6mU0Vpl3vGw3IrwnFSgz15bVNGxsoBHqi2_Y4Bf7JUzurRtEjScpH39g_8wRUztrNI9pOuaPr4ZjICsGZLiogP_z0avqjSCpjt7AAM98aLaNh1gChz9UTm-AQyjAuCCr37jSl_z0kzHBi9X-jbUeEbt1SGeWb1DhXa_9wm_15INa62DZ7D-jHSTGO-HJr7anB2Qlb7XOOT9HDgzOif08gcaIahjZxtD_lIfc3REvoZeiHy_M8qjkib7gBMANyHjfG2UmGe--6HIt79kG9ZHhRrZKu09qRr1LxfQWKn3TrMHRDBMBYE4QL5qUo9UzVoktzri9C3sG_wuE1T7BhqWwN86uW3cmtqWy4glcczLiXdPzwMm4ciyuHzEz06vvXVjJRiRnL5Yqfhq3hKw9picCIbjWNgBuZsd0yx-blamU8DiZKhLUdLSNnnHXigkUa87yqbxnse8OqYD_sh9taV9QpYeKQfYmaj9XRzhfd6Kdc0RkklM2TsRLad3TCuy9nn1tLQE2r5IXXigF7K-geX_i6z5DV8ksug6tBafj1XKb3AxQfkVZau-x0RebPRmP140uRiCg9V87fNsWGsYoTC4NlJDa_aGJnPd7r2a79wvv8l93oDjZINJHENXzNL8Ex-6IAAAEChAAEBQeGAAEHERITRBEzd6o" + } +} \ No newline at end of file diff --git a/TestVectors/prc/derivedUnsignedReveal.json b/TestVectors/prc/derivedUnsignedReveal.json new file mode 100644 index 0000000..dbbc4e8 --- /dev/null +++ b/TestVectors/prc/derivedUnsignedReveal.json @@ -0,0 +1,23 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3id.org/citizenship/v4rc1" + ], + "type": [ + "VerifiableCredential", + "PermanentResidentCardCredential" + ], + "issuer": { + "id": "did:key:zDnaeTHxNEBZoKaEo6PdA83fq98ebiFvo3X273Ydu4YmV96rg", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4z/DiPwAG0ALnwgz64QAAAABJRU5ErkJggg==" + }, + "validFrom": "2024-12-16T00:00:00Z", + "validUntil": "2025-12-16T23:59:59Z", + "credentialSubject": { + "type": [ + "PermanentResident", + "Person" + ], + "birthCountry": "Arcadia" + } +} \ No newline at end of file diff --git a/TestVectors/prc/verifyDerivedProofValue.json b/TestVectors/prc/verifyDerivedProofValue.json new file mode 100644 index 0000000..bc776c9 --- /dev/null +++ b/TestVectors/prc/verifyDerivedProofValue.json @@ -0,0 +1,27 @@ +{ + "bbsProof": "96ac5ff7b89bf2d8b0f3cc51c547f1a22b01e24e246579d212362cdf6bf0fabe18be0c9d1f84c904bb4c6c613fd0ecabb7ad92e615341da97a45a918721626cc859c455b473a36e39572561d5fc483c637424717a43dcffb3b130d8fe11f88a8802f3b231efe2444f8b47feded0b621e3d5cd22cb3ec23ebc4f6dca745b5c1ce2f42a710b92510a71225a7d39e00e0c26da2fae242cdf154e93de42017270b99023fe95b42c42a461a2eab19e04aa44839af39aa71f830162cb424a5aa0acc046dc7e7b8bdfc73cf3641c76aeeb7fbb56cd936776050dbd632bf7fc80d33c621dc6b837184ade619630f72bd25d8aea626ba994d15a65def1b0dc8af09c54a0cf5e5b54d1b1b28047aa2dbf63805fec9533bab46d12349ca47dfd83ff30454cedacd23da4eb9a3ebe198c80ac1992e2a203ffcf46afaa3482a63b7b00033df1a2da361d600a1cfd5139be010ca302e082af7ee34a5ff3d24cc7062f57fa36d47846edd5219e59bd438576bff709bfd7920d6bad8367b0fe8c749318ef8726beda9c1d9095bed738e4fd1c38333a27f4f2071a21a863671b43fe521f737444be865e887cbf33caa39226fb8013003721e37c6d949867befba1c8b7bf641bd647851ad92aed3da91af52f17d058a9f74eb30744304c05813840be6a528f54cd5a24b73ae2f42dec1bfc2e1354fb061a96c0df3ab96ddc9ada96cb882571cccb89774fcf0326e1c8b2b87cc4cf4eafbd75632518919cbe58a9f86ade12b0f6989c0886e358d801b99b1dd32c7e6e56a653c0e264a84b51d2d23679c75e282451af3bcaa6f19ec7bc3aa603fec87db5a57d42961e2907d899a8fd5d1ce17dde8a75cd1192494cd93b112da7774c2bb2f679f5b4b404dabe485d78a017b2be81e5ff8bacf90d5f24b2e83ab4169f8f55ca6f703141f91565abbec7445e6cf4663f5e34b9188283d57cedf36c586b18a130b83652436bf6862673ddeebd9aefdc2fbfc97dde80e36483491c4357ccd2fc131fb", + "labelMap": [ + [ + "c14n0", + "b0" + ], + [ + "c14n1", + "b2" + ] + ], + "mandatoryIndexes": [ + 0, + 4, + 5, + 7 + ], + "adjSelectedIndexes": [ + 0, + 1, + 7, + 17, + 18, + 19 + ] +} \ No newline at end of file diff --git a/TestVectors/prc/verifyNQuads.json b/TestVectors/prc/verifyNQuads.json new file mode 100644 index 0000000..7bd9dda --- /dev/null +++ b/TestVectors/prc/verifyNQuads.json @@ -0,0 +1,12 @@ +[ + " .\n", + "_:b0 .\n", + "_:b0 .\n", + "_:b0 \"Arcadia\" .\n", + "_:b2 .\n", + "_:b2 .\n", + "_:b2 _:b0 .\n", + "_:b2 .\n", + "_:b2 \"2024-12-16T00:00:00Z\"^^ .\n", + "_:b2 \"2025-12-16T23:59:59Z\"^^ .\n" +] \ No newline at end of file diff --git a/index.html b/index.html index 348cb36..443a7e2 100644 --- a/index.html +++ b/index.html @@ -170,13 +170,13 @@ title: "Blind BBS Signatures", authors: ["V. Kalos", "G. Bernstein"], date: "2024", - href: "https://www.ietf.org/archive/id/draft-kalos-bbs-blind-signatures-00.html#name-proof-generation" + href: "https://www.ietf.org/archive/id/draft-kalos-bbs-blind-signatures-00.html#name-proof-generationhttps://www.ietf.org/archive/id/draft-kalos-bbs-blind-signatures-03.html" }, "CFRG-Pseudonym-BBS-Signature": { title: "BBS per Verifier Linkability", authors: ["V. Kalos"], - date: "2023", - href: "https://www.ietf.org/archive/id/draft-vasilis-bbs-per-verifier-linkability-00.html" + date: "2024", + href: "https://www.ietf.org/archive/id/draft-kalos-bbs-per-verifier-linkability-00.html" } }, lint: { "informative-dfn": false }, @@ -592,8 +592,8 @@

serializeBaseProofValue

BBS signature, HMAC key, and mandatory pointers. The required inputs are a base signature |bbsSignature|, |bbsHeader|, |publicKey|, an HMAC key |hmacKey|, an array of -|mandatoryPointers|, |featureOption|, and depending on -the |featureOption| value the |pid|, and |signer_blind| values. +|mandatoryPointers|, |featureOption|, and, depending on +the |featureOption| value, possibly a |signer_nym_entropy| value. A single base proof string value is produced as output.

@@ -624,13 +624,12 @@

serializeBaseProofValue

  • Initialize |components| to an array with six elements containing the values of: -|bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, |mandatoryPointers|, and -|signerBlind|. +|bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, and |mandatoryPointers|.
  • -If |featureOption| equals `"pseudonym_issuer_pid"`: +If |featureOption| equals `"pseudonym"`:
    1. Initialize a byte array, |proofValue|, that starts with the BBS base proof @@ -639,12 +638,12 @@

      serializeBaseProofValue

    2. Initialize |components| to an array with six elements containing the values of: |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, |mandatoryPointers|, and -|pid|. +|signer_nym_entropy|.
  • -If |featureOption| equals `"pseudonym_hidden_pid"`: +If |featureOption| equals `"holder_binding_pseudonym"`:
    1. Initialize a byte array, |proofValue|, that starts with the BBS base proof @@ -653,7 +652,7 @@

      serializeBaseProofValue

    2. Initialize |components| to an array with six elements containing the values of: |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, |mandatoryPointers|, and -|signerBlind|. +|signer_nym_entropy|.
  • @@ -682,8 +681,7 @@

    parseBaseProofValue

    six or seven elements, using the names "bbsSignature", "bbsHeader", "publicKey", "hmacKey", "mandatoryPointers", "featureOption", and possibly optional feature -parameter "pid" or -"signer_blind", is produced as output. +parameter "signer_nym_entropy", is produced as output.

      @@ -715,11 +713,11 @@

      parseBaseProofValue

    1. If the |decodedProofValue| starts with the bytes `0xd9`, `0x5d`, and `0x06`, set -|featureOption| to `"pseudonym_issuer_pid"`. +|featureOption| to `"pseudonym"`.
    2. If the |decodedProofValue| starts with the bytes `0xd9`, `0x5d`, and `0x08`, set -|featureOption| to `"pseudonym_hidden_pid"`. +|featureOption| to `"holder_binding_pseudonym"`.
    3. If the |decodedProofValue| starts with any other three byte sequence, @@ -745,20 +743,20 @@

      parseBaseProofValue

    4. If |featureOption| equals `"anonymous_holder_binding"`, set the property names for the object based on |components| to "bbsSignature", "bbsHeader", -"publicKey", "hmacKey", "mandatoryPointers", and "signer_blind", in that order, and +"publicKey", "hmacKey", and "mandatoryPointers", in that order, and add |featureOption| as a property.
    5. -If |featureOption| equals `"pseudonym_issuer_pid"`, set the property names +If |featureOption| equals `"pseudonym"`, set the property names for the object based on |components| to "bbsSignature", "bbsHeader", -"publicKey", "hmacKey", "mandatoryPointers", and "pid", in that order, and -add |featureOption| as a property. +"publicKey", "hmacKey", "mandatoryPointers", and "signer_nym_entropy", in that +order, and add |featureOption| as a property.
    6. -If |featureOption| equals `"pseudonym_hidden_pid"`, set the property names +If |featureOption| equals `"holder_binding_pseudonym"`, set the property names for the object based on |components| to "bbsSignature", "bbsHeader", -"publicKey", "hmacKey", "mandatoryPointers", and "signer_blind", in that order, and -add |featureOption| as a property. +"publicKey", "hmacKey", "mandatoryPointers", and "signer_nym_entropy", in that +order, and add |featureOption| as a property.
    @@ -787,8 +785,8 @@

    createDisclosureData

    1. Initialize |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, -|mandatoryPointers|, |pid|, and -|signer_blind| to the values of the associated properties in the object +and |mandatoryPointers| +to the values of the associated properties in the object returned when calling the algorithm in Section , passing the `proofValue` from `proof`.
    2. @@ -883,54 +881,80 @@

      createDisclosureData

      |signature| is the |bbsSignature|, |header| is the |bbsHeader|, |ph| is the |presentationHeader|, |messages| is |bbsMessages|, |disclosed_indexes| is |selectiveIndexes|, -`commitment_with_proof`, and `signer_blind`. The holder will also furnish its -|holder_secret|, and |proverBlind| that was used to compute the +and `commitment_with_proof`. The holder will also furnish its +|holder_secret|, and the |proverBlind| that was used to compute the |commitment_with_proof|. This is the Anonymous Holder Binding feature option. To be updated when IETF API is finalized.
    3. -If |featureOption| equals `"pseudonym_issuer_pid"`, compute the |pseudonym| -according to the `Calculate Pseudonym` procedure given -in [[CFRG-Pseudonym-BBS-Signature]], -and set |bsProof| to the value computed by the -`Signer Provided PID Proof Generation` procedure from -[[CFRG-Pseudonym-BBS-Signature]], where |PK| is the original issuers public key, -|signature| is the -|bbsSignature|, |header| is the |bbsHeader|, |ph| is the |presentationHeader| -|messages| is |bbsMessages|, |disclosed_indexes| is |selectiveIndexes|, and -|pseudonym| is the `pseudonym`. This is for the -Pseudonyms with Issuer-known PID +If |featureOption| equals `"pseudonym"`, +use the "Verification and Finalization" operation +from [[CFRG-Pseudonym-BBS-Signature]] with an empty |committed_messages| array +to both verify the |bbsSignature| and compute +the |nym_secret| value. This operation uses the |prover_nym|, +|signer_nym_entropy|, and |secret_prover_blind|. +

      +Determine the |nym_domain|. This might be specified by +the verifier or set by the holder, depending on the usage scenario. Use +the "Proof Generation with Pseudonym" +operation from [[CFRG-Pseudonym-BBS-Signature]] to produce the derived proof. +This operation takes as inputs +the original issuer's public key as |PK|, +the |bbsSignature| as |signature|, +the |bbsHeader| as |header|, +the |presentationHeader| as |ph|, +the |bbsMessages| as |messages|, +the |selectiveIndexes| as |disclosed_indexes|, + a |nym_secret|, + a |nym_domain|, + an empty array for |committed_messages|, +and a |secret_prover_blind|. +In addition to providing +the raw +cryptographic proof value which is assigned to |bbsProof|, +it also returns the |pseudonym|. +

      +This is for the +Credential-Bound Pseudonyms feature option. To be updated when IETF API is finalized.
    4. -If |featureOption| equals `"pseudonym_hidden_pid"`, compute the |pseudonym| -according to the `Calculate Pseudonym` procedure given -in [[CFRG-Pseudonym-BBS-Signature]], -and set |bsProof| to the value computed by the -`Hidden PID Proof Generation with Pseudonym` procedure from -[[CFRG-Pseudonym-BBS-Signature]], where |PK| is the original issuers public key, -|signature| is the -|bbsSignature|, |header| is the |bbsHeader|, |ph| is the |presentationHeader| +If |featureOption| equals `"holder_binding_pseudonym"`, +use the "Verification and Finalization" operation +from [[CFRG-Pseudonym-BBS-Signature]] with the |committed_messages| array +containing the |holder_secret| as its only value, +to both verify the |bbsSignature| and compute +the |nym_secret| value. This operation uses the |prover_nym|, +|signer_nym_entropy|, and |secret_prover_blind|. +

      +Determine the |nym_domain|. This might be specified by +the verifier or set by the holder depending on the usage scenario. Use +the "Proof Generation with Pseudonym" +operation from [[CFRG-Pseudonym-BBS-Signature]] to produce the derived proof. +This operation takes as inputs +|PK|, the original issuers public key, +|signature|, the |bbsSignature|, |header| is the |bbsHeader|, +|ph| is the |presentationHeader|, |messages| is |bbsMessages|, |disclosed_indexes| is |selectiveIndexes|, -|commitment_with_proof|, |pid|, |proverBlind|, |signer_blind|, and -|pseudonym| is the `pseudonym`. This is for the -Pseudonyms with Hidden PID +|nym_secret|, |nym_domain|, the |committed_messages| array containing the +|holder_secret| as its only value, and |secret_prover_blind|. In addition to +providing the raw cryptographic proof value which is assigned to |bbsProof|, +it also returns the |pseudonym|. + +This is for the +Holder Binding and Pseudonyms feature option. To be updated when IETF API is finalized.
  • -If |featureOption| equals `"anonymous_holder_binding"` or -`"pseudonym_hidden_pid"`, set the |lengthBBSMessages| parameter -to the length of the |bbsMessages| array. -If |featureOption| equals `"pseudonym_issuer_pid"` set the |lengthBBSMessages| -parameter to the length of the |bbsMessages| array + 1. This -is due to the known-issuer PID being considered a "BBS message". - +If |featureOption| equals `"anonymous_holder_binding"`, +`"pseudonym"`, or `"holder_binding_pseudonym"` set the |lengthBBSMessages| +parameter to the length of the |bbsMessages| array.
  • @@ -1034,9 +1058,10 @@

    serializeDerivedProofValue

    The following algorithm serializes a derived proof value. The required inputs are a BBS proof (|bbsProof|), a label map (|labelMap|), an array of mandatory indexes (|mandatoryIndexes|), an array of -selective indexes (|selectiveIndexes|), and a BBS presentation header +selective indexes (|selectiveIndexes|), a BBS presentation header (|presentationHeader|), the |featureOption| indicator, and, -depending on the |featureOption| value, a |pseudonym| and/or |lengthBBSMessages| value. +depending on the |featureOption| value, a |nym_domain|, |pseudonym|, and/or +|lengthBBSMessages| value. A single derived proof value, serialized as a byte string, is produced as output.

    @@ -1078,7 +1103,7 @@

    serializeDerivedProofValue

  • -If |featureOption| equals `"pseudonym_issuer_pid"` or `"pseudonym_hidden_pid"`: +If |featureOption| equals `"pseudonym"`:
    1. Initialize |proofValue| to start with the @@ -1087,7 +1112,21 @@

      serializeDerivedProofValue

    2. Initialize |components| to an array with elements containing the values of |bbsProof|, |compressedLabelMap|, |mandatoryIndexes|, |selectiveIndexes|, -|presentationHeader|, |pseudonym|, and |lengthBBSMessages|. +|presentationHeader|, |nym_domain|, |pseudonym|, and |lengthBBSMessages|. +
    3. +
    +
  • +
  • +If |featureOption| equals `"holder_binding_pseudonym"`: +
      +
    1. +Initialize |proofValue| to start with the +disclosure proof header bytes: `0xd9`, `0x5d`, and `0x09`. +
    2. +
    3. +Initialize |components| to an array with elements containing the values of +|bbsProof|, |compressedLabelMap|, |mandatoryIndexes|, |selectiveIndexes|, +|presentationHeader|, |nym_domain|, |pseudonym|, and |lengthBBSMessages|.
  • @@ -1113,10 +1152,10 @@

    parseDerivedProofValue

    The following algorithm parses the components of the derived proof value. The required input is a derived proof value (|proofValue|). A single derived proof value object is produced as output, which -contains a set of six or seven elements, having the names "bbsProof", +contains a set of six to nine elements, having the names "bbsProof", "labelMap", "mandatoryIndexes", "selectiveIndexes", "presentationHeader", "featureOption", and, depending on the value of the |featureOption| parameter, -"pseudonym" and/or "lengthBBSMessages". +"nym_domain", "pseudonym", and/or "lengthBBSMessages".

      @@ -1150,14 +1189,19 @@

      parseDerivedProofValue

      If the |decodedProofValue| starts with the header bytes `0xd9`, `0x5d`, and `0x07`, set |featureOption| to `"pseudonym"`. +
    1. +If the |decodedProofValue| starts with the header bytes `0xd9`, `0x5d`, and +`0x09`, set |featureOption| to `"holder_binding_pseudonym"`. +
    + +
  • Initialize `components` to an array that is the result of CBOR-decoding the bytes that follow the three-byte BBS disclosure proof header. If the result -is not an array of five, six, or seven elements — -a byte array, a map of integers to integers, -two arrays of integers, and one or two byte arrays; +is not an array of five, six, seven, or eight elements an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
  • @@ -1168,9 +1212,9 @@

    parseDerivedProofValue

  • Return derived proof value as an object with properties set to the five, -six, or seven elements, using the names "bbsProof", "labelMap", "mandatoryIndexes", -"selectiveIndexes", "presentationHeader", and optional "pseudonym" and/or -"lengthBBSMessages", respectively. +six, seven, or eight elements, using the names "bbsProof", "labelMap", +"mandatoryIndexes", "selectiveIndexes", "presentationHeader", and optional +"nym_domain", "pseudonym", and/or "lengthBBSMessages", respectively. In addition, add |featureOption| and its value to the object.
  • @@ -1279,11 +1323,14 @@

    Create Base Proof (bbs-2023)

    The |featureOption| parameter is used to indicate which optional feature, if any, is being used. It can take one of the following values `"baseline"`, -`"anonymous_holder_binding"`, `"pseudonym_issuer_pid"`, or -`"pseudonym_hidden_pid"`. Note that `"baseline"` is used to denote the case of +`"anonymous_holder_binding"`, `"pseudonym"`, or +`"holder_binding_pseudonym"`. Note that `"baseline"` is used to denote the case of no optional features. If |featureOption| is set to -`"anonymous_holder_binding"` or `"pseudonym_hidden_pid"`, the +`"anonymous_holder_binding"`, `"pseudonym"`, or `"holder_binding_pseudonym"`, the |commitment_with_proof| input MUST be supplied. +If |featureOption| is set to +`"pseudonym"` or `"holder_binding_pseudonym"`, the +|signer_nym_entropy| input MUST be supplied.

      @@ -1500,11 +1547,16 @@

      Base Proof Serialization (bbs-2023)

      cryptographic hash data (|hashData|), |featureOption|, and, if required, |commitment_with_proof|. -If |featureOption| is set to `"anonymous_holder_binding"` or -`"pseudonym_hidden_pid"`, the +If |featureOption| is set to `"anonymous_holder_binding"`, +`"pseudonym"`, or `"holder_binding_pseudonym"`, the |commitment_with_proof| input MUST be supplied; if not supplied, an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR. +If |featureOption| is set to +`"pseudonym"` or `"holder_binding_pseudonym"`, the +|signer_nym_entropy| input MUST be supplied; if not supplied, +an error MUST be raised and SHOULD convey an error type of +PROOF_GENERATION_ERROR. A single digital proof value represented as series of bytes is produced as output.

      @@ -1538,42 +1590,35 @@

      Base Proof Serialization (bbs-2023)

      `bbsSignature` using the `BlindSign` procedure of [[CFRG-Blind-BBS-Signature]], with appropriate key material, |commitment_with_proof| for the `commitment_with_proof`, |bbsHeader| for the `header`, and |bbsMessages| -for the `messages`. If the signing procedure uses the optional |signer_blind| -parameter, retain this value for use when calling - (below). This provides for the +for the `messages`. This provides for the Anonymous Holder Binding feature.
    1. -If |featureOption| equals `"pseudonym_issuer_pid"`, generate a -cryptographically random 32 byte |pid| value. Compute the -`bbsSignature` using the `Signer Provided PID Signature Generation` procedure -of [[CFRG-Pseudonym-BBS-Signature]], -with appropriate key material, |bbsHeader| for the `header`, |bbsMessages| -for the `messages`, and |pid| for the `pid`. Retain the |pid| value for use when -calling below. -This provides for Pseudonym with -Issuer-known PID feature. -
    2. -
    3. -If |featureOption| equals `"pseudonym_hidden_pid"`, compute -the `bbsSignature` using the `Hidden PID Signature Generation` procedure of -[[CFRG-Pseudonym-BBS-Signature]], with appropriate key material, |bbsHeader| -for the `header`, |bbsMessages| for the `messages`, and |commitment_with_proof| -for the `commitment_with_proof`. If the signing procedure uses the optional -|signer_blind| parameter retain this value for use when calling - below. -This provides for the Pseudonym with - Hidden PID feature. +If |featureOption| equals `"pseudonym"` or `"holder_binding_pseudonym"`, +the issuer generates a +cryptographically random value for the |signer_nym_entropy| and computes the +`bbsSignature` using the +"Blind Issuance" operation from [[CFRG-Pseudonym-BBS-Signature]] +with appropriate key material, |bbsHeader| +for the `header`, |bbsMessages| for the `messages`, |commitment_with_proof| +for the `commitment_with_proof`, and +|signer_nym_entropy| value. If the issuer might ever need to reissue a +credential to this holder that is bound to the same |nym_secret|, they should +retain the |signer_nym_entropy| value; otherwise, this value can be discarded. +

      +This provides for the Credential-Bound +Pseudonyms or Holder Binding and +Pseudonyms features.
  • Initialize `proofValue to the result of calling the algorithm in Section , passing |bbsSignature|, |bbsHeader|, -|publicKey|, |hmacKey|, |mandatoryPointers|, |featureOption|, and depending on -the |featureOption| value and signing options the |pid|, and |signer_blind| -values as paramters. -Note `publicKey` is a byte array of the public key, encoded according to +|publicKey|, |hmacKey|, |mandatoryPointers|, |featureOption|, and, depending on +the |featureOption| value, |signer_nym_entropy|, as parameters. +

    +Note: `publicKey` is a byte array of the public key, encoded according to [[CFRG-BBS-SIGNATURE]].
  • @@ -1607,17 +1652,20 @@

    Add Derived Proof (bbs-2023)

    information.

    -If |featureOption| equals `"pseudonym_issuer_pid"`, the REQUIRED -additional input is the |verifier_id| which is communicated to the holder by the -verifier. See Pseudonyms with -Issuer-known PID for background information. +If |featureOption| equals `"pseudonym"`, the REQUIRED +additional inputs are |prover_nym| and |proverBlind|, which are both known to +the holder, and |nym_dofmain|, which is either set by the holder or communicated +to the holder by the verifier. +See Credential-Bound Pseudonyms for +background information.

    -If |featureOption| equals `"pseudonym_hidden_pid"`, the REQUIRED -additional inputs are the |pid|, |proverBlind| (both known to -holder), and |verifier_id| which is communicated to the holder by the verifier. -See Pseudonyms with -Hidden PID for background information. +If |featureOption| equals `"holder_binding_pseudonym"`, the REQUIRED +additional inputs are |holder_secret|, |prover_nym|, and |proverBlind|, which are +all known to the holder, and |nym_dofmain|, which is either set by the holder or +communicated to the holder by the verifier. +See Holder Binding and Pseudonyms for +background information.

    1. @@ -1692,7 +1740,7 @@

      Verify Derived Proof (bbs-2023)

    2. Initialize |bbsProof|, |proofHash|, |mandatoryHash|, |selectiveIndexes|, |presentationHeader|, |nonMandatory|, |featureOption|, and, possibly, -|pseudonym|, to the values associated +|lengthBBSMessages| and/or |pseudonym|, to the values associated with their property names in the object returned when calling the algorithm in Section , passing the |unsecuredDocument|, |proof|, and any custom JSON-LD API options (such as a document loader). @@ -1722,11 +1770,13 @@

      Verify Derived Proof (bbs-2023)

      To be updated when IETF API is finalized.
    3. -If the |featureOption| equals `"pseudonym"`, initialize |verified| -to the result of -applying the `ProofVerifyWithPseudonym` verification algorithm of +If the |featureOption| equals `"pseudonym"` or `"holder_binding_pseudonym"`, +initialize |verified| +to the result of applying the +"Proof Verification with Pseudonym" operation from [[CFRG-Pseudonym-BBS-Signature]] using |lengthBBSMessages| for the `"L"` -parameter. To be updated when IETF +parameter and an empty |committed_messages| array. +To be updated when IETF API is finalized.
    @@ -1754,9 +1804,9 @@

    Optional Features

    The cryptographic properties of BBS signatures permit variants that can support advanced functionalities. This specification is limited to supporting only the most relevant of these enhancements, which we explain in the -following sections. The variables |commitment_with_proof|, -|pid|, and |pseudonym| are associated with these features and are not otherwise -needed for BBS signatures and proofs. +following sections. The variables |commitment_with_proof|, |holder_secret|, +|prover_nym|, |signer_nym_entropy|, and |pseudonym| are associated with these +features and are not otherwise needed for BBS signatures and proofs.

    The optional BBS features described in this section, and included in the @@ -1779,115 +1829,221 @@

    Anonymous Holder Binding

    To provide for this functionality, a holder generates a |holder_secret| value which should generally be at least 32 bytes long and cryptographically randomly generated. This value is never shared by the holder. Instead, the holder -generates a commitment along with a zero knowledge proof of knowledge of this -value, using the "Commitment Generation" procedure of [[CFRG-Blind-BBS-Signature]]. +generates a commitment, along with a zero knowledge proof of knowledge of this +value, using the "Commitment Computation" operation of [[CFRG-Blind-BBS-Signature]]. This computation involves cryptographically random values and computes the |commitment_with_proof| and |secret_prover_blind| values. The -|commitment_with_proof| is conveyed to the issuer while the +|commitment_with_proof| is conveyed to the issuer, while the |secret_prover_blind| is kept secret and is retained by the holder for use in generation of derived proofs. -Note that a holder can run the "Commitment Generation" procedure multiple times +Note that a holder can run the "Commitment Computation" operation multiple times, to produce unlinkable |commitment_with_proof| values for use with different issuers.

    -The issuer, on receipt of the |commitment_with_proof|, follows the procedures of -[[CFRG-Blind-BBS-Signature]] to produce a base proof (signature) over the document -with the commitment furnished by the holder. If the issuer chooses to use the -|signer_blind| parameter when creating the signature in -[[CFRG-Blind-BBS-Signature]], this value needs to be conveyed to the holder as -part of the base proof value. +The issuer, on receipt of the |commitment_with_proof|, follows the procedures +of this specification, and uses the "Blind Signature Generation" operation of +[[CFRG-Blind-BBS-Signature]] to produce a base proof (signature) over the document, +with the |commitment_with_proof| furnished by the holder.

    When the holder wants to create a selectively disclosed document with derived -proof, they use their |holder_secret| (as a "commited message"), the -|secret_prover_blind|, and, if supplied in the base proof, the |signer_blind| -in the proof generation procedure of -[[CFRG-Blind-BBS-Signature]]. +proof, they use the procedures of this specification and the "Proof Generation" +operation of [[CFRG-Blind-BBS-Signature]]. They use their |holder_secret| as +the only "message" in the |commited messages| array, and supply their +|secret_prover_blind|.

    -Verification of the revealed document with derived proof uses the "regular" BBS -proof verification procedures of [[CFRG-BBS-SIGNATURE]]. +Verification of the revealed document with derived proof uses the procedures +of this specification and the "Proof Verification" operation of +[[CFRG-Blind-BBS-Signature]].

    -

    Pseudonyms with Issuer-known PID

    -

    -This feature is a privacy preserving enhancement that allows a verifier that has -seen a selectively revealed document with derived proof from a holder to -recognize that the same holder is presenting a new selectively revealed document -with derived proof. Note that this may just be a new unlinkable proof (derived -proof) on the same selectively revealed information. By "privacy preserving," we -mean that no uniquely identifiable information is added that would allow tracking -between different verifiers that may share information amongst themselves. This -variant does allow for the issuer to monitor usage if verifiers share -information with the issuer. -

    -

    -To furnish this capability, before creating the base proof for a document, an -issuer generates a value known as a |pid| (prover id) which should be -cryptographically random and at least 32 bytes long. This value is shared with -the holder but otherwise kept secret. This value is then used in creating the -base proof via the signing procedure in [[CFRG-Pseudonym-BBS-Signature]]. -

    -

    -The holder receives the document with base proof which includes the |pid| value -from the issuer. The holder obtains a |verifier_id| associated with the verifier -for which they intend to create a revealed document with derived proof. Using the -procedures of [[CFRG-Pseudonym-BBS-Signature]], a cryptographic |pseudonym| value -is generated. The derived proof value is generated via the proof generation -procedure of [[CFRG-Pseudonym-BBS-Signature]], and this value along with the -|pseudonym| are given to the verifier. Note that the |pid| value cannot be -recovered from the |pseudonym|. -

    -

    -When the verifier receives the revealed document with derived proof and -|pseudonym|, they use the proof verification procedures of -[[CFRG-Pseudonym-BBS-Signature]]. -

    +

    Credential-Bound Pseudonyms

    +

    +BBS-signed Verifiable Credentials as specified in this document allow for +selective disclosure and unlinkable cryptographic proof artifacts. By +"unlinkable", we mean that the +cryptographic information in the derived proofs cannot be linked to other +proofs nor the original signature. This implies that a verifier cannot determine +whether a holder has presented the same credential before (with a different proof +instantiation), nor can they assert some type of identity. Credential-bound +pseudonyms provide a privacy preserving mechanism to allow for the limited +linkability of a cryptographic pseudonym. Such a pseudonym may be determined +strictly by the holder, or jointly by the holder and the verifier. +

    +

    +This type of cryptographic pseudonym (cryptographic identifier/name) is +computed from two parts. The first part, the |nym_secret|, is specified by, +and will only be known by, the +holder; the second part, the |nym_domain|, may be specified by either the holder +or the verifier, and will be shared between the holder and verifier. +An issuer binds a credential to a |nym_secret| during the issuance process. +A holder can then compute pseudonyms from the |nym_secret| and prove to +verifiers that these pseudonyms are bound to the credential the are presenting. +Cryptographic pseudonyms computed from the same |nym_secret| but different +|nym_domain| values are unlinkable. +

    +

    +The holder might choose a |nym_domain| to give themselves a pseudonym for some +type of public forum, e.g., choose |nym_domain| = "Mark Twain". +The cryptographic pseudonym calculated by the holder from this |nym_domain| +with their |nym_secret| is essentially unique, and no entity that does not both +know the |nym_secret| and possess the base verifiable credential bound to the +pseudonym could assert this pseudonymous identity. Note that the doublet of +(|nym_domain|, pseudonym) has to be sent with the derived credential to assert +this pseudonymous identity. +

    +

    +In a different situation, a holder may be using a service from a verifier where +the verifier wants to track visits over time or monitor use of some resource by +the holder. In this case, the verifier chooses the |nym_domain| that the holder +needs to use when presenting their derived credential. For example, a +verifier might specify a public |nym_domain| tied to their DNS domain (e.g., +`"www.nym.example"`) for the holder to use. A verifier could also +demonstrate that they support data minimization, of a sort, by periodically +changing the |nym_domain| (e.g., tying it to a date, +`"www.nym.example/2025-01-02"`). This specification does not dictate +values for the |nym_domain|. +

    +

    +Finally, to prevent a malicious holder who obtains another holder's +|nym_secret| from getting a credential bound to that value, the operations +from the [[CFRG-Pseudonym-BBS-Signature]] have the issuer add a randomization +factor, |signer_nym_entropy|, that is securely "mixed" with the holder's +portion, the |prover_nym|, during signature generation. This results in a +|nym_secret| for which the issuer can provide cryptographic assurance that +it is unique, to be used by the holder. +

    +

    +An outline of the creation and use of credential-bound pseudonyms is shown in +the steps below. +

    +
      +
    1. +The holder creates a secure value, known as the |prover_nym|, that should be +at least 32 bytes long and generated in cryptographically random manner. They +then use the "`Commitment`" operation from [[CFRG-Pseudonym-BBS-Signature]] +with an empty |committed_messages| array to compute +the |commitment_with_proof| and the |secret_prover_blind|. The holder sends the +|commitment_with_proof| to the issuer with a request for a credential, but never +discloses |prover_nym| and |secret_prover_blind|, keeping them for later use. +
    2. +
    3. +The issuer receives the holder's request for a credential with a bound pseudonym +(|featureOption| equals `"pseudonym"`), along with the |commitment_with_proof|. +The issuer generates a cryptographically random value for the +|signer_nym_entropy| and uses the "Blind Issuance" operation from +[[CFRG-Pseudonym-BBS-Signature]] to produce the base proof. Among other +information, the base proof will contain the |signer_nym_entropy| value. If the +issuer might ever need to reissue a credential to this holder that is bound to +the same |nym_secret|, they should retain the |signer_nym_entropy| value; +otherwise, this value can be discarded. +
    4. +
    5. +On receipt of the credential with bound pseudonym, the holder uses the procedures +in this specification, along with the "Verification and Finalization" operation +from [[CFRG-Pseudonym-BBS-Signature]] with an empty |committed_messages| array, +to both verify the signature and compute the |nym_secret| value. This operation +uses the |prover_nym|, |signer_nym_entropy|, and |secret_prover_blind| values, +amongst others. If third-party monitoring is being used, then the |nym_secret| +value will need to be securely shared with the monitoring organization. +
    6. +
    7. +When a holder wants to generate a derived proof bound to a pseudonym, they need +to determine the |nym_domain|. As previously noted, this might be specified by +the verifier or set by the holder, depending on the usage scenario. They then use +the procedures in this specification with the "Proof Generation with Pseudonym" +operation from [[CFRG-Pseudonym-BBS-Signature]] to produce the derived proof. +This operation takes as inputs the |nym_secret|, |nym_domain|, empty +|committed_messages| array, and +|secret_prover_blind|, amongst others. In addition to providing the raw +cryptographic proof value, it also returns the |pseudonym| value that gets +included in the derived proof. +
    8. +
    9. +When a verifier receives a derived proof with bound pseudonym, they use the +procedures in this specification along with the +"Proof Verification with Pseudonym" operation from +[[CFRG-Pseudonym-BBS-Signature]] to validate the derived proof. Note that these +procedures will also validate that the specified |nym_domain| was used in the +computation of the |pseudonym|. +
    10. +
    +
    -

    Pseudonyms with Hidden PID

    +

    Holder Binding and Pseudonyms

    -This feature is a privacy preserving enhancement that allows a verifier that has -seen a selectively revealed document with derived proof from a holder to -recognize that the same holder is presenting a new selectively revealed document -with derived proof. Note that this may just be a new unlinkable proof (derived -proof) on the same selectively revealed information. By "privacy preserving," we -mean that no uniquely identifiable information is added that would allow tracking -between different verifiers that may share information amongst themselves and/or -with the issuer. +Anonymous holder binding and credential-bound pseudonyms are, in a sense, +orthogonal features, and a holder and credential ecosystem may wish to use both +at the same time. For instance, a holder may wish to bind a verifiable +credential to a |holder_secret|, so that only a holder knowing this value can +generate a derived proof from the base proof, and bind a |nym_secret| to the +base proof so that pseudonyms can be bound to the derived proof. This +corresponds to the |featureOption| being equal to `"holder_binding_pseudonym"`.

    -To provide for this capability, a holder needs to generate a secret |pid| value -that should be at least 32 bytes long and generated in cryptographically random -manner. The holder then uses the "Commitment Generation" procedure of -[[CFRG-Blind-BBS-Signature]] to generate a |commitment_with_proof| value and -a private |secret_prover_blind| value. -This value needs to be conveyed to the issuer who will use it in the issuance -of a document with base proof, in accordance with -[[CFRG-Pseudonym-BBS-Signature]], which is sent to the holder. The |pid| -value is never shared by the holder. If the issuer chooses to use the optional -|signer_blind| parameter when creating the signature in this value needs to be -conveyed to the holder as part of the base proof value. -

    -

    -The holder obtains a |verifier_id| associated with the verifier for which -they intend to create a revealed document with derived proof. Using the -procedures of [[CFRG-Pseudonym-BBS-Signature]], a cryptographic |pseudonym| -value is generated from their |pid| value and the |verifier_id|. The derived -proof value is generated via the proof generation using the |pid|, -|secret_prover_blind|, |verifier_id|, and |signer_blind| using the -procedures of [[CFRG-Pseudonym-BBS-Signature]], -and this value is given to the -verifier along with the |pseudonym|. Note that the |pid| value cannot be -recovered from the |pseudonym|. -

    -

    -When the verifier receives the revealed document with derived proof and -|pseudonym|, they use the proof verification procedures of -[[CFRG-Pseudonym-BBS-Signature]]. +An outline of the creation and use of both anonymous holder binding and +credential bound pseudonyms is given in the following steps.

    +
      +
    1. +The holder creates two secure values known as the |holder_secret| and +|prover_nym| that should be at +least 32 bytes long and generated in cryptographically random manner. They then +use the "Commitment" operation from [[CFRG-Pseudonym-BBS-Signature]] with the +|committed_messages| array input containing the |holder_secret| as its only +element, to compute the |commitment_with_proof| and |secret_prover_blind|. The +|commitment_with_proof| is sent with their request to the issuer for a +credential while the |holder_secret|, |prover_nym| and |secret_prover_blind| are +kept for later use by the holder and are never disclosed. +
    2. +
    3. +The issuer receives the holders request for a credential with a bound pseudonym, +|featureOption| equals `"pseudonym"`, along with the |commitment_with_proof|. +The issuer uses the procedures in this specification and generates a +cryptographically random value for the |signer_nym_entropy| and uses the +"Blind Issuance" operation from [[CFRG-Pseudonym-BBS-Signature]] to produce the +base proof. Among other information the base proof will contain the +|signer_nym_entropy| value. If the issuer ever needs reissue a credential to +this holder that is bound to the same |nym_secret| they should retain the +|signer_nym_entropy| value, otherwise this value can be discarded. +
    4. +
    5. +The holder on receipt of the credential with bound pseudonym uses the procedures +in this specification along with the "Verification and Finalization" operation +from [[CFRG-Pseudonym-BBS-Signature]] with the |committed_messages| array +containing the |holder_secret| as its only element, +to both verify the signature and compute +the |nym_secret| value. This operation uses the |holder_secret|, |prover_nym|, +|signer_nym_entropy|, and |secret_prover_blind| values amongst others. If third +party monitoring is being utilized then the |nym_secret| value would be securely +shared with the monitoring organization. +
    6. +
    7. +When the holder wants to generate a derived proof bound to a pseudonym they need +to determine the |nym_domain|. As previously stated this might be specified by +the verifier or set by the holder depending on the usage scenario. They then use +the procedures in this specification and the "Proof Generation with Pseudonym" +operation from [[CFRG-Pseudonym-BBS-Signature]] to produce the derived proof. +This operation takes as inputs the |nym_secret|, |nym_domain|, the +|committed_messages| array containing the |holder_secret| as its only element, +and |secret_prover_blind| amongst others. In addition to providing the raw +cryptographic proof value it also returns the |pseudonym| value that gets +included in the derived proof. +
    8. +
    9. +When a verifier receives a derived proof with bound pseudonym they use the +procedures in this specification along with the +"Proof Verification with Pseudonym" operation from +[[CFRG-Pseudonym-BBS-Signature]] to validate the derived proof. Note that these +procedures will also validate that the specified |nym_domain| was used in the +computation of the |pseudonym|. +
    10. +
    +

    Optional Feature Summary

    @@ -1918,21 +2074,23 @@

    Optional Feature Summary

    Anonymous Holder Binding - baseline + selected index adjustment - baseline + commitment with proof to holder secret from holder + baseline + baseline + commitment with proof from holder Blind BBS - Pseudonym with Issuer Pid - baseline + Generate pid - baseline + Credential-Bound Pseudonyms + baseline + generate |signer_nym_entropy| + baseline + |signer_nym_entropy|, commitment with proof + from holder Pseudonym BBS - Pseudonym with Hidden Pid - baseline - baseline + commitment with proof to secret pid from holder - Pseudonym/Blind BBS + Holder Binding and Pseudonyms + baseline + generate |signer_nym_entropy| + baseline + |signer_nym_entropy|, + commitment with proof from holder + Pseudonym BBS @@ -1955,17 +2113,17 @@

    Optional Feature Summary

    Anonymous Holder Binding `0xd9`, `0x5d`, and `0x04` - baseline + signerBlind + baseline - Pseudonym with Issuer Pid + Credential-Bound Pseudonyms `0xd9`, `0x5d`, and `0x06` - baseline + pid + baseline + |signer_nym_entropy| - Pseudonym with Hidden Pid + Holder Binding and Pseudonyms `0xd9`, `0x5d`, and `0x08` - baseline + signerBlind + baseline + |signer_nym_entropy| @@ -1984,26 +2142,36 @@

    Optional Feature Summary

    Baseline BBS BBS derived proof generation from VC with base proof - baseline: (from base proof serialization) bbsSignature, bbsHeader, publicKey, hmacKey, and mandatoryPointers; selectivePointers (holders choice) + baseline: (from base proof serialization) + bbsSignature, bbsHeader, publicKey, hmacKey, and + mandatoryPointers; selectivePointers (holders choice) BBS Anonymous Holder Binding baseline - baseline + holder secret, prover blind (both known to holder), signer blind (included in base proof from issuer) + baseline + |holder_secret|, |prover_blind| (both + known to holder) Blind BBS - Pseudonym with Issuer Pid - baseline + Generate pseudonym - baseline + verifier id (from verifier), pid (included in base from issuer) + Credential Bound Pseudonyms + baseline + compute |nym_secret|, compute |pseudonym| + + baseline + |prover_nym|, + |prover_blind| (all known to holder), |signer_nym_entropy| + (included in base from issuer), |nym_domain| Pseudonym BBS - Pseudonym with Hidden Pid - baseline + Generate pseudonym - baseline + pid, prover blind (both known to holder), signer blind (included in base from issuer), verifier id (from verifier) - Pseudonym/Blind BBS + Holder Binding and Pseudonyms + baseline + compute |nym_secret|, compute |pseudonym| + + baseline + |holder_secret|, |prover_nym|, + |prover_blind| (all known to holder), |signer_nym_entropy| + (included in base from issuer), |nym_domain| + + Pseudonym BBS @@ -2021,7 +2189,9 @@

    Optional Feature Summary

    Baseline BBS `0xd9`, `0x5d`, and `0x03` - baseline: bbsProof, compressedLabelMap, mandatoryIndexes, selectiveIndexes, presentationHeader + baseline: bbsProof, compressedLabelMap, + mandatoryIndexes, selectiveIndexes, presentationHeader + Anonymous Holder Binding @@ -2029,15 +2199,21 @@

    Optional Feature Summary

    baseline - Pseudonym (issuer known and hidden) + Credential Bound Pseudonyms `0xd9`, `0x5d`, and `0x07` - baseline + pseudonym + baseline + |pseudonym|, |nym_domain| + + + Holder Binding and Pseudonyms + `0xd9`, `0x5d`, and `0x09` + baseline + |pseudonym|, |nym_domain| - + @@ -2048,7 +2224,10 @@

    Optional Feature Summary

    - + @@ -2057,8 +2236,17 @@

    Optional Feature Summary

    - - + + + + + + + @@ -2833,7 +3021,222 @@

    External VC System Based Linkage

    Test Vectors

    -

    +

    +

    Baseline Basic Example

    +

    +The document test +vectors are based on a purely fictitious permanent resident card, and broken +into two groups — those +that would be generated by the issuer ("base proof"), and those that would be +generated by the holder ("derived proof"). +

    +
    +
    Base Proof
    +

    +To add a selective disclosure base proof to a document, the issuer needs +the following cryptographic key material: +

    +
      +
    1. +The issuer's private/public key pair, i.e., the key pair corresponding to the +verification method that will be part of the proof. +
    2. +
    3. +An HMAC key. This is used to randomize the order of the blank node IDs to avoid +potential information leakage via the blank node ID ordering. This is used only +once, and is shared between issuer and holder. The HMAC in this case is +functioning as a pseudorandom function (PRF). +
    4. +
    +

    +The key material used for generating the test vectors to test add base +proof is shown below. Hexadecimal representation is used for the BBS key +pairs and the HMAC key. +

    +
    +          
    +

    +In our scenario, a permanent resident credential is being issued. The unsigned +permanent resident document is shown below. +

    +
    
    +          

    +This mandatory information is specified via an array of JSON pointers, +as shown below. +

    +
    
    +          

    +The result of applying the above JSON pointers to the document +is shown below. +

    +
    
    +          

    +Transformation of the unsigned document begins with canonicalizing the document, +as shown below. +

    +
    
    +          

    +To prevent possible information leakage via the ordering of the blank node IDs, +these IDs are processed through a PRF (i.e., the HMAC) to give the canonicalized +HMAC document shown below. This represents an ordered list of statements that will +be subject to "mandatory" and "selective" (or "non-mandatory") disclosure, i.e., +when these statements are grouped based on their disclosure requirements, they +will still be ordered as in this list. +

    +
    
    +          

    +The list from the canonical document above gets grouped into mandatory and +non-mandatory statements. The final output of the selective disclosure +transformation process is shown below. Note that the statements are now grouped +as mandatory or non-mandatory disclosure, and the index of each statement in +the previous list is remembered. +

    +
    
    +          

    +The next step is to create the base proof configuration and canonicalize it. +This is shown in the following two examples. +

    +
    
    +          
    
    +          

    +In the hashing step, we compute the SHA-256 hash of the canonicalized proof +options to produce the `proofHash`, and we compute the SHA-256 hash of the +`JOIN` of all the mandatory N-Quads to produce the `mandatoryHash`. These are +shown below in hexadecimal format. +

    +
    
    +          

    +Shown below are the computed `bbsSignature` in hexadecimal, and the +`mandatoryPointers`. These are are fed to the final serialization step with the +`hmacKey`. +

    +
    
    +          

    +Finally, the values above are run through the algorithm of Section +, to produce the `proofValue` which is +used in the signed base document, as shown below. +

    +
    
    +        
    +
    +
    Derived Proof
    +

    +Random numbers are used, and an optional `presentationHeader` can be an +additional input, for the creation of BBS proofs. To furnish a +deterministic set of test vectors, we used the Mocked Random Scalars +procedure from [[CFRG-BBS-SIGNATURE]]. The `seed` and `presentationHeader` values +we used for generation of the derived proof test vectors are given in hex, below. +

    +
    
    +          

    +To create a derived proof, a holder starts with a signed document +containing a base proof. The base document we will use for these test vectors is +the final example from Section , above. The first +step is to run the algorithm of Section to +recover `bbsSignature`, `hmacKey`, and `mandatoryPointers`, as shown below. +

    +
    
    +          

    +Next, the holder needs to indicate what non-mandatory statements, if any, they +wish to reveal to the verifiers, by specifying JSON pointers for selective +disclosure. These are shown below. +

    +
    
    +          

    +To produce the `revealDocument` (i.e., the unsigned document that will +eventually be signed and sent to the verifier), we append the selective pointers +to the mandatory pointers, and input these combined pointers along with the +document without proof to the `selectJsonLd` algorithm of [[DI-ECDSA]]. +This gets the result shown below. +

    +
    
    +          

    +Now that we know what the reveal document looks like, we need to furnish +appropriately updated information to the verifier about which statements are +mandatory, and the indexes of the selected non-mandatory statements. Running +step 6 of the + yields abundant information about +various statement groups relative to the original document. Below, we show a +portion of the indexes for those groups. +

    +
    
    +          

    +The verifier needs to be able to aggregate and hash the mandatory statements. To +enable this, we furnish them with a list of the indexes of the mandatory statements, +adjusted to their positions in the reveal document (i.e., relative to the +`combinedIndexes`), while the `selectiveIndexes` are adjusted relative to +their positions within the `nonMandatoryIndexes`. These "adjusted" indexes are +shown below. +

    +
    
    +
    +          

    +The last important piece of disclosure data is the `labelMap`, a mapping of +canonical blank node IDs to HMAC-based shuffled IDs, computed according to +Section . This is shown below, along with +the rest of the disclosure data, minus the reveal document. +

    +
    
    +          

    +Finally, using the disclosure data above with the algorithm of Section +, we obtain the signed derived (reveal) +document shown below. +

    +
    
    +        
    +
    + +
    +

    Baseline Enhanced Example

    +

    Demonstration of selective disclosure features including mandatory disclosure, selective disclosure, and overlap between those, requires an input credential document with more content than previous test @@ -2844,7 +3247,7 @@

    Test Vectors

    generated by the holder (derived proof).

    -

    Base Proof

    +
    Base Proof

    To add a selective disclosure base proof to a document, the issuer needs the following cryptographic key material: @@ -2966,7 +3369,7 @@

    Base Proof

    data-include-format="text">
    -

    Derived Proof

    +
    Derived Proof

    Random numbers are used, and an optional `presentationHeader` can be an input, for the creation of BBS proofs. To furnish a deterministic set of test @@ -3053,31 +3456,32 @@

    Derived Proof

    data-include="TestVectors/derivedRevealDocument.json" data-include-format="text">
    +
    +
    +

    Anonymous Holder Binding Feature

    -

    Anonymous Holder Binding Feature

    -
    -
    Holder Binding Commitment Generation
    -

    +

    Holder Binding Commitment Generation
    +

    The first steps in using the anonymous holder binding feature are for the -holder to generate its |holderSecret| value and then compute a commitment with -proof for this value according to the commitment computation procedure +holder to generate their |holderSecret| value, and then compute a commitment with +proof for this value, according to the commitment computation procedure of [[CFRG-Blind-BBS-Signature]]. Example values and outputs of this procedure are shown below. -

    -
    +          
    
    -            
    
    -            

    -The |holderSecret| and |secretProverBlind| are retained by the holder and kept -secret. The |commitmentWithProof| value needs to be communicated to the issuer. -

    -
    -
    -
    Holder Binding Base Proof
    +

    +The |holderSecret| and |secretProverBlind| are to be retained and kept secret by +the holder. The |commitmentWithProof| value is to be communicated to the issuer. +

    +
    +
    +
    Holder Binding Base Proof

    The addition of a base proof under the anonymous holder binding option begins with the issuer receiving a |commitmentWithProof| value from the holder and then @@ -3093,14 +3497,6 @@

    Holder Binding Base Proof
    data-include-format="text">

    -As part of the blind signature generation from -[[CFRG-Blind-BBS-Signature]], one can include a |signer_blind| which we show -below. -

    -
    
    -          

    In this scenario, we consider an electronic version of a drivers license.

    Holder Binding Base Proof
     
     procedure.
     Shown below are the computed |bbsSignature|, |bbsHeader|, |publicKey|,
    -|hmacKey|, |mandatoryPointers|, |signerBlind|, and |featureOption|, where byte
    +|hmacKey|, |mandatoryPointers|, and |featureOption|, where byte
     data is shown in hexadecimal.
               

    Holder Binding Derived Proof
     the final example from Section , above.
     The first step is to run the algorithm of Section
      to
    -recover |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, |mandatoryPointers|,
    -|signerBlind|, and |featureOption| as shown below.
    +recover |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|,
    +|mandatoryPointers|, and |featureOption|, as shown below.
               

    Holder Binding Derived Proof
               data-include-format="text">
    +
    -

    Pseudonym with Issuer-known PID Feature

    +

    Credential Bound Pseudonym Feature

    -
    Issuer PID Base Proof
    +
    Prover Nym Commitment Generation
    +

    +The first steps in using the credential-bound pseudonym feature are for +the holder to generate their secret |prover_nym| value, and then compute a +commitment with proof for this value according to the "Commitment" operation +from [[CFRG-Pseudonym-BBS-Signature]]. Example values and outputs of this procedure +are shown below. +

    +
    
    +            
    
    +            

    +The |prover_nym| and |secretProverBlind| are to be retained and kept secret by +the holder. The |commitmentWithProof| value is to be communicated to the issuer. +

    +
    +
    +
    Pseudonym Base Proof
    +

    +The addition of a base proof under the pseudonym feature option begins +with the issuer receiving a |commitmentWithProof| value from the holder and +generating a cryptographically random value for |signer_nym_entropy|. +

    +
    
                 

    -To issue a credential under the pseudonym with issuer-known PID feature, -the issuer generates a cryptographically random |pid| value for a holder. This -value is shared with the holder but is otherwise kept secret. This value is -shown below. -

    -
    
    -          

    This example will make use of the same key material as shown in , the same unsigned document as shown in , and the same mandatory pointers as shown in . This results in the -same canonical document as in -, the same HMAC document -as in +same canonical document as shown in +, +the same canonical HMAC document as shown in , and the same "add -base transformation" as in +base transformation" as shown in .

    -This example makes use of the same proof configuration as +This example makes use of the same proof configuration as in . This results in the same canonical base proof as in . @@ -3323,122 +3740,136 @@

    Issuer PID Base Proof
    .

    -Since |featureOption| is equal to `"pseudonym_issuer_pid"`, the procedure of -section Base Proof -Serialization will produce the output shown below. This makes use of the +Since |featureOption| is equal to `"pseudonym"`, the procedure of +section will produce the +output shown below. This makes use of the signature generation algorithm of [[CFRG-Pseudonym-BBS-Signature]]. Note the -inclusion of the -|pid| value, as this needs to be communicated to the holder. +inclusion of the |signer_nym_entropy| and |featureOption| values, as these +need to be communicated to the holder.

    -
    
               

    -Finally, the values above are run through the algorithm of Section -, to produce the `proofValue` which is +Finally, the values above are run through the algorithm of section +, producing the `proofValue` which is used in the signed base document shown below.

    -
    
               
    -
    -
    Issuer PID Derived Proof
    +
    Pseudonym Derived Proof

    -As explained in section , we use a -mocked random number generation procedure and demonstrate the use of a -|presentationHeader|. The same |seed| and |presentationHeader| -as given in +As explained in section , we used a +mocked random number generation procedure to demonstrate the use of a +|presentationHeader|. The same |seed| and |presentationHeader| as given in are used here. -

    -

    +

    +

    To create a derived proof, a holder starts with a signed document containing a base proof. The base document we will use for these test vectors is -the final example from -, above. The first +from +, above. The first step is to run the algorithm of Section to -recover |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, |mandatoryPointers|, -|pid|, and |featureOption|, as shown below. -

    -
    
    -            

    -Next, the holder needs to indicate what else, if anything, they wish to reveal -to the verifiers, by specifying JSON pointers for selective disclosure. In this -case, the holder reveals the same information as given in -. This results -in the same |revealDocument| -as shown in -. -

    -

    +recover |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, +|mandatoryPointers|, |signer_nym_entropy|, and |featureOption|, as shown below. +

    +
    
    +          

    +Next, the holder uses the the "Verification and Finalization" operation from +[[CFRG-Pseudonym-BBS-Signature]] to both verify the signature and compute the +|nym_secret| value. This operation uses the |prover_nym|, +|signer_nym_entropy|, and |secret_prover_blind| values, amongst others. +

    +
    
    +          

    +Next, the holder needs to indicate what non-mandatory statements, if any, they +wish to reveal to the verifiers, by specifying JSON pointers for selective +disclosure. In this case, the holder reveals the same information as given in +. +This results in the same |revealDocument| +as shown in . +

    Running yields the same information for -"derived group indexes" as shown in - and for -"adjusted mandatory and selective indexes" as shown in +derived group indexes as shown in + and the same +adjusted mandatory and selective indexes as shown in . -

    -

    +

    +

    Within , we compute the |pseudonym| based on -the |verfifier_id| shown below. -

    -
    
    -            

    +the same |verfifier_id| shown in . The final output of is shown below. Note -the inclusion of the computed |pseudonym| and the |featureOption| value. -

    -
    
    -            

    -Finally, using the disclosure data above with the algorithm of Section +the inclusion of the |featureOption| and computed |pseudonym| values. +

    +
    
    +          

    +Finally, using the disclosure data above with the algorithm of section , we obtain the signed derived (reveal) document shown below. -

    -
    
    +          

    +
    
               
    +
    -

    Pseuonym with Hidden PID Feature

    +

    Holder Binding and Pseudonym Feature

    -
    Hidden PID Commitment Generation
    +
    Holder Secret and Prover Nym Commitment Generation

    -The first steps in using the pseudonym with hidden PID feature are for the -holder to generate its secret |pid| value and then compute a commitment with -proof for this value according to the commitment computation procedure -of [[CFRG-Blind-BBS-Signature]]. Example values and outputs of this procedure +The first steps in using the holder binding and pseudonym feature are +for +the holder to generate its |holder_secret| and |prover_nym| values, and +then compute a +commitment with proof for these values, according to the "Commitment" operation +from [[CFRG-Pseudonym-BBS-Signature]]. Example values and outputs of this procedure are shown below.

    -
    
    +            
    
                 
    
                 

    -The |pid| and |secretProverBlind| are retained by the holder and kept -secret. The |commitmentWithProof| value needs to be communicated to the issuer. +The |holder_secret|, |prover_nym|, and |secretProverBlind| need to be retained +and kept secret by the holder. The |commitmentWithProof| value needs to be +communicated to the issuer.

    -
    Hidden PID Base Proof
    +
    Holder Binding and Pseudonym Base Proof
    +

    +The addition of a base proof under the pseudonym feature option begins +with the issuer receiving a |commitmentWithProof| value from the holder and +generating a cryptographically random value for |signer_nym_entropy|. +

    +
    
                 

    -The addition of a base proof under the pseudonym with hidden PID option begins -with the issuer receiving a |commitmentWithProof| value from the holder and then -verifying that value with the commitment verification procedure of -[[CFRG-Blind-BBS-Signature]]. This example will make use of the same key material as shown in , -the same unsigned document as shown in +and the same unsigned document as shown in , and the same mandatory pointers as shown in . This results in the @@ -3458,16 +3889,16 @@

    Hidden PID Base Proof
    .

    -Since |featureOption| is equal to `"pseudonym_hidden_pid"`, the procedure of +Since |featureOption| is equal to `"holder_binding_pseudonym"`, the procedure of section will produce the output shown below. This makes use of the signature generation algorithm of [[CFRG-Pseudonym-BBS-Signature]]. Note the -inclusion of the |featureOption| as well as the |signerBlind| value, as these +inclusion of the |signer_nym_entropy| and |featureOption| values, as these need to be communicated to the holder.

    
               

    Finally, the values above are run through the algorithm of section @@ -3475,12 +3906,12 @@

    Hidden PID Base Proof
    used in the signed base document shown below.

    
               
    -
    Hidden PID Derived Proof
    +
    Holder Binding and Pseudonym Derived Proof

    As explained in section , we use a mocked random number generation procedure and demonstrate the use of a @@ -3491,17 +3922,28 @@

    Hidden PID Derived Proof
    To create a derived proof, a holder starts with a signed document containing a base proof. The base document we will use for these test vectors is from -, above. The first +, above. The first step is to run the algorithm of Section to -recover |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, |mandatoryPointers|, -|signerBlind|, and |featureOption|, as shown below. +recover |bbsSignature|, |bbsHeader|, |publicKey|, |hmacKey|, +|mandatoryPointers|, |signer_nym_entropy|, and |featureOption|, as shown below.

    
               

    -Next, the holder needs to indicate what else, if anything, they wish to reveal +Next, the holder uses the the "Verification and Finalization" operation from +[[CFRG-Pseudonym-BBS-Signature]] to both verify the signature and compute the +|nym_secret| value. This operation uses the |holder_secret|, |prover_nym|, +|signer_nym_entropy|, and |secret_prover_blind| values, amongst others. +

    +
    
    +          

    +Next, the holder needs to indicate what non-mandatory statements, if any, +they wish to reveal to the verifiers, by specifying JSON pointers for selective disclosure. In this case, the holder reveals the same information as given in . @@ -3518,10 +3960,10 @@

    Hidden PID Derived Proof
    Within , we compute the |pseudonym| based on the same |verfifier_id| shown in . The final output of is shown below. Note -the inclusion of the computed |pseudonym| and the |featureOption| value. +the inclusion of the the |featureOption| and computed |pseudonym| values.

    -
    
               

    Finally, using the disclosure data above with the algorithm of section @@ -3529,8 +3971,8 @@

    Hidden PID Derived Proof
    document shown below.

    
               
    Table 5 Verify Derived: Inputs and Algorithms. Table 5 Verify Derived: Inputs and Algorithms. +
    Name
    BBS baselinebaseline: (from derived proof serialization) bbsProof, compressedLabelMap, mandatoryIndexes, selectiveIndexes, presentationHeaderbaseline: (from derived proof serialization) + bbsProof, compressedLabelMap, mandatoryIndexes, + selectiveIndexes, presentationHeader + BBS
    Blind BBS
    Pseudonym (issuer known and hidden)baseline + verifier id (known to verifier), pseudonym (included in derived proof)Credential-Bound Pseudonymsbaseline + |pseudonym| (included in derived proof), + |nym_domain| + Pseudonym BBS
    Holder Binding and Pseudonymsbaseline + |pseudonym| (included in derived proof), + |nym_domain| + Pseudonym BBS