What generating and checking a VC (Verifiable Credential) can look like with DIDkit:
const DIDKit = require('@spruceid/didkit')
const IwiKey = DIDKit.generateEd25519Key()
// => {
// kty: 'OKP',
// crv: 'Ed25519',
// x: '3VnDgE3ttwbgWWxCGFBvfLRH03BISSig4EAHoX0PdQQ',
// d: 'NgUiAQ5gM97-p5m1PbjrqtKnO07zuA6rUbjMxcPeFVU'
// }
const DID_TYPE = 'key' // this can be eth, sol, ...
const IwiDid = DIDKit.keyToDID(DID_TYPE, IwiKey)
// => did:key:z6MkuMKXw5roRQY3JoiVdybfGSDbqoEe3dcGVVbbXXRKZwu5
// mapped from curve + publicKey
const MixDid = 'did:ahau:d23dd687a7dc6787646f2eb98d0' // << Mix's ID
const verifialbleCredential = DIDKit.issueCredential({
'@context': [
'https://www.w3.org/2018/credentials/v1'
],
type: ['VerifiableCredential'],
issuer: IwiDid,
issuanceDate: '2022-02-19T21:41:50Z',
credentialSubject: {
id: MixDid
}
}, {}, IwiKey)
// => {
// '@context': [ 'https://www.w3.org/2018/credentials/v1' ],
// type: [ 'VerifiableCredential' ],
// credentialSubject: { id: 'did:ahau:d23dd687a7dc6787646f2eb98d0' },
// issuer: 'did:key:z6MkuMKXw5roRQY3JoiVdybfGSDbqoEe3dcGVVbbXXRKZwu5',
// issuanceDate: '2022-02-19T21:41:50Z',
// proof: {
// type: 'Ed25519Signature2018',
// proofPurpose: 'assertionMethod',
// verificationMethod: 'did:key:z6MkuMKXw5roRQY3JoiVdybfGSDbqoEe3dcGVVbbXXRKZwu5#z6MkuMKXw5roRQY3JoiVdybfGSDbqoEe3dcGVVbbXXRKZwu5',
// created: '2022-04-13T22:04:26.992Z',
// jws: 'eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..VkDlbxGNf5VRbIzaNLKUVgxdPe_CVFad13tNWToqxV_Rpfpsf1GjfG3JMF_TJ4HOCYrDHt8icoU0BwDVGA_aAw'
// }
// }
const result = DIDKit.verifyCredential(verifialbleCredential, {})
// => { checks: [ 'proof' ], warnings: [], errors: [] }
// no errors = ✓