@sphereon/ssi-sdk-ext.did-resolver-key 0.10.2-next.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +10 -0
- package/dist/drivers/bls12381g2.d.ts +8 -0
- package/dist/drivers/bls12381g2.d.ts.map +1 -0
- package/dist/drivers/bls12381g2.js +49 -0
- package/dist/drivers/bls12381g2.js.map +1 -0
- package/dist/drivers/ed25519.d.ts +8 -0
- package/dist/drivers/ed25519.d.ts.map +1 -0
- package/dist/drivers/ed25519.js +118 -0
- package/dist/drivers/ed25519.js.map +1 -0
- package/dist/drivers/jwk.jcs.d.ts +8 -0
- package/dist/drivers/jwk.jcs.d.ts.map +1 -0
- package/dist/drivers/jwk.jcs.js +23 -0
- package/dist/drivers/jwk.jcs.js.map +1 -0
- package/dist/drivers/secp256k1.d.ts +8 -0
- package/dist/drivers/secp256k1.d.ts.map +1 -0
- package/dist/drivers/secp256k1.js +49 -0
- package/dist/drivers/secp256k1.js.map +1 -0
- package/dist/drivers/secp256r1.d.ts +24 -0
- package/dist/drivers/secp256r1.d.ts.map +1 -0
- package/dist/drivers/secp256r1.js +100 -0
- package/dist/drivers/secp256r1.js.map +1 -0
- package/dist/drivers/secp384r1.d.ts +24 -0
- package/dist/drivers/secp384r1.d.ts.map +1 -0
- package/dist/drivers/secp384r1.js +100 -0
- package/dist/drivers/secp384r1.js.map +1 -0
- package/dist/drivers/secp521r1.d.ts +23 -0
- package/dist/drivers/secp521r1.d.ts.map +1 -0
- package/dist/drivers/secp521r1.js +88 -0
- package/dist/drivers/secp521r1.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
- package/src/__tests__/__snapshots__/secp256r1.test.ts.snap +218 -0
- package/src/__tests__/__snapshots__/secp384r1.test.ts.snap +249 -0
- package/src/__tests__/__snapshots__/secp521r1.test.ts.snap +280 -0
- package/src/__tests__/fixtures/bls_did_doc.json +29 -0
- package/src/__tests__/fixtures/ed25519-x25519.json +240 -0
- package/src/__tests__/fixtures/ed25519_did_doc.json +24 -0
- package/src/__tests__/fixtures/jwk_jcs_did_doc.json +35 -0
- package/src/__tests__/fixtures/secp256k1_did_doc.json +21 -0
- package/src/__tests__/key_resolver.test.ts +44 -0
- package/src/__tests__/secp256r1.test.ts +207 -0
- package/src/__tests__/secp384r1.test.ts +233 -0
- package/src/__tests__/secp521r1.test.ts +202 -0
- package/src/drivers/bls12381g2.ts +24 -0
- package/src/drivers/ed25519.ts +115 -0
- package/src/drivers/jwk.jcs.ts +28 -0
- package/src/drivers/secp256k1.ts +25 -0
- package/src/drivers/secp256r1.ts +82 -0
- package/src/drivers/secp384r1.ts +82 -0
- package/src/drivers/secp521r1.ts +68 -0
- package/src/index.ts +65 -0
- package/src/types.ts +22 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import varint from 'varint'
|
|
2
|
+
import { base58btc } from 'multiformats/bases/base58'
|
|
3
|
+
import ed25519 from './drivers/ed25519'
|
|
4
|
+
import bls12381g2 from './drivers/bls12381g2'
|
|
5
|
+
import secp256k1 from './drivers/secp256k1'
|
|
6
|
+
import secp256r1 from './drivers/secp256r1'
|
|
7
|
+
import secp384r1 from './drivers/secp384r1'
|
|
8
|
+
import secp521r1 from './drivers/secp521r1'
|
|
9
|
+
import { DIDResolutionResult, ParsedDID, Resolvable, ResolverRegistry } from 'did-resolver'
|
|
10
|
+
import jwkJcs from './drivers/jwk.jcs'
|
|
11
|
+
import { DID_JSON, DID_LD_JSON, DIDKeyResolutionOptions, KeyToDidDocArgs } from './types'
|
|
12
|
+
|
|
13
|
+
export * from './types'
|
|
14
|
+
|
|
15
|
+
const prefixToDriverMap: any = {
|
|
16
|
+
0xe7: secp256k1,
|
|
17
|
+
0xed: ed25519,
|
|
18
|
+
0x1200: secp256r1,
|
|
19
|
+
0x1201: secp384r1,
|
|
20
|
+
0x1202: secp521r1,
|
|
21
|
+
0xeb: bls12381g2,
|
|
22
|
+
0xeb51: jwkJcs,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const getResolver = (): ResolverRegistry => {
|
|
26
|
+
return {
|
|
27
|
+
key: async (did: string, parsed: ParsedDID, r: Resolvable, options: DIDKeyResolutionOptions) => {
|
|
28
|
+
const contentType = options.accept || DID_LD_JSON
|
|
29
|
+
const response: DIDResolutionResult = {
|
|
30
|
+
didResolutionMetadata: { contentType },
|
|
31
|
+
didDocument: null,
|
|
32
|
+
didDocumentMetadata: {},
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const multicodecPubKey = base58btc.decode(parsed.id)
|
|
36
|
+
const keyType = varint.decode(multicodecPubKey)
|
|
37
|
+
const pubKeyBytes = multicodecPubKey.slice(varint.decode.bytes)
|
|
38
|
+
const args: KeyToDidDocArgs = { pubKeyBytes, fingerprint: parsed.id, contentType, options }
|
|
39
|
+
const doc = await prefixToDriverMap[keyType].keyToDidDoc(args)
|
|
40
|
+
if (contentType === DID_LD_JSON) {
|
|
41
|
+
if (!doc['@context']) {
|
|
42
|
+
doc['@context'] = 'https://w3id.org/did/v1'
|
|
43
|
+
} else if (
|
|
44
|
+
Array.isArray(doc['@context']) &&
|
|
45
|
+
!doc['@context'].includes('https://w3id.org/did/v1') &&
|
|
46
|
+
!doc['@context'].includes('https://www.w3.org/ns/did/v1')
|
|
47
|
+
) {
|
|
48
|
+
doc['@context'].push('https://w3id.org/did/v1')
|
|
49
|
+
}
|
|
50
|
+
response.didDocument = doc
|
|
51
|
+
} else if (contentType === DID_JSON) {
|
|
52
|
+
response.didDocument = doc
|
|
53
|
+
} else {
|
|
54
|
+
delete response.didResolutionMetadata.contentType
|
|
55
|
+
response.didResolutionMetadata.error = 'representationNotSupported'
|
|
56
|
+
}
|
|
57
|
+
} catch (e: any) {
|
|
58
|
+
response.didResolutionMetadata.error = 'invalidDid'
|
|
59
|
+
response.didResolutionMetadata.message = e.toString()
|
|
60
|
+
}
|
|
61
|
+
return response
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export default { getResolver }
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DIDResolutionOptions } from 'did-resolver'
|
|
2
|
+
|
|
3
|
+
export const DID_LD_JSON = 'application/did+ld+json'
|
|
4
|
+
export const DID_JSON = 'application/did+json'
|
|
5
|
+
|
|
6
|
+
export type PublicKeyFormat =
|
|
7
|
+
| 'JsonWebKey2020'
|
|
8
|
+
| 'Ed25519VerificationKey2018'
|
|
9
|
+
| 'X25519KeyAgreementKey2019'
|
|
10
|
+
| 'Ed25519VerificationKey2020'
|
|
11
|
+
| 'X25519KeyAgreementKey2020'
|
|
12
|
+
| 'Multikey'
|
|
13
|
+
export interface KeyToDidDocArgs {
|
|
14
|
+
pubKeyBytes: Uint8Array
|
|
15
|
+
fingerprint: string
|
|
16
|
+
contentType?: string
|
|
17
|
+
options?: DIDKeyResolutionOptions
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface DIDKeyResolutionOptions extends DIDResolutionOptions {
|
|
21
|
+
publicKeyFormat?: PublicKeyFormat
|
|
22
|
+
}
|