vc di sd

2025-12-10 0 743

@transmute/vcdisd

Questions? Contact Transmute

? Warning Experimental

Experimental implementation inspired by but not compatible with:

  • https://g*i*th*ub.com/digitalbazaar/di-sd-primitives
  • https://**git*hub.com/digitalbazaar/ecdsa-sd-2023-cryptosuite

Currently all the canonicalization stuff is the same.

… but there are plans to investigate replacing urdna2015 with JSON Pointer.
… since JSON Pointer is already a dependency.

  • JWK and JWS are used instead of multiformats & multicodec & custom cbor packing…
  • did:jwk is used instead ofdid:key

Usage

npm i @transmute/vc-di-sd --save

Develop

npm i
npm t
npm run lint
npm run build
import sd from \'@transmute/vc-di-sd\'
const canonicalization = \'urdna2015\'

Examples

const k = await sd.jose.controller.key.generate(alg)
const signer = await sd.jose.controller.signer(k.privateKeyJwk)
const verifier = await sd.jose.controller.verifier(k.publicKeyJwk)
const credential = await sd.jose.sign({
  signer,
  document: exampleVerifiableCredential,
  mandatoryPointers: [\'/credentialSubject/driverLicense/issuingAuthority\'],
  canonicalization,
  documentLoader,
})
const presentation = await sd.jose.present({
  verifier,
  document: credential,
  selectivePointers: [\'/credentialSubject/driverLicense/dateOfBirth\'],
  canonicalization,
  documentLoader,
})
const verification = await sd.jose.verify({
  verifier,
  document: presentation,
  canonicalization,
  documentLoader,
})
ES256
Controller
{
  \"id\": \"did:jwk:eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwiYWxnIjoiRVMyNTYiLCJ4IjoidzFwTnZTSnlaZjlFXzRpS29vT1VaeGFKUXd2QUhiX1Y5c2ZsSG5mU2s2ZyIsInkiOiJsYXg4ZWc3NEZKVlVZaG5BdmFKa2xkT1RwZVFMUmJTYjl3WVNqUU1iNWhRIn0#0\",
  \"type\": \"JsonWebKey\",
  \"controller\": \"did:jwk:eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwiYWxnIjoiRVMyNTYiLCJ4IjoidzFwTnZTSnlaZjlFXzRpS29vT1VaeGFKUXd2QUhiX1Y5c2ZsSG5mU2s2ZyIsInkiOiJsYXg4ZWc3NEZKVlVZaG5BdmFKa2xkT1RwZVFMUmJTYjl3WVNqUU1iNWhRIn0\",
  \"publicKeyJwk\": {
    \"kty\": \"EC\",
    \"crv\": \"P-256\",
    \"alg\": \"ES256\",
    \"x\": \"w1pNvSJyZf9E_4iKooOUZxaJQwvAHb_V9sflHnfSk6g\",
    \"y\": \"lax8eg74FJVUYhnAvaJkldOTpeQLRbSb9wYSjQMb5hQ\"
  },
  \"privateKeyJwk\": {
    \"kty\": \"EC\",
    \"crv\": \"P-256\",
    \"alg\": \"ES256\",
    \"x\": \"w1pNvSJyZf9E_4iKooOUZxaJQwvAHb_V9sflHnfSk6g\",
    \"y\": \"lax8eg74FJVUYhnAvaJkldOTpeQLRbSb9wYSjQMb5hQ\",
    \"d\": \"scMGSKpUnBfAmEcNvECrpneNlVOqrZGUUcK60_T6IIw\"
  }
}
Credential
{
  \"@context\": [
    \"https://www.***w3.org/2018/credentials/v1\",
    \"https://www.tx*d*m*v.gov/credentials/v1\",
    \"https://w3id.org***/security/data-integrity/v1\"
  ],
  \"type\": [\"VerifiableCredential\", \"DriverLicenseCredential\"],
  \"issuer\": \"did:web:txdmv.gov\",
  \"issuanceDate\": \"2010-01-01T19:23:24Z\",
  \"credentialSubject\": {
    \"driverLicense\": {
      \"type\": \"DriverLicense\",
      \"documentIdentifier\": \"T21387yc328c7y32h23f23\",
      \"dateOfBirth\": \"01-01-1990\",
      \"expirationDate\": \"01-01-2030\",
      \"issuingAuthority\": \"TX\"
    }
  },
  \"proof\": {
    \"type\": \"DataIntegrityProof\",
    \"created\": \"2023-06-04T22:35:08.444Z\",
    \"cryptosuite\": \"di-sd-urdna2015-jose-2042\",
    \"proofPurpose\": \"assertionMethod\",
    \"verificationMethod\": \"did:web:txdmv.gov#urn:ietf:params:oauth:jwk-thumbprint:sha-256:MggqrOi2MEJR1qOeF8Q9gKRxUNB9vrjbwqogJ1Er8k8\",
    \"keys\": [
      {
        \"kid\": \"#disclosure\",
        \"kty\": \"EC\",
        \"crv\": \"P-256\",
        \"alg\": \"ES256\",
        \"x\": \"jYId68wSRiE4juVnaWW0V6BcJ_ZDItX12XUMc70lkmU\",
        \"y\": \"Mmnw8koRUqgIx4IAt5xpEgewa0LZ6qnM0k10gya9opE\",
        \"claimset_formats_supported\": [\"w3cvc-jsonld\"],
        \"claimset_claims_supported\": [
          \"/credentialSubject/driverLicense/issuingAuthority\"
        ]
      },
      {
        \"kid\": \"#hmac\",
        \"kty\": \"oct\",
        \"alg\": \"HS256\",
        \"use\": \"sig\",
        \"key_ops\": [\"sign\"],
        \"k\": \"hel_3wNuO5XYf-qs9-WiwWvC3vF8Ex0DisC_Lf924zI\"
      },
      {
        \"kid\": \"#mandatory\",
        \"kty\": \"oct\",
        \"k\": \"Kkchlbnz5M0gUEmsvqHWY1d0gYR3Gjzh5DTivzD7UVk\"
      },
      {
        \"kid\": \"#proof\",
        \"kty\": \"oct\",
        \"k\": \"N3ZIo4DTV7KVVThNNMceBE9eQKWpoKkCBXdyseM2_ok\"
      }
    ],
    \"signature\": \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..AmwQsW61wdJDUvJjtuZ5sEFfnJWXvfjF3vGWE6FEWf-WbuvRZvYIZpee-c6h_7HP2MSnXw9nTPLxn5ucwokbsQ\",
    \"signatures\": [
      \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..P99od2sunRa0LhuTBsDexzBduPk-YowUFfLyQ5UMqspEjx-5ejXApFWthndCSqyjxHbv0B3VvF7wxghW7lDdhA\",
      \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..8v4rcYfMuKRkAtLZucMpPegDw70TklsRUCHjvXF7Q998hqVZqBXnczwaYxcxvpFd2e_GAhNkNMzwQHw3lN_Wcw\",
      \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..b3nmlkqKvnD39gqid49_HQ5tDyayr8l_AdfEGEixwM9u196Plf67axDNnoMC5ClL9exxqC21EbQgGYPYEp_EhA\",
      \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..IMJcjf0s9YteSsy090M9BPzyYAc43Kkek8Rj0XnvVdIMDgzpHaAceizJymcWV7z9Ev2IBgJF2Ug56Shp2nxBWg\",
      \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..73PiUdCyaYh6B1WJw3wI3Hx6YynElpmFt4YCgOiGejjiyJyXBoDWzaxzteyTuPMpxT4pDxuPAFkgLnJUbv-RXw\"
    ]
  }
}
Presentation
{
  \"@context\": [
    \"https://www.***w3.org/2018/credentials/v1\",
    \"https://www.tx*d*m*v.gov/credentials/v1\",
    \"https://w3id.org***/security/data-integrity/v1\"
  ],
  \"type\": [\"VerifiableCredential\", \"DriverLicenseCredential\"],
  \"credentialSubject\": {
    \"driverLicense\": {
      \"type\": \"DriverLicense\",
      \"dateOfBirth\": \"01-01-1990\",
      \"issuingAuthority\": \"TX\"
    }
  },
  \"proof\": {
    \"type\": \"DataIntegrityProof\",
    \"created\": \"2023-06-04T22:35:08.444Z\",
    \"cryptosuite\": \"di-sd-urdna2015-jose-2042\",
    \"proofPurpose\": \"assertionMethod\",
    \"verificationMethod\": \"did:web:txdmv.gov#urn:ietf:params:oauth:jwk-thumbprint:sha-256:MggqrOi2MEJR1qOeF8Q9gKRxUNB9vrjbwqogJ1Er8k8\",
    \"keys\": [
      {
        \"kid\": \"#disclosure\",
        \"kty\": \"EC\",
        \"crv\": \"P-256\",
        \"alg\": \"ES256\",
        \"x\": \"jYId68wSRiE4juVnaWW0V6BcJ_ZDItX12XUMc70lkmU\",
        \"y\": \"Mmnw8koRUqgIx4IAt5xpEgewa0LZ6qnM0k10gya9opE\",
        \"claimset_formats_supported\": [\"w3cvc-jsonld\"],
        \"claimset_claims_supported\": [
          \"/credentialSubject/driverLicense/issuingAuthority\"
        ]
      },
      {
        \"kid\": \"#hmac\",
        \"kty\": \"oct\",
        \"alg\": \"HS256\",
        \"use\": \"sig\",
        \"key_ops\": [\"sign\"],
        \"k\": \"hel_3wNuO5XYf-qs9-WiwWvC3vF8Ex0DisC_Lf924zI\"
      },
      {
        \"kid\": \"#mandatory\",
        \"kty\": \"oct\",
        \"k\": \"Kkchlbnz5M0gUEmsvqHWY1d0gYR3Gjzh5DTivzD7UVk\"
      },
      {
        \"kid\": \"#proof\",
        \"kty\": \"oct\",
        \"k\": \"N3ZIo4DTV7KVVThNNMceBE9eQKWpoKkCBXdyseM2_ok\"
      }
    ],
    \"signature\": \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..AmwQsW61wdJDUvJjtuZ5sEFfnJWXvfjF3vGWE6FEWf-WbuvRZvYIZpee-c6h_7HP2MSnXw9nTPLxn5ucwokbsQ\",
    \"signatures\": [
      \"eyJhbGciOiJFUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..b3nmlkqKvnD39gqid49_HQ5tDyayr8l_AdfEGEixwM9u196Plf67axDNnoMC5ClL9exxqC21EbQgGYPYEp_EhA\"
    ],
    \"labels\": {
      \"c14n0\": \"uhpi1o2MvbeI9x3_F6bpLSmftQdig1cXdNW_NiNiuP_Q\",
      \"c14n1\": \"uNS9T1kHYBBJmLJdaBbA7oRgUqMexnkQfkZHWCdOb9gw\",
      \"c14n2\": \"uQtjiCdede86tckejVMZcZ3mOW-7z3n_D8lY5x7Jn_iE\"
    },
    \"mandatoryIndexes\": [\"0\", \"1\", \"2\", \"3\", \"5\", \"6\"]
  }
}
Verification
{
  \"verified\": true,
  \"document\": {
    \"@context\": [
      \"https://www.***w3.org/2018/credentials/v1\",
      \"https://www.tx*d*m*v.gov/credentials/v1\",
      \"https://w3id.org***/security/data-integrity/v1\"
    ],
    \"type\": [\"VerifiableCredential\", \"DriverLicenseCredential\"],
    \"credentialSubject\": {
      \"driverLicense\": {
        \"type\": \"DriverLicense\",
        \"dateOfBirth\": \"01-01-1990\",
        \"issuingAuthority\": \"TX\"
      }
    }
  }
}
ES384
Controller
{
  \"id\": \"did:jwk:eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoiX1BLaWZSc3RqRDZLUnBlYjlzSnRYWVBPUXBocTQwUDlndEFHOG01VG1RMy0xLWY0c3AxVElBU0pHWjdQUmJTTCIsInkiOiJzMzV1YlFJUGp4Y1FiajR5LU42dlF3V3BEcmRQM1JWdHNsOHhHSjk3RG9yUjFXM2FYdkhmOU1lUTVVLWFDVDhoIn0#0\",
  \"type\": \"JsonWebKey\",
  \"controller\": \"did:jwk:eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoiX1BLaWZSc3RqRDZLUnBlYjlzSnRYWVBPUXBocTQwUDlndEFHOG01VG1RMy0xLWY0c3AxVElBU0pHWjdQUmJTTCIsInkiOiJzMzV1YlFJUGp4Y1FiajR5LU42dlF3V3BEcmRQM1JWdHNsOHhHSjk3RG9yUjFXM2FYdkhmOU1lUTVVLWFDVDhoIn0\",
  \"publicKeyJwk\": {
    \"kty\": \"EC\",
    \"crv\": \"P-384\",
    \"alg\": \"ES384\",
    \"x\": \"_PKifRstjD6KRpeb9sJtXYPOQphq40P9gtAG8m5TmQ3-1-f4sp1TIASJGZ7PRbSL\",
    \"y\": \"s35ubQIPjxcQbj4y-N6vQwWpDrdP3RVtsl8xGJ97DorR1W3aXvHf9MeQ5U-aCT8h\"
  },
  \"privateKeyJwk\": {
    \"kty\": \"EC\",
    \"crv\": \"P-384\",
    \"alg\": \"ES384\",
    \"x\": \"_PKifRstjD6KRpeb9sJtXYPOQphq40P9gtAG8m5TmQ3-1-f4sp1TIASJGZ7PRbSL\",
    \"y\": \"s35ubQIPjxcQbj4y-N6vQwWpDrdP3RVtsl8xGJ97DorR1W3aXvHf9MeQ5U-aCT8h\",
    \"d\": \"7lY6gqws9sR1Wb01c-mjuiZaOXWcSi7SeVzzZfcLrZPEs2QR75ZBHLp_oQPZ1sAz\"
  }
}
Credential
{
  \"@context\": [
    \"https://www.***w3.org/2018/credentials/v1\",
    \"https://www.tx*d*m*v.gov/credentials/v1\",
    \"https://w3id.org***/security/data-integrity/v1\"
  ],
  \"type\": [\"VerifiableCredential\", \"DriverLicenseCredential\"],
  \"issuer\": \"did:web:txdmv.gov\",
  \"issuanceDate\": \"2010-01-01T19:23:24Z\",
  \"credentialSubject\": {
    \"driverLicense\": {
      \"type\": \"DriverLicense\",
      \"documentIdentifier\": \"T21387yc328c7y32h23f23\",
      \"dateOfBirth\": \"01-01-1990\",
      \"expirationDate\": \"01-01-2030\",
      \"issuingAuthority\": \"TX\"
    }
  },
  \"proof\": {
    \"type\": \"DataIntegrityProof\",
    \"created\": \"2023-06-04T22:35:08.444Z\",
    \"cryptosuite\": \"di-sd-urdna2015-jose-2042\",
    \"proofPurpose\": \"assertionMethod\",
    \"verificationMethod\": \"did:web:txdmv.gov#urn:ietf:params:oauth:jwk-thumbprint:sha-256:MggqrOi2MEJR1qOeF8Q9gKRxUNB9vrjbwqogJ1Er8k8\",
    \"keys\": [
      {
        \"kid\": \"#disclosure\",
        \"kty\": \"EC\",
        \"crv\": \"P-384\",
        \"alg\": \"ES384\",
        \"x\": \"qdcRfjuILGDccRJH5d2BVCUrGLV2Qxh4_kXawAzgw6sDgYflZffcZ8hpkbd87Kql\",
        \"y\": \"o5rnvL5NSg16U9jC4clsDvRIGTbIz41UEb6fX9FBG1B0iWc53VNhDxB81CM7pAic\",
        \"claimset_formats_supported\": [\"w3cvc-jsonld\"],
        \"claimset_claims_supported\": [
          \"/credentialSubject/driverLicense/issuingAuthority\"
        ]
      },
      {
        \"kid\": \"#hmac\",
        \"kty\": \"oct\",
        \"alg\": \"HS256\",
        \"use\": \"sig\",
        \"key_ops\": [\"sign\"],
        \"k\": \"GKjIVq5TKq9lVcR0_qAtUEM2BokHjNvMK9zkCeL6STM\"
      },
      {
        \"kid\": \"#mandatory\",
        \"kty\": \"oct\",
        \"k\": \"E9gLXnMniQt2qCvUj5RPaFivYWQK6avP-uCcgpj8Q9o\"
      },
      {
        \"kid\": \"#proof\",
        \"kty\": \"oct\",
        \"k\": \"N3ZIo4DTV7KVVThNNMceBE9eQKWpoKkCBXdyseM2_ok\"
      }
    ],
    \"signature\": \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..n1TuMczCJj3Bf74cI64g8XYsUufrHUgpd67XusfRhaplMh6WwEmoWHXELd9ve-u10yhuRS1g8KawS11Ne-FlKmaSc7XebEWJnte3RivG4aLQ_vPIw-wLmasiULjcTKhr\",
    \"signatures\": [
      \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..ERNy2SubB9NpNRR0CkQXDFP1jHeQ1cmV0sv_KF-GXzak4KC_Oh32DutPllzShq4EuKnydPjZhgbUIPD9BRoOyNtz3jHIh9aQjgY95vc-7KJhAFBMGnBCO1m3quQ-nngu\",
      \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..Nx3-nf8bDAImF7XbipVDBseYEzz2rG7vITQuHw8Zk8zvxfE5nHLTst-tDdt5HHPo1Wxod__u8ZGitxk3fD9Sg0gII7mB2_LbfCzXV1FG17w3ypnP45JqI22llZLl3xOB\",
      \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..hXmNSJPi60KVS6n9dn0KJ8_zm8_Pl5U1JGUb9gw2Mgzo7ZKkB77bE08zpXqc-OKLS_GYYKUvk1iOkJ3CONdwmKST-by1dXMy7aKn-4Ug9IuP0TtSUMOwllcBtE_kO7vb\",
      \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..SpLkve18fVU4X08RvwBFz1s_u1fpFR-qeeOIS9nR8uUsXPpIWhVG0rF2lGuRbPAPYNDpab0sEt1WGBbF5jKWBJMGJjL49aJLrkLm1CVmp6uvBGIIQHTF5PX7ji4Yb8Ku\",
      \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..AzQSLXx3qu2tS4I6RQKSFdiTiy9WMMBsWQjqM6co4HZ-x7k4YxGkg-so9CSHyVVA5Ww1alKG4twToPNfurvZZPupkAxvKa7HQdYUfNkhINfPVc_R-vmyNSJ46ujGW0Ze\"
    ]
  }
}
Presentation
{
  \"@context\": [
    \"https://www.***w3.org/2018/credentials/v1\",
    \"https://www.tx*d*m*v.gov/credentials/v1\",
    \"https://w3id.org***/security/data-integrity/v1\"
  ],
  \"type\": [\"VerifiableCredential\", \"DriverLicenseCredential\"],
  \"credentialSubject\": {
    \"driverLicense\": {
      \"type\": \"DriverLicense\",
      \"dateOfBirth\": \"01-01-1990\",
      \"issuingAuthority\": \"TX\"
    }
  },
  \"proof\": {
    \"type\": \"DataIntegrityProof\",
    \"created\": \"2023-06-04T22:35:08.444Z\",
    \"cryptosuite\": \"di-sd-urdna2015-jose-2042\",
    \"proofPurpose\": \"assertionMethod\",
    \"verificationMethod\": \"did:web:txdmv.gov#urn:ietf:params:oauth:jwk-thumbprint:sha-256:MggqrOi2MEJR1qOeF8Q9gKRxUNB9vrjbwqogJ1Er8k8\",
    \"keys\": [
      {
        \"kid\": \"#disclosure\",
        \"kty\": \"EC\",
        \"crv\": \"P-384\",
        \"alg\": \"ES384\",
        \"x\": \"qdcRfjuILGDccRJH5d2BVCUrGLV2Qxh4_kXawAzgw6sDgYflZffcZ8hpkbd87Kql\",
        \"y\": \"o5rnvL5NSg16U9jC4clsDvRIGTbIz41UEb6fX9FBG1B0iWc53VNhDxB81CM7pAic\",
        \"claimset_formats_supported\": [\"w3cvc-jsonld\"],
        \"claimset_claims_supported\": [
          \"/credentialSubject/driverLicense/issuingAuthority\"
        ]
      },
      {
        \"kid\": \"#hmac\",
        \"kty\": \"oct\",
        \"alg\": \"HS256\",
        \"use\": \"sig\",
        \"key_ops\": [\"sign\"],
        \"k\": \"GKjIVq5TKq9lVcR0_qAtUEM2BokHjNvMK9zkCeL6STM\"
      },
      {
        \"kid\": \"#mandatory\",
        \"kty\": \"oct\",
        \"k\": \"E9gLXnMniQt2qCvUj5RPaFivYWQK6avP-uCcgpj8Q9o\"
      },
      {
        \"kid\": \"#proof\",
        \"kty\": \"oct\",
        \"k\": \"N3ZIo4DTV7KVVThNNMceBE9eQKWpoKkCBXdyseM2_ok\"
      }
    ],
    \"signature\": \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..n1TuMczCJj3Bf74cI64g8XYsUufrHUgpd67XusfRhaplMh6WwEmoWHXELd9ve-u10yhuRS1g8KawS11Ne-FlKmaSc7XebEWJnte3RivG4aLQ_vPIw-wLmasiULjcTKhr\",
    \"signatures\": [
      \"eyJhbGciOiJFUzM4NCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..ERNy2SubB9NpNRR0CkQXDFP1jHeQ1cmV0sv_KF-GXzak4KC_Oh32DutPllzShq4EuKnydPjZhgbUIPD9BRoOyNtz3jHIh9aQjgY95vc-7KJhAFBMGnBCO1m3quQ-nngu\"
    ],
    \"labels\": {
      \"c14n0\": \"ucRDH5ynrwXddCiA6XMMehGBi_vfkQRATWdSuB3jVncc\",
      \"c14n1\": \"ujUK8o4kwI2TvScWu7C97s_ppTZ3lLWc-M-5Zwq_OS0Q\",
      \"c14n2\": \"uVBbOqjaiw4wgaN90s088ra7GwGxNpeDH4p-tq_QgKFE\"
    },
    \"mandatoryIndexes\": [\"0\", \"2\", \"3\", \"4\", \"5\", \"6\"]
  }
}
Verification
{
  \"verified\": true,
  \"document\": {
    \"@context\": [
      \"https://www.***w3.org/2018/credentials/v1\",
      \"https://www.tx*d*m*v.gov/credentials/v1\",
      \"https://w3id.org***/security/data-integrity/v1\"
    ],
    \"type\": [\"VerifiableCredential\", \"DriverLicenseCredential\"],
    \"credentialSubject\": {
      \"driverLicense\": {
        \"type\": \"DriverLicense\",
        \"dateOfBirth\": \"01-01-1990\",
        \"issuingAuthority\": \"TX\"
      }
    }
  }
}
RS256
Controller

下载源码

通过命令行克隆项目:

git clone https://github.com/transmute-industries/vc-di-sd.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 vc di sd https://www.zuozi.net/33234.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务