hypersign-protocol / hid-node

A permissionless blockchain network to manage digital identity and access rights
https://hypersign.id
Apache License 2.0
223 stars 23 forks source link

feat: added support for BBS+ Signature scheme #366

Closed arnabghose997 closed 1 year ago

arnabghose997 commented 1 year ago

This PR adds support for BBS+ Signature Scheme.

Sample DID Document with Verification Method of type Bls12381G2Key2020:

{
  "didDocument": {
    "context": [
    ],
    "id": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ",
    "controller": [
      "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ"
    ],
    "alsoKnownAs": [
    ],
    "verificationMethod": [
      {
        "id": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ#k1",
        "type": "Bls12381G2Key2020",
        "controller": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ",
        "publicKeyMultibase": "zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ",
        "blockchainAccountId": ""
      }
    ],
    "authentication": [
    ],
    "assertionMethod": [
    ],
    "keyAgreement": [
    ],
    "capabilityInvocation": [
    ],
    "capabilityDelegation": [
    ],
    "service": [
    ]
  },
  "didDocumentMetadata": {
    "created": "2023-07-31T06:56:59Z",
    "updated": "2023-07-31T06:56:59Z",
    "deactivated": false,
    "versionId": "84179388239C126624125D886679E63B0FB9F3C9257D19FF193E39DB90E0FBE7"
  }
}

Sample Schema Document with Proof of BbsBlsSignature2020 type:

{
  "schema": [
    {
      "type": "https://schema.org/Person",
      "modelVersion": "v1.0",
      "id": "sch:hid:devnet:zsCgr3E9YyN5d3q1XHzC3qVgYf4Z6jEKQvRjjZqP2T5GNxGFxYDxzCbZRme32ox2TPX2gqrPGz76hjc38oMYBaeeavAqz5BNx5dW1yEiuHZLoymhzeLaCayLHkHVs2pHWV48:1.0",
      "name": "Person",
      "author": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ",
      "authored": "2022-08-16T10:22:12Z",
      "schema": {
        "schema": "https://json-schema.org/draft-07/schema#",
        "description": "Person Schema",
        "type": "object",
        "properties": "{givenName:{type:string},gender:{type:string},email:{type:text},address:{type:text}}",
        "required": [
          "givenName",
          "address"
        ],
        "additionalProperties": false
      },
      "proof": {
        "type": "BbsBlsSignature2020",
        "created": "2022-08-16T10:22:12Z",
        "verificationMethod": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ#k1",
        "proofPurpose": "assertion",
        "proofValue": "tB3zAx9DM9oCqU2jSIVnDRK7W8oltm8c0ojUD4UVqAqLOxkFXtGGyRbSXl1KKTjQCnKA7E27u8QRG47ipqPA/0hpyjE5r3mtV0OCNxJKIlxEbnmU0LlGmvo0MAeUo3jbWiRIY3K3gWIAIS0SMqpjLQ=="
      }
    }
  ]
}

Sample Credential Status Document with Proof of BbsBlsSignature2020 type:

{
  "credStatus": {
    "claim": {
      "id": "vc:hid:devnet:z22YQgL2CFmZ7JPyq5AruyL9KbjeBB9Zoqk947yoAWTtS2VafZ9wE9a8W2BF19HUwggHWsAb6kuouaPueedb42BZuvu7Jry41Xn82ApVCFwWo9vEQkJqoF7n2wVVwBhhZkoKY",
      "currentStatus": "Live",
      "statusReason": "Credential Active"
    },
    "issuer": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ",
    "issuanceDate": "2022-08-16T09:37:12Z",
    "expirationDate": "2023-08-16T09:40:12Z",
    "credentialHash": "f35c3a4e3f1b8ba54ee3cf59d3de91b8b357f707fdb72a46473b65b46f92f80b",
    "proof": {
      "type": "BbsBlsSignature2020",
      "created": "2022-08-16T09:37:12Z",
      "updated": "2022-08-16T09:37:12Z",
      "verificationMethod": "did:hid:devnet:zqy3vA3GLHGK5fBiHnzjZWqHHRb8g9oXvQtkeJYS51zMjXF6nC5XdXGB6MR7AV4zeF6WepbchAn6bwTBZ8TxyKN6hWBsA7wNnvJTVzi4kfG5AhDQ6YYbm5L9r2Tr59b1snaJ#k1",
      "proofPurpose": "assertion",
      "proofValue": "ju20Hz8Z81j0pAdW9C9JGUOrc+2gp8R/xu6QkMFxU3or6QVa5I36/r4KXvZCHF3iNiKXEY8yCWAVLeeL3N/wxkmPzeDlfAoo0nlf2k/GLy4CbJbzAZqZFJWTKY8nL2xHcVeSYMFytRqBUZFkLiXgZQ=="
    }
  }
}