UNPKG

did-sdk-js

Version:

js sdk for did and vc according to mcps did spec

129 lines (78 loc) 3.62 kB
# did-sdk-js js sdk for did and vc according to mcps did spec ## Description This library is js sdk according to mcps did/vc spec ## Usage ### DID #### creatDID ```typescript import * as did from "did-sdk-js" let regionId = "sxcu" // region id for the did let myDid = await did.DidDocument.creatDID(did.AlgoType.AlgoTypeSecp256k1, did.IDGenType.IDGenTypeBech32, regionId) let myDoc = myDid.document // document for the did let mainPrivateInfo = myDid.didPrivateInfo[0] // main private key for the did let appPrivateInfo = myDid.didPrivateInfo[1] // app private key for the did console.log(myDoc.toString()) // document to string console.log(mainPrivateInfo.keyId) // key id for the publickey of did. such as "#keys-main"/"#keys-app" console.log(mainPrivateInfo.algo) // algo type for the publickey of did. such as sm2/secp256k1 console.log(mainPrivateInfo.privateKeyHex) // private key for the publickey in hex console.log(mainPrivateInfo.mnemonic) // mnemonic for the private key console.log(mainPrivateInfo.publicKeyHex) // publickey in hex ``` #### resetPublicKey ```typescript import * as did from "did-sdk-js" let myNewDid = await myDid.resetPublicKey(did.AlgoType.AlgoTypeSm2, did.DIDUrl.fragmentKeyIdApp, mainPrivateInfo) let myDoc = myNewDid.document // new document for the did let newPrivateInfo = myNewDid.privateInfo // main private key info for the app key of did console.log(myDoc.toString()) // document to string ``` #### revoke ```typescript import * as did from "did-sdk-js" let myRevokeDid = await myNewDid.resetPublicKey(did.AlgoType.AlgoTypeSm2, did.DIDUrl.fragmentKeyIdApp, mainPrivateInfo) console.log(myRevokeDid.toString()) // document to string console.log(myRevokeDid.isRevoked()) // true ``` ### VC #### 凭证创建/签发/加密/解密 ```typescript let issuerDid = await did.DidDocument.creatDID(did.AlgoType.AlgoTypeSecp256k1, did.IDGenType.IDGenTypeBech32, regionId) let issuerDoc = issuerDid.document let issuerMainPrivateKey = issuerDid.didPrivateInfo[0] let holderDid = await did.DidDocument.creatDID(did.AlgoType.AlgoTypeSecp256k1, did.IDGenType.IDGenTypeBech32, regionId) let holderDoc = holderDid.document let holderAppPrivateKey = holderDid.didPrivateInfo[1] // new a real name claim let rnc = new did.RealNameClaim() rnc.setPublicFamilyName("张") rnc.setPrivateGivenName("三") rnc.setPrivatePhone("12345678909") let validYears = 10 // valid time for the vc // create a vc let newVC = did.VerifiableCredential.creatVC([issuerDoc.id], [holderDoc.id], [rnc], validYears) console.log(newVC.toString()) // issuer issue the vc await newVC.issue(issuerDoc, issuerMainPrivateKey) console.log(newVC.toString()) // issuer encrypt the vc to itself and the holder let vcCipher = await newVC.encrypt(did.EncryptLevel.EncryptLevel1, [issuerDoc, holderDoc]) console.log(vcCipher.toString()) // the holder decrypt the vc let vcDecrypt = await vcCipher.decrypt(holderDoc.id, holderAppPrivateKey) console.log(vcDecrypt.toString()) ``` #### 自定义声明 ```typescript // 按照规范定义凭证类型、公开信息、私有信息等字段 // 实现声明接口方法:集成common/Claim 类 // 实现以下方法 type(): string // 声明类型 newPrivateData(): ClaimPrivateDataBase // 隐私信息对象创建方法 newPublicData(): ClaimPublicDataBase // 公开信息对象创建方法 newMetaData(): ClaimMetaBase // 元数据对象创建方法 // 注册声明 // 1:声明类型 // 2:声明的类名称 registerClaimType(type: string, claim: object) ```