@sphereon/ssi-sdk-ext.did-resolver-key 0.10.2-unstable.14

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.
Files changed (60) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +10 -0
  3. package/dist/drivers/bls12381g2.d.ts +8 -0
  4. package/dist/drivers/bls12381g2.d.ts.map +1 -0
  5. package/dist/drivers/bls12381g2.js +49 -0
  6. package/dist/drivers/bls12381g2.js.map +1 -0
  7. package/dist/drivers/ed25519.d.ts +8 -0
  8. package/dist/drivers/ed25519.d.ts.map +1 -0
  9. package/dist/drivers/ed25519.js +118 -0
  10. package/dist/drivers/ed25519.js.map +1 -0
  11. package/dist/drivers/jwk.jcs.d.ts +8 -0
  12. package/dist/drivers/jwk.jcs.d.ts.map +1 -0
  13. package/dist/drivers/jwk.jcs.js +23 -0
  14. package/dist/drivers/jwk.jcs.js.map +1 -0
  15. package/dist/drivers/secp256k1.d.ts +8 -0
  16. package/dist/drivers/secp256k1.d.ts.map +1 -0
  17. package/dist/drivers/secp256k1.js +49 -0
  18. package/dist/drivers/secp256k1.js.map +1 -0
  19. package/dist/drivers/secp256r1.d.ts +24 -0
  20. package/dist/drivers/secp256r1.d.ts.map +1 -0
  21. package/dist/drivers/secp256r1.js +100 -0
  22. package/dist/drivers/secp256r1.js.map +1 -0
  23. package/dist/drivers/secp384r1.d.ts +24 -0
  24. package/dist/drivers/secp384r1.d.ts.map +1 -0
  25. package/dist/drivers/secp384r1.js +100 -0
  26. package/dist/drivers/secp384r1.js.map +1 -0
  27. package/dist/drivers/secp521r1.d.ts +23 -0
  28. package/dist/drivers/secp521r1.d.ts.map +1 -0
  29. package/dist/drivers/secp521r1.js +88 -0
  30. package/dist/drivers/secp521r1.js.map +1 -0
  31. package/dist/index.d.ts +8 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +94 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/types.d.ts +14 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +6 -0
  38. package/dist/types.js.map +1 -0
  39. package/package.json +55 -0
  40. package/src/__tests__/__snapshots__/secp256r1.test.ts.snap +218 -0
  41. package/src/__tests__/__snapshots__/secp384r1.test.ts.snap +249 -0
  42. package/src/__tests__/__snapshots__/secp521r1.test.ts.snap +280 -0
  43. package/src/__tests__/fixtures/bls_did_doc.json +29 -0
  44. package/src/__tests__/fixtures/ed25519-x25519.json +240 -0
  45. package/src/__tests__/fixtures/ed25519_did_doc.json +24 -0
  46. package/src/__tests__/fixtures/jwk_jcs_did_doc.json +35 -0
  47. package/src/__tests__/fixtures/secp256k1_did_doc.json +21 -0
  48. package/src/__tests__/key_resolver.test.ts +44 -0
  49. package/src/__tests__/secp256r1.test.ts +207 -0
  50. package/src/__tests__/secp384r1.test.ts +233 -0
  51. package/src/__tests__/secp521r1.test.ts +202 -0
  52. package/src/drivers/bls12381g2.ts +24 -0
  53. package/src/drivers/ed25519.ts +115 -0
  54. package/src/drivers/jwk.jcs.ts +28 -0
  55. package/src/drivers/secp256k1.ts +25 -0
  56. package/src/drivers/secp256r1.ts +82 -0
  57. package/src/drivers/secp384r1.ts +82 -0
  58. package/src/drivers/secp521r1.ts +68 -0
  59. package/src/index.ts +65 -0
  60. 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
+ }