@nuggetslife/vc-rn 0.1.0

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 (137) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +31 -0
  3. package/android/build.gradle +101 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +3 -0
  6. package/android/src/main/AndroidManifestNew.xml +2 -0
  7. package/android/src/main/java/com/nuggetslife/bindings/vc/vc.kt +673 -0
  8. package/android/src/main/java/com/nuggetslife/vc/VcModule.kt +30 -0
  9. package/android/src/main/java/com/nuggetslife/vc/VcPackage.kt +17 -0
  10. package/android/src/main/jniLibs/arm64-v8a/libvc.so +0 -0
  11. package/android/src/main/jniLibs/armeabi-v7a/libvc.so +0 -0
  12. package/android/src/main/jniLibs/x86/libvc.so +0 -0
  13. package/android/src/main/jniLibs/x86_64/libvc.so +0 -0
  14. package/ios/Vc-Bridging-Header.h +2 -0
  15. package/ios/VcModule.mm +14 -0
  16. package/ios/VcModule.swift +23 -0
  17. package/ios/vc.swift +446 -0
  18. package/ios/vc.xcframework/Info.plist +48 -0
  19. package/ios/vc.xcframework/ios-arm64/Headers/module.modulemap +6 -0
  20. package/ios/vc.xcframework/ios-arm64/Headers/vcFFI.h +174 -0
  21. package/ios/vc.xcframework/ios-arm64/libvc.a +0 -0
  22. package/ios/vc.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap +6 -0
  23. package/ios/vc.xcframework/ios-arm64_x86_64-simulator/Headers/vcFFI.h +174 -0
  24. package/ios/vc.xcframework/ios-arm64_x86_64-simulator/libvc.a +0 -0
  25. package/ios/vcFFI.h +174 -0
  26. package/lib/commonjs/Bls12381G2KeyPair.js +405 -0
  27. package/lib/commonjs/Bls12381G2KeyPair.js.map +1 -0
  28. package/lib/commonjs/index.d.js +18 -0
  29. package/lib/commonjs/index.d.js.map +1 -0
  30. package/lib/commonjs/index.js +20 -0
  31. package/lib/commonjs/index.js.map +1 -0
  32. package/lib/commonjs/types/BlsCurveName.js +14 -0
  33. package/lib/commonjs/types/BlsCurveName.js.map +1 -0
  34. package/lib/commonjs/types/GenerateKeyPairOptions.js +2 -0
  35. package/lib/commonjs/types/GenerateKeyPairOptions.js.map +1 -0
  36. package/lib/commonjs/types/JsonWebKey.js +2 -0
  37. package/lib/commonjs/types/JsonWebKey.js.map +1 -0
  38. package/lib/commonjs/types/JwkKeyPairOptions.js +6 -0
  39. package/lib/commonjs/types/JwkKeyPairOptions.js.map +1 -0
  40. package/lib/commonjs/types/JwkKty.js +13 -0
  41. package/lib/commonjs/types/JwkKty.js.map +1 -0
  42. package/lib/commonjs/types/KeyPairOptions.js +2 -0
  43. package/lib/commonjs/types/KeyPairOptions.js.map +1 -0
  44. package/lib/commonjs/types/KeyPairSigner.js +2 -0
  45. package/lib/commonjs/types/KeyPairSigner.js.map +1 -0
  46. package/lib/commonjs/types/KeyPairVerifier.js +2 -0
  47. package/lib/commonjs/types/KeyPairVerifier.js.map +1 -0
  48. package/lib/commonjs/types/index.js +20 -0
  49. package/lib/commonjs/types/index.js.map +1 -0
  50. package/lib/commonjs/utils/codec.js +22 -0
  51. package/lib/commonjs/utils/codec.js.map +1 -0
  52. package/lib/commonjs/utils/index.js +19 -0
  53. package/lib/commonjs/utils/index.js.map +1 -0
  54. package/lib/commonjs/validators/Bls12381G2Jwk.js +19 -0
  55. package/lib/commonjs/validators/Bls12381G2Jwk.js.map +1 -0
  56. package/lib/commonjs/validators/JsonWebKey.js +27 -0
  57. package/lib/commonjs/validators/JsonWebKey.js.map +1 -0
  58. package/lib/module/Bls12381G2KeyPair.js +398 -0
  59. package/lib/module/Bls12381G2KeyPair.js.map +1 -0
  60. package/lib/module/index.d.js +9 -0
  61. package/lib/module/index.d.js.map +1 -0
  62. package/lib/module/index.js +14 -0
  63. package/lib/module/index.js.map +1 -0
  64. package/lib/module/types/BlsCurveName.js +8 -0
  65. package/lib/module/types/BlsCurveName.js.map +1 -0
  66. package/lib/module/types/GenerateKeyPairOptions.js +2 -0
  67. package/lib/module/types/GenerateKeyPairOptions.js.map +1 -0
  68. package/lib/module/types/JsonWebKey.js +2 -0
  69. package/lib/module/types/JsonWebKey.js.map +1 -0
  70. package/lib/module/types/JwkKeyPairOptions.js +2 -0
  71. package/lib/module/types/JwkKeyPairOptions.js.map +1 -0
  72. package/lib/module/types/JwkKty.js +7 -0
  73. package/lib/module/types/JwkKty.js.map +1 -0
  74. package/lib/module/types/KeyPairOptions.js +2 -0
  75. package/lib/module/types/KeyPairOptions.js.map +1 -0
  76. package/lib/module/types/KeyPairSigner.js +2 -0
  77. package/lib/module/types/KeyPairSigner.js.map +1 -0
  78. package/lib/module/types/KeyPairVerifier.js +2 -0
  79. package/lib/module/types/KeyPairVerifier.js.map +1 -0
  80. package/lib/module/types/index.js +3 -0
  81. package/lib/module/types/index.js.map +1 -0
  82. package/lib/module/utils/codec.js +13 -0
  83. package/lib/module/utils/codec.js.map +1 -0
  84. package/lib/module/utils/index.js +2 -0
  85. package/lib/module/utils/index.js.map +1 -0
  86. package/lib/module/validators/Bls12381G2Jwk.js +11 -0
  87. package/lib/module/validators/Bls12381G2Jwk.js.map +1 -0
  88. package/lib/module/validators/JsonWebKey.js +19 -0
  89. package/lib/module/validators/JsonWebKey.js.map +1 -0
  90. package/lib/typescript/src/Bls12381G2KeyPair.d.ts +104 -0
  91. package/lib/typescript/src/Bls12381G2KeyPair.d.ts.map +1 -0
  92. package/lib/typescript/src/index.d.ts +2 -0
  93. package/lib/typescript/src/index.d.ts.map +1 -0
  94. package/lib/typescript/src/types/BlsCurveName.d.ts +7 -0
  95. package/lib/typescript/src/types/BlsCurveName.d.ts.map +1 -0
  96. package/lib/typescript/src/types/GenerateKeyPairOptions.d.ts +18 -0
  97. package/lib/typescript/src/types/GenerateKeyPairOptions.d.ts.map +1 -0
  98. package/lib/typescript/src/types/JsonWebKey.d.ts +60 -0
  99. package/lib/typescript/src/types/JsonWebKey.d.ts.map +1 -0
  100. package/lib/typescript/src/types/JwkKeyPairOptions.d.ts +23 -0
  101. package/lib/typescript/src/types/JwkKeyPairOptions.d.ts.map +1 -0
  102. package/lib/typescript/src/types/JwkKty.d.ts +6 -0
  103. package/lib/typescript/src/types/JwkKty.d.ts.map +1 -0
  104. package/lib/typescript/src/types/KeyPairOptions.d.ts +22 -0
  105. package/lib/typescript/src/types/KeyPairOptions.d.ts.map +1 -0
  106. package/lib/typescript/src/types/KeyPairSigner.d.ts +7 -0
  107. package/lib/typescript/src/types/KeyPairSigner.d.ts.map +1 -0
  108. package/lib/typescript/src/types/KeyPairVerifier.d.ts +8 -0
  109. package/lib/typescript/src/types/KeyPairVerifier.d.ts.map +1 -0
  110. package/lib/typescript/src/types/index.d.ts +9 -0
  111. package/lib/typescript/src/types/index.d.ts.map +1 -0
  112. package/lib/typescript/src/utils/codec.d.ts +3 -0
  113. package/lib/typescript/src/utils/codec.d.ts.map +1 -0
  114. package/lib/typescript/src/utils/index.d.ts +2 -0
  115. package/lib/typescript/src/utils/index.d.ts.map +1 -0
  116. package/lib/typescript/src/validators/Bls12381G2Jwk.d.ts +4 -0
  117. package/lib/typescript/src/validators/Bls12381G2Jwk.d.ts.map +1 -0
  118. package/lib/typescript/src/validators/JsonWebKey.d.ts +4 -0
  119. package/lib/typescript/src/validators/JsonWebKey.d.ts.map +1 -0
  120. package/nuggetslife-vc.podspec +42 -0
  121. package/package.json +164 -0
  122. package/src/Bls12381G2KeyPair.ts +447 -0
  123. package/src/index.d.ts +126 -0
  124. package/src/index.tsx +22 -0
  125. package/src/types/BlsCurveName.ts +6 -0
  126. package/src/types/GenerateKeyPairOptions.ts +17 -0
  127. package/src/types/JsonWebKey.ts +68 -0
  128. package/src/types/JwkKeyPairOptions.ts +24 -0
  129. package/src/types/JwkKty.ts +5 -0
  130. package/src/types/KeyPairOptions.ts +21 -0
  131. package/src/types/KeyPairSigner.ts +6 -0
  132. package/src/types/KeyPairVerifier.ts +8 -0
  133. package/src/types/index.ts +8 -0
  134. package/src/utils/codec.ts +12 -0
  135. package/src/utils/index.ts +1 -0
  136. package/src/validators/Bls12381G2Jwk.ts +21 -0
  137. package/src/validators/JsonWebKey.ts +28 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.assertPublicBlsJwk = exports.assertPrivateBlsJwk = void 0;
7
+ var _types = require("../types");
8
+ const checkCommonBlsJwkValues = jwk => {
9
+ const allowedCurveNames = [_types.BlsCurveName.G1, _types.BlsCurveName.G2, _types.BlsCurveName.DEPRECATED_G1, _types.BlsCurveName.DEPRECATED_G2];
10
+ return (
11
+ // A BLS key type MUST be set to "EC" or "OKP"
12
+ typeof jwk !== "undefined" && (jwk.kty === _types.JwkKty.EC || jwk.kty === _types.JwkKty.OctetKeyPair) &&
13
+ // The curve property should indicate either one of the types listed on allowedCurveNames
14
+ allowedCurveNames.indexOf(jwk.crv) >= 0
15
+ );
16
+ };
17
+ const assertPublicBlsJwk = jwk => {
18
+ // Performs common checks, but also checks to make sure a d value is not included
19
+ // If a d value is included then this is a private key not a public key
20
+ return checkCommonBlsJwkValues(jwk) && typeof jwk.d === "undefined";
21
+ };
22
+ exports.assertPublicBlsJwk = assertPublicBlsJwk;
23
+ const assertPrivateBlsJwk = jwk => {
24
+ return checkCommonBlsJwkValues(jwk);
25
+ };
26
+ exports.assertPrivateBlsJwk = assertPrivateBlsJwk;
27
+ //# sourceMappingURL=JsonWebKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","checkCommonBlsJwkValues","jwk","allowedCurveNames","BlsCurveName","G1","G2","DEPRECATED_G1","DEPRECATED_G2","kty","JwkKty","EC","OctetKeyPair","indexOf","crv","assertPublicBlsJwk","d","exports","assertPrivateBlsJwk"],"sourceRoot":"../../../src","sources":["validators/JsonWebKey.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,MAAMC,uBAAuB,GAAIC,GAAe,IAAc;EAC5D,MAAMC,iBAA2B,GAAG,CAClCC,mBAAY,CAACC,EAAE,EACfD,mBAAY,CAACE,EAAE,EACfF,mBAAY,CAACG,aAAa,EAC1BH,mBAAY,CAACI,aAAa,CAC3B;EACD;IACE;IACA,OAAON,GAAG,KAAK,WAAW,KACzBA,GAAG,CAACO,GAAG,KAAKC,aAAM,CAACC,EAAE,IAAIT,GAAG,CAACO,GAAG,KAAKC,aAAM,CAACE,YAAY,CAAC;IAC1D;IACAT,iBAAiB,CAACU,OAAO,CAACX,GAAG,CAACY,GAAG,CAAC,IAAI;EAAC;AAE3C,CAAC;AAEM,MAAMC,kBAAkB,GAAIb,GAAe,IAAc;EAC9D;EACA;EACA,OAAOD,uBAAuB,CAACC,GAAG,CAAC,IAAI,OAAOA,GAAG,CAACc,CAAC,KAAK,WAAW;AACrE,CAAC;AAACC,OAAA,CAAAF,kBAAA,GAAAA,kBAAA;AAEK,MAAMG,mBAAmB,GAAIhB,GAAe,IAAc;EAC/D,OAAOD,uBAAuB,CAACC,GAAG,CAAC;AACrC,CAAC;AAACe,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -0,0 +1,398 @@
1
+ import { vc_facade } from '.';
2
+ import bs58 from 'bs58';
3
+ import { assertBls12381G2PrivateJwk, assertBls12381G2PublicJwk } from './validators/Bls12381G2Jwk';
4
+ import { convertBase64urlToBase58, uint8ArrayToHexString } from './utils';
5
+ import { BlsCurveName } from './types';
6
+ import { base64url } from 'rfc4648';
7
+
8
+ /**
9
+ * z represents the multibase encoding scheme of base58 encoding
10
+ * @see https://github.com/multiformats/multibase/blob/master/multibase.csv#L18
11
+ * @ignore
12
+ */
13
+ const MULTIBASE_ENCODED_BASE58_IDENTIFIER = 'z';
14
+
15
+ /**
16
+ * 0x01 indicates the end of the leading bytes according to variable integer spec
17
+ * @see https://github.com/multiformats/multicodec
18
+ * @ignore
19
+ */
20
+ const VARIABLE_INTEGER_TRAILING_BYTE = 0x01;
21
+
22
+ /**
23
+ * 0xeb indicates a BLS 12-381 G2 public key
24
+ *
25
+ */
26
+ const BLS12381G2_MULTICODEC_IDENTIFIER = 0xeb;
27
+ const DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH = 96;
28
+
29
+ /**
30
+ * Returns an object with an async sign function for producing BBS+ signatures.
31
+ * The sign function is bound to the KeyPair
32
+ * and then returned by the KeyPair's signer method.
33
+ * @param key - A Bls12381G2KeyPair.
34
+ *
35
+ * @returns An object with an async function sign
36
+ * using the private key passed in.
37
+ */
38
+
39
+ const signerFactory = key => {
40
+ if (!key.privateKeyInner) {
41
+ return {
42
+ async sign() {
43
+ throw new Error('No private key to sign with.');
44
+ }
45
+ };
46
+ }
47
+ return {
48
+ async sign({
49
+ data
50
+ }) {
51
+ const messages = data.map(m => bs58.encode(m));
52
+ let sig_bs58 = await vc_facade('bls_sign', JSON.stringify({
53
+ messages,
54
+ keyPair: {
55
+ secretKey: key.privateKey,
56
+ publicKey: key.publicKey
57
+ }
58
+ }));
59
+ return bs58.decode(sig_bs58);
60
+ }
61
+ };
62
+ };
63
+
64
+ /**
65
+ * @ignore
66
+ * Returns an object with an async verify function for verifying BBS+ signatures.
67
+ * The verify function is bound to the KeyPair
68
+ * and then returned by the KeyPair's verifier method.
69
+ * @param key - A Bls12381G2KeyPair.
70
+ *
71
+ * @returns An async verifier specific
72
+ * to the key passed in.
73
+ */
74
+ const verifierFactory = key => {
75
+ if (!key.publicKeyInner) {
76
+ return {
77
+ async verify() {
78
+ throw new Error('No public key to verify with.');
79
+ }
80
+ };
81
+ }
82
+ return {
83
+ async verify({
84
+ data,
85
+ signature
86
+ }) {
87
+ const messages = data.map(m => bs58.encode(m));
88
+ const sig_bs58 = bs58.encode(signature);
89
+ let res = await vc_facade('bls_verify', JSON.stringify({
90
+ messages,
91
+ publicKey: key.publicKey,
92
+ signature: sig_bs58
93
+ }));
94
+ return JSON.parse(res);
95
+ }
96
+ };
97
+ };
98
+ export class Bls12381G2KeyPair {
99
+ type = 'Bls12381G2Key2020';
100
+ constructor(options) {
101
+ var _options$publicKeyBas, _options$publicKeyBas2;
102
+ /**
103
+ * The provided publicKey needs to be 384 bits / 5.85 = 65.6
104
+ * which means the base58 encoded publicKey can be either 65 or 66 chars
105
+ * 5.85 = log base 2 (58) which is equivalent to the number of bits
106
+ * encoded per character of a base58 encoded string.
107
+ *
108
+ */
109
+ if ((options === null || options === void 0 || (_options$publicKeyBas = options.publicKeyBase58) === null || _options$publicKeyBas === void 0 ? void 0 : _options$publicKeyBas.length) !== 131 && (options === null || options === void 0 || (_options$publicKeyBas2 = options.publicKeyBase58) === null || _options$publicKeyBas2 === void 0 ? void 0 : _options$publicKeyBas2.length) !== 132) {
110
+ var _options$publicKeyBas3;
111
+ throw new Error(`The size of the public key is incorrect. Expected 131 or 132 chars got: ${options === null || options === void 0 || (_options$publicKeyBas3 = options.publicKeyBase58) === null || _options$publicKeyBas3 === void 0 ? void 0 : _options$publicKeyBas3.length}`);
112
+ }
113
+
114
+ /**
115
+ * Validates the size of the private key if one is included
116
+ * This is done by 256 bits / 5.85 = 43.7 which means
117
+ * the base58 encoded privateKey can be either 43 or 44 chars
118
+ */
119
+ if (typeof options.privateKeyBase58 !== 'undefined' && options.privateKeyBase58.length !== 43 && options.privateKeyBase58.length !== 44) {
120
+ throw new Error(`The size of the private key is incorrect. Expected 65 or 66 chars got: ${options.privateKeyBase58.length}`);
121
+ }
122
+ this.id = options.id;
123
+ this.controller = options.controller;
124
+ this.privateKeyInner = options.privateKeyBase58 ? Array.from(bs58.decode(options.privateKeyBase58)) : undefined;
125
+ this.publicKeyInner = Array.from(bs58.decode(options.publicKeyBase58));
126
+ //TODO assert if key pair is the wrong length?
127
+ }
128
+ /**
129
+ * Generates a BLS 12-381 key pair
130
+ * @param options [Optional] options for the key pair generation
131
+ *
132
+ * @returns A BLS 12-381 key pair
133
+ */
134
+ static async generate(options) {
135
+ const res = options !== null && options !== void 0 && options.seed ? await vc_facade('bls_generate_g2_key', JSON.stringify({
136
+ seed: bs58.encode(options.seed)
137
+ })) : await vc_facade('bls_generate_g2_key', JSON.stringify({}));
138
+ const keyPair = JSON.parse(res);
139
+ return new Bls12381G2KeyPair({
140
+ ...options,
141
+ privateKeyBase58: keyPair.secretKey,
142
+ publicKeyBase58: keyPair.publicKey
143
+ });
144
+ }
145
+ /**
146
+ * Constructs a BLS 12-381 key pair from options
147
+ * @param options [Optional] options for key pair
148
+ *
149
+ * @returns A BLS 12-381 key pair
150
+ */
151
+ static async from(options) {
152
+ return new Bls12381G2KeyPair(options);
153
+ }
154
+ /**
155
+ * Constructs a BLS 12-381 key pair from options
156
+ * @param options [Optional] options for key pair
157
+ *
158
+ * @returns A BLS 12-381 G2 key pair
159
+ */
160
+ static async fromJwk(options) {
161
+ const {
162
+ id,
163
+ controller,
164
+ publicKeyJwk,
165
+ privateKeyJwk
166
+ } = options;
167
+ if (typeof privateKeyJwk !== 'undefined' &&
168
+ /**
169
+ * The type casting is verified through the use of this assert function
170
+ * However because the returned interface leaves the properties as optional
171
+ * they need to be cast to pass to the convert function.
172
+ **/
173
+ assertBls12381G2PrivateJwk(privateKeyJwk)) {
174
+ return new Bls12381G2KeyPair({
175
+ id,
176
+ controller,
177
+ publicKeyBase58: convertBase64urlToBase58(privateKeyJwk.x),
178
+ privateKeyBase58: convertBase64urlToBase58(privateKeyJwk.d)
179
+ });
180
+ }
181
+ if (assertBls12381G2PublicJwk(publicKeyJwk)) {
182
+ return new Bls12381G2KeyPair({
183
+ id,
184
+ controller,
185
+ publicKeyBase58: convertBase64urlToBase58(publicKeyJwk.x)
186
+ });
187
+ }
188
+ throw Error('The JWK provided is not a valid');
189
+ }
190
+ /**
191
+ * Constructs a BLS 12-381 key pair from a public key fingerprint
192
+ * @param fingerprint [Optional] public key fingerprint
193
+ *
194
+ * TODO this interface needs to be refactored, there should be no
195
+ * hard coded notion of DIDs at this layer
196
+ *
197
+ * @returns A BLS 12-381 key pair
198
+ */
199
+ static fromFingerprint({
200
+ id,
201
+ controller,
202
+ fingerprint
203
+ }) {
204
+ if (fingerprint.substr(0, 1) != MULTIBASE_ENCODED_BASE58_IDENTIFIER) {
205
+ throw new Error(`Unsupported fingerprint type: expected first character to be \`z\` indicating base58 encoding, received \`${fingerprint.substr(0, 1)}\``);
206
+ }
207
+
208
+ // parse of the multi-format public key removing the `z` that indicates base58 encoding
209
+ const buffer = bs58.decode(fingerprint.substr(1));
210
+ if (buffer.length !== DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH + 2) {
211
+ throw new Error(`Unsupported public key length: expected \`${DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH}\` received \`${buffer.length - 2}\``);
212
+ }
213
+ if (buffer[0] !== BLS12381G2_MULTICODEC_IDENTIFIER) {
214
+ throw new Error(`Unsupported public key identifier: expected second character to be \`${BLS12381G2_MULTICODEC_IDENTIFIER}\` indicating BLS12381G2 key pair, received \`${buffer[0]}\``);
215
+ }
216
+ if (buffer[1] !== VARIABLE_INTEGER_TRAILING_BYTE) {
217
+ throw new Error(`Missing variable integer trailing byte: expected third character to be \`${VARIABLE_INTEGER_TRAILING_BYTE}\` indicating trailing integer, received \`${buffer[1]}\``);
218
+ }
219
+ const publicKeyBase58 = bs58.encode(buffer.slice(2));
220
+
221
+ //Defaults the controller to a DID key based controller
222
+ if (!controller) {
223
+ controller = `did:key:${Bls12381G2KeyPair.fingerprintFromPublicKey({
224
+ publicKeyBase58
225
+ })}`;
226
+ }
227
+
228
+ //Defaults the id to the did key based fragment
229
+ if (!id) {
230
+ id = `#${Bls12381G2KeyPair.fingerprintFromPublicKey({
231
+ publicKeyBase58
232
+ })}`;
233
+ }
234
+ return new Bls12381G2KeyPair({
235
+ id,
236
+ controller,
237
+ publicKeyBase58
238
+ });
239
+ }
240
+
241
+ /**
242
+ * Returns the base58 encoded public key.
243
+ *
244
+ * @returns The base58 encoded public key.
245
+ */
246
+ get publicKey() {
247
+ return bs58.encode(this.publicKeyBuffer);
248
+ }
249
+
250
+ /**
251
+ * Returns the JWK structured public key.
252
+ *
253
+ * @returns The JWK public key.
254
+ */
255
+ get publicKeyJwk() {
256
+ return {
257
+ kid: this.id,
258
+ kty: 'EC',
259
+ crv: BlsCurveName.G2,
260
+ x: base64url.stringify(this.publicKeyBuffer, {
261
+ pad: false
262
+ })
263
+ };
264
+ }
265
+
266
+ /**
267
+ * Returns the base58 encoded private key.
268
+ *
269
+ * @returns The base58 encoded private key.
270
+ */
271
+ get privateKey() {
272
+ if (this.privateKeyInner) {
273
+ return bs58.encode(this.privateKeyBuffer);
274
+ }
275
+ return undefined;
276
+ }
277
+
278
+ /**
279
+ * Returns the JWK formatted private key.
280
+ *
281
+ * @returns The JWK formatted private key.
282
+ */
283
+ get privateKeyJwk() {
284
+ if (this.privateKeyInner) {
285
+ return {
286
+ kid: this.id,
287
+ kty: 'EC',
288
+ crv: BlsCurveName.G2,
289
+ x: base64url.stringify(this.publicKeyBuffer, {
290
+ pad: false
291
+ }),
292
+ d: base64url.stringify(this.privateKeyBuffer, {
293
+ pad: false
294
+ })
295
+ };
296
+ }
297
+ return undefined;
298
+ }
299
+
300
+ /**
301
+ * Adds a public key base to a public key node.
302
+ *
303
+ * @param publicKeyNode - The public key node.
304
+ * @param publicKeyNode.publicKeyBase58 - Base58 public key.
305
+ *
306
+ * @returns A PublicKeyNode in a block.
307
+ */
308
+ addEncodedPublicKey(publicKeyNode) {
309
+ publicKeyNode.publicKeyBase58 = this.publicKey;
310
+ return publicKeyNode;
311
+ }
312
+ get publicKeyBuffer() {
313
+ return Buffer.from(this.publicKeyInner ?? []);
314
+ }
315
+ get privateKeyBuffer() {
316
+ return Buffer.from(this.privateKeyInner ?? []);
317
+ }
318
+
319
+ /**
320
+ * Returns a signer object for use with jsonld-signatures.
321
+ *
322
+ * @returns {{sign: Function}} A signer for the json-ld block.
323
+ */
324
+ signer() {
325
+ return signerFactory(this);
326
+ }
327
+
328
+ /**
329
+ * Returns a verifier object for use with jsonld-signatures.
330
+ *
331
+ * @returns {{verify: Function}} Used to verify jsonld-signatures.
332
+ */
333
+ verifier() {
334
+ return verifierFactory(this);
335
+ }
336
+
337
+ /**
338
+ * Generates and returns a public key fingerprint.
339
+ *
340
+ * @returns The fingerprint.
341
+ */
342
+ fingerprint() {
343
+ const publicKeyBase58 = this.publicKey;
344
+ return Bls12381G2KeyPair.fingerprintFromPublicKey({
345
+ publicKeyBase58
346
+ });
347
+ }
348
+ static fingerprintFromPublicKey({
349
+ publicKeyBase58
350
+ }) {
351
+ const keyBytes = bs58.decode(publicKeyBase58);
352
+ const buffer = new Uint8Array(2 + keyBytes.length);
353
+ buffer[0] = BLS12381G2_MULTICODEC_IDENTIFIER;
354
+ buffer[1] = VARIABLE_INTEGER_TRAILING_BYTE;
355
+ buffer.set(keyBytes, 2);
356
+ return `${MULTIBASE_ENCODED_BASE58_IDENTIFIER}${bs58.encode(buffer)}`;
357
+ }
358
+ /**
359
+ * Verifies whether the fingerprint was generated from a given key pair.
360
+ *
361
+ * @param fingerprint - A Base58 public key.
362
+ *
363
+ * @returns An object indicating valid is true or false.
364
+ */
365
+ verifyFingerprint(fingerprint) {
366
+ // fingerprint should have `z` prefix indicating
367
+ // that it's multi-base encoded
368
+ if (!(typeof fingerprint === 'string' && fingerprint[0] === MULTIBASE_ENCODED_BASE58_IDENTIFIER)) {
369
+ return {
370
+ error: new Error('`fingerprint` must be a multibase encoded string.'),
371
+ valid: false
372
+ };
373
+ }
374
+ let fingerprintBuffer;
375
+ try {
376
+ fingerprintBuffer = bs58.decode(fingerprint.slice(1));
377
+ } catch (e) {
378
+ return {
379
+ error: e,
380
+ valid: false
381
+ };
382
+ }
383
+ const publicKeyBuffer = this.publicKeyBuffer;
384
+
385
+ // validate the first two multicodec bytes 0xeb01
386
+ const valid = uint8ArrayToHexString(fingerprintBuffer.slice(0, 2)) === 'eb01' && publicKeyBuffer.equals(fingerprintBuffer.slice(2));
387
+ if (!valid) {
388
+ return {
389
+ error: new Error('The fingerprint does not match the public key.'),
390
+ valid: false
391
+ };
392
+ }
393
+ return {
394
+ valid
395
+ };
396
+ }
397
+ }
398
+ //# sourceMappingURL=Bls12381G2KeyPair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["vc_facade","bs58","assertBls12381G2PrivateJwk","assertBls12381G2PublicJwk","convertBase64urlToBase58","uint8ArrayToHexString","BlsCurveName","base64url","MULTIBASE_ENCODED_BASE58_IDENTIFIER","VARIABLE_INTEGER_TRAILING_BYTE","BLS12381G2_MULTICODEC_IDENTIFIER","DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH","signerFactory","key","privateKeyInner","sign","Error","data","messages","map","m","encode","sig_bs58","JSON","stringify","keyPair","secretKey","privateKey","publicKey","decode","verifierFactory","publicKeyInner","verify","signature","res","parse","Bls12381G2KeyPair","type","constructor","options","_options$publicKeyBas","_options$publicKeyBas2","publicKeyBase58","length","_options$publicKeyBas3","privateKeyBase58","id","controller","Array","from","undefined","generate","seed","fromJwk","publicKeyJwk","privateKeyJwk","x","d","fromFingerprint","fingerprint","substr","buffer","slice","fingerprintFromPublicKey","publicKeyBuffer","kid","kty","crv","G2","pad","privateKeyBuffer","addEncodedPublicKey","publicKeyNode","Buffer","signer","verifier","keyBytes","Uint8Array","set","verifyFingerprint","error","valid","fingerprintBuffer","e","equals"],"sourceRoot":"../../src","sources":["Bls12381G2KeyPair.ts"],"mappings":"AAAA,SAASA,SAAS,QAAQ,GAAG;AAC7B,OAAOC,IAAI,MAAM,MAAM;AACvB,SACEC,0BAA0B,EAC1BC,yBAAyB,QACpB,4BAA4B;AACnC,SAASC,wBAAwB,EAAEC,qBAAqB,QAAQ,SAAS;AACzE,SACEC,YAAY,QAOP,SAAS;AAChB,SAASC,SAAS,QAAQ,SAAS;;AAEnC;AACA;AACA;AACA;AACA;AACA,MAAMC,mCAAmC,GAAG,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACA,MAAMC,8BAA8B,GAAG,IAAI;;AAE3C;AACA;AACA;AACA;AACA,MAAMC,gCAAgC,GAAG,IAAI;AAE7C,MAAMC,qCAAqC,GAAG,EAAE;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,aAAa,GAAIC,GAAsB,IAAoB;EAC/D,IAAI,CAACA,GAAG,CAACC,eAAe,EAAE;IACxB,OAAO;MACL,MAAMC,IAAIA,CAAA,EAAwB;QAChC,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;MACjD;IACF,CAAC;EACH;EACA,OAAO;IACL,MAAMD,IAAIA,CAAC;MAAEE;IAAK,CAAC,EAAuB;MACxC,MAAMC,QAAQ,GAAGD,IAAI,CAACE,GAAG,CAAEC,CAAC,IAAKnB,IAAI,CAACoB,MAAM,CAACD,CAAC,CAAC,CAAC;MAChD,IAAIE,QAAQ,GAAG,MAAMtB,SAAS,CAC5B,UAAU,EACVuB,IAAI,CAACC,SAAS,CAAC;QACbN,QAAQ;QACRO,OAAO,EAAE;UACPC,SAAS,EAAEb,GAAG,CAACc,UAAU;UACzBC,SAAS,EAAEf,GAAG,CAACe;QACjB;MACF,CAAC,CACH,CAAC;MACD,OAAO3B,IAAI,CAAC4B,MAAM,CAACP,QAAQ,CAAC;IAC9B;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,eAAe,GAAIjB,GAAsB,IAAsB;EACnE,IAAI,CAACA,GAAG,CAACkB,cAAc,EAAE;IACvB,OAAO;MACL,MAAMC,MAAMA,CAAA,EAAqB;QAC/B,MAAM,IAAIhB,KAAK,CAAC,+BAA+B,CAAC;MAClD;IACF,CAAC;EACH;EAEA,OAAO;IACL,MAAMgB,MAAMA,CAAC;MAAEf,IAAI;MAAEgB;IAAU,CAAC,EAAoB;MAClD,MAAMf,QAAQ,GAAGD,IAAI,CAACE,GAAG,CAAEC,CAAC,IAAKnB,IAAI,CAACoB,MAAM,CAACD,CAAC,CAAC,CAAC;MAChD,MAAME,QAAQ,GAAGrB,IAAI,CAACoB,MAAM,CAACY,SAAS,CAAC;MACvC,IAAIC,GAAG,GAAG,MAAMlC,SAAS,CACvB,YAAY,EACZuB,IAAI,CAACC,SAAS,CAAC;QACbN,QAAQ;QACRU,SAAS,EAAEf,GAAG,CAACe,SAAS;QACxBK,SAAS,EAAEX;MACb,CAAC,CACH,CAAC;MACD,OAAOC,IAAI,CAACY,KAAK,CAACD,GAAG,CAAC;IACxB;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAME,iBAAiB,CAAC;EAK7BC,IAAI,GAAG,mBAAmB;EAE1BC,WAAWA,CAACC,OAA2C,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA;IACvD;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IACE,CAAAF,OAAO,aAAPA,OAAO,gBAAAC,qBAAA,GAAPD,OAAO,CAAEG,eAAe,cAAAF,qBAAA,uBAAxBA,qBAAA,CAA0BG,MAAM,MAAK,GAAG,IACxC,CAAAJ,OAAO,aAAPA,OAAO,gBAAAE,sBAAA,GAAPF,OAAO,CAAEG,eAAe,cAAAD,sBAAA,uBAAxBA,sBAAA,CAA0BE,MAAM,MAAK,GAAG,EACxC;MAAA,IAAAC,sBAAA;MACA,MAAM,IAAI5B,KAAK,CACb,2EAA2EuB,OAAO,aAAPA,OAAO,gBAAAK,sBAAA,GAAPL,OAAO,CAAEG,eAAe,cAAAE,sBAAA,uBAAxBA,sBAAA,CAA0BD,MAAM,EAC7G,CAAC;IACH;;IAEA;AACJ;AACA;AACA;AACA;IACI,IACE,OAAOJ,OAAO,CAACM,gBAAgB,KAAK,WAAW,IAC/CN,OAAO,CAACM,gBAAgB,CAACF,MAAM,KAAK,EAAE,IACtCJ,OAAO,CAACM,gBAAgB,CAACF,MAAM,KAAK,EAAE,EACtC;MACA,MAAM,IAAI3B,KAAK,CACb,0EAA0EuB,OAAO,CAACM,gBAAgB,CAACF,MAAM,EAC3G,CAAC;IACH;IACA,IAAI,CAACG,EAAE,GAAGP,OAAO,CAACO,EAAE;IACpB,IAAI,CAACC,UAAU,GAAGR,OAAO,CAACQ,UAAU;IACpC,IAAI,CAACjC,eAAe,GAAGyB,OAAO,CAACM,gBAAgB,GAC3CG,KAAK,CAACC,IAAI,CAAChD,IAAI,CAAC4B,MAAM,CAACU,OAAO,CAACM,gBAAgB,CAAC,CAAC,GACjDK,SAAS;IACb,IAAI,CAACnB,cAAc,GAAGiB,KAAK,CAACC,IAAI,CAAChD,IAAI,CAAC4B,MAAM,CAACU,OAAO,CAACG,eAAe,CAAC,CAAC;IACtE;EACF;EACA;AACF;AACA;AACA;AACA;AACA;EACE,aAAaS,QAAQA,CACnBZ,OAAgC,EACJ;IAC5B,MAAML,GAAG,GAAGK,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEa,IAAI,GACrB,MAAMpD,SAAS,CACb,qBAAqB,EACrBuB,IAAI,CAACC,SAAS,CAAC;MACb4B,IAAI,EAAEnD,IAAI,CAACoB,MAAM,CAACkB,OAAO,CAACa,IAAI;IAChC,CAAC,CACH,CAAC,GACD,MAAMpD,SAAS,CAAC,qBAAqB,EAAEuB,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,MAAMC,OAAiD,GAAGF,IAAI,CAACY,KAAK,CAACD,GAAG,CAAC;IACzE,OAAO,IAAIE,iBAAiB,CAAC;MAC3B,GAAGG,OAAO;MACVM,gBAAgB,EAAEpB,OAAO,CAACC,SAAS;MACnCgB,eAAe,EAAEjB,OAAO,CAACG;IAC3B,CAAC,CAAC;EACJ;EACA;AACF;AACA;AACA;AACA;AACA;EACE,aAAaqB,IAAIA,CAACV,OAAuB,EAA8B;IACrE,OAAO,IAAIH,iBAAiB,CAACG,OAAO,CAAC;EACvC;EACA;AACF;AACA;AACA;AACA;AACA;EACE,aAAac,OAAOA,CAACd,OAA0B,EAA8B;IAC3E,MAAM;MAAEO,EAAE;MAAEC,UAAU;MAAEO,YAAY;MAAEC;IAAc,CAAC,GAAGhB,OAAO;IAC/D,IACE,OAAOgB,aAAa,KAAK,WAAW;IACpC;AACN;AACA;AACA;AACA;IACMrD,0BAA0B,CAACqD,aAAa,CAAC,EACzC;MACA,OAAO,IAAInB,iBAAiB,CAAC;QAC3BU,EAAE;QACFC,UAAU;QACVL,eAAe,EAAEtC,wBAAwB,CAACmD,aAAa,CAACC,CAAW,CAAC;QACpEX,gBAAgB,EAAEzC,wBAAwB,CAACmD,aAAa,CAACE,CAAW;MACtE,CAAC,CAAC;IACJ;IAEA,IAAItD,yBAAyB,CAACmD,YAAY,CAAC,EAAE;MAC3C,OAAO,IAAIlB,iBAAiB,CAAC;QAC3BU,EAAE;QACFC,UAAU;QACVL,eAAe,EAAEtC,wBAAwB,CAACkD,YAAY,CAACE,CAAW;MACpE,CAAC,CAAC;IACJ;IAEA,MAAMxC,KAAK,CAAC,iCAAiC,CAAC;EAChD;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAO0C,eAAeA,CAAC;IACrBZ,EAAE;IACFC,UAAU;IACVY;EACG,CAAC,EAAqB;IACzB,IAAIA,WAAW,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIpD,mCAAmC,EAAE;MACnE,MAAM,IAAIQ,KAAK,CACb,6GAA6G2C,WAAW,CAACC,MAAM,CAC7H,CAAC,EACD,CACF,CAAC,IACH,CAAC;IACH;;IAEA;IACA,MAAMC,MAAM,GAAG5D,IAAI,CAAC4B,MAAM,CAAC8B,WAAW,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAIC,MAAM,CAAClB,MAAM,KAAKhC,qCAAqC,GAAG,CAAC,EAAE;MAC/D,MAAM,IAAIK,KAAK,CACb,6CAA6CL,qCAAqC,iBAChFkD,MAAM,CAAClB,MAAM,GAAG,CAAC,IAErB,CAAC;IACH;IAEA,IAAIkB,MAAM,CAAC,CAAC,CAAC,KAAKnD,gCAAgC,EAAE;MAClD,MAAM,IAAIM,KAAK,CACb,wEAAwEN,gCAAgC,iDAAiDmD,MAAM,CAAC,CAAC,CAAC,IACpK,CAAC;IACH;IAEA,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAKpD,8BAA8B,EAAE;MAChD,MAAM,IAAIO,KAAK,CACb,4EAA4EP,8BAA8B,8CAA8CoD,MAAM,CAAC,CAAC,CAAC,IACnK,CAAC;IACH;IAEA,MAAMnB,eAAe,GAAGzC,IAAI,CAACoB,MAAM,CAACwC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEpD;IACA,IAAI,CAACf,UAAU,EAAE;MACfA,UAAU,GAAG,WAAWX,iBAAiB,CAAC2B,wBAAwB,CAAC;QACjErB;MACF,CAAC,CAAC,EAAE;IACN;;IAEA;IACA,IAAI,CAACI,EAAE,EAAE;MACPA,EAAE,GAAG,IAAIV,iBAAiB,CAAC2B,wBAAwB,CAAC;QAClDrB;MACF,CAAC,CAAC,EAAE;IACN;IAEA,OAAO,IAAIN,iBAAiB,CAAC;MAC3BU,EAAE;MACFC,UAAU;MACVL;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAId,SAASA,CAAA,EAAW;IACtB,OAAO3B,IAAI,CAACoB,MAAM,CAAC,IAAI,CAAC2C,eAAe,CAAC;EAC1C;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAIV,YAAYA,CAAA,EAAe;IAC7B,OAAO;MACLW,GAAG,EAAE,IAAI,CAACnB,EAAE;MACZoB,GAAG,EAAE,IAAI;MACTC,GAAG,EAAE7D,YAAY,CAAC8D,EAAE;MACpBZ,CAAC,EAAEjD,SAAS,CAACiB,SAAS,CAAC,IAAI,CAACwC,eAAe,EAAE;QAAEK,GAAG,EAAE;MAAM,CAAC;IAC7D,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAI1C,UAAUA,CAAA,EAAuB;IACnC,IAAI,IAAI,CAACb,eAAe,EAAE;MACxB,OAAOb,IAAI,CAACoB,MAAM,CAAC,IAAI,CAACiD,gBAAgB,CAAC;IAC3C;IACA,OAAOpB,SAAS;EAClB;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAIK,aAAaA,CAAA,EAA2B;IAC1C,IAAI,IAAI,CAACzC,eAAe,EAAE;MACxB,OAAO;QACLmD,GAAG,EAAE,IAAI,CAACnB,EAAE;QACZoB,GAAG,EAAE,IAAI;QACTC,GAAG,EAAE7D,YAAY,CAAC8D,EAAE;QACpBZ,CAAC,EAAEjD,SAAS,CAACiB,SAAS,CAAC,IAAI,CAACwC,eAAe,EAAE;UAAEK,GAAG,EAAE;QAAM,CAAC,CAAC;QAC5DZ,CAAC,EAAElD,SAAS,CAACiB,SAAS,CAAC,IAAI,CAAC8C,gBAAgB,EAAE;UAAED,GAAG,EAAE;QAAM,CAAC;MAC9D,CAAC;IACH;IACA,OAAOnB,SAAS;EAClB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEqB,mBAAmBA,CAACC,aAAkB,EAAO;IAC3CA,aAAa,CAAC9B,eAAe,GAAG,IAAI,CAACd,SAAS;IAC9C,OAAO4C,aAAa;EACtB;EACA,IAAIR,eAAeA,CAAA,EAAW;IAC5B,OAAOS,MAAM,CAACxB,IAAI,CAAC,IAAI,CAAClB,cAAc,IAAI,EAAE,CAAC;EAC/C;EACA,IAAIuC,gBAAgBA,CAAA,EAAW;IAC7B,OAAOG,MAAM,CAACxB,IAAI,CAAC,IAAI,CAACnC,eAAe,IAAI,EAAE,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;EACE4D,MAAMA,CAAA,EAAkB;IACtB,OAAO9D,aAAa,CAAC,IAAI,CAAC;EAC5B;;EAEA;AACF;AACA;AACA;AACA;EACE+D,QAAQA,CAAA,EAAoB;IAC1B,OAAO7C,eAAe,CAAC,IAAI,CAAC;EAC9B;;EAEA;AACF;AACA;AACA;AACA;EACE6B,WAAWA,CAAA,EAAW;IACpB,MAAMjB,eAAe,GAAG,IAAI,CAACd,SAAS;IACtC,OAAOQ,iBAAiB,CAAC2B,wBAAwB,CAAC;MAAErB;IAAgB,CAAC,CAAC;EACxE;EACA,OAAOqB,wBAAwBA,CAAC;IAAErB;EAAqB,CAAC,EAAU;IAChE,MAAMkC,QAAQ,GAAG3E,IAAI,CAAC4B,MAAM,CAACa,eAAe,CAAC;IAC7C,MAAMmB,MAAM,GAAG,IAAIgB,UAAU,CAAC,CAAC,GAAGD,QAAQ,CAACjC,MAAM,CAAC;IAElDkB,MAAM,CAAC,CAAC,CAAC,GAAGnD,gCAAgC;IAC5CmD,MAAM,CAAC,CAAC,CAAC,GAAGpD,8BAA8B;IAC1CoD,MAAM,CAACiB,GAAG,CAACF,QAAQ,EAAE,CAAC,CAAC;IAEvB,OAAO,GAAGpE,mCAAmC,GAAGP,IAAI,CAACoB,MAAM,CAACwC,MAAM,CAAC,EAAE;EACvE;EACA;AACF;AACA;AACA;AACA;AACA;AACA;EACEkB,iBAAiBA,CAACpB,WAAmB,EAAO;IAC1C;IACA;IACA,IACE,EACE,OAAOA,WAAW,KAAK,QAAQ,IAC/BA,WAAW,CAAC,CAAC,CAAC,KAAKnD,mCAAmC,CACvD,EACD;MACA,OAAO;QACLwE,KAAK,EAAE,IAAIhE,KAAK,CAAC,mDAAmD,CAAC;QACrEiE,KAAK,EAAE;MACT,CAAC;IACH;IACA,IAAIC,iBAAiB;IACrB,IAAI;MACFA,iBAAiB,GAAGjF,IAAI,CAAC4B,MAAM,CAAC8B,WAAW,CAACG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,OAAOqB,CAAC,EAAE;MACV,OAAO;QAAEH,KAAK,EAAEG,CAAC;QAAEF,KAAK,EAAE;MAAM,CAAC;IACnC;IACA,MAAMjB,eAAe,GAAG,IAAI,CAACA,eAAe;;IAE5C;IACA,MAAMiB,KAAK,GACT5E,qBAAqB,CAAC6E,iBAAiB,CAACpB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,IAC/DE,eAAe,CAACoB,MAAM,CAACF,iBAAiB,CAACpB,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAACmB,KAAK,EAAE;MACV,OAAO;QACLD,KAAK,EAAE,IAAIhE,KAAK,CAAC,gDAAgD,CAAC;QAClEiE,KAAK,EAAE;MACT,CAAC;IACH;IACA,OAAO;MAAEA;IAAM,CAAC;EAClB;AACF","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ export class Bls12381G2KeyPair {}
7
+ export class KeyPairSigner {}
8
+ export class KeyPairVerifier {}
9
+ //# sourceMappingURL=index.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Bls12381G2KeyPair","KeyPairSigner","KeyPairVerifier"],"sourceRoot":"../../src","sources":["index.d.ts"],"mappings":"AAAA;AACA;;AAEA;;AA6FA,OAAO,MAAMA,iBAAiB,CAAC;AAuB/B,OAAO,MAAMC,aAAa,CAAC;AAG3B,OAAO,MAAMC,eAAe,CAAC","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import { NativeModules, Platform } from 'react-native';
2
+ const LINKING_ERROR = `The package '@nuggetslife/vc' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
3
+ ios: "- You have run 'pod install'\n",
4
+ default: ''
5
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
6
+ const Vc = NativeModules.Vc ? NativeModules.Vc : new Proxy({}, {
7
+ get() {
8
+ throw new Error(LINKING_ERROR);
9
+ }
10
+ });
11
+ export function vc_facade(action, options) {
12
+ return Vc.vc_facade(action, options);
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","Vc","Proxy","get","Error","vc_facade","action","options"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,0EAA0E,GAC1ED,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,EAAE,GAAGN,aAAa,CAACM,EAAE,GACvBN,aAAa,CAACM,EAAE,GAChB,IAAIC,KAAK,CACT,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEH,OAAO,SAASQ,SAASA,CAACC,MAAc,EAAEC,OAAe,EAAmB;EAC1E,OAAON,EAAE,CAACI,SAAS,CAACC,MAAM,EAAEC,OAAO,CAAC;AACtC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ export let BlsCurveName = /*#__PURE__*/function (BlsCurveName) {
2
+ BlsCurveName["DEPRECATED_G1"] = "BLS12381_G1";
3
+ BlsCurveName["DEPRECATED_G2"] = "BLS12381_G2";
4
+ BlsCurveName["G1"] = "Bls12381G1";
5
+ BlsCurveName["G2"] = "Bls12381G2";
6
+ return BlsCurveName;
7
+ }({});
8
+ //# sourceMappingURL=BlsCurveName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BlsCurveName"],"sourceRoot":"../../../src","sources":["types/BlsCurveName.ts"],"mappings":"AAAA,WAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=GenerateKeyPairOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/GenerateKeyPairOptions.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=JsonWebKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/JsonWebKey.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JwkKeyPairOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/JwkKeyPairOptions.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ export let JwkKty = /*#__PURE__*/function (JwkKty) {
2
+ JwkKty["OctetKeyPair"] = "OKP";
3
+ JwkKty["EC"] = "EC";
4
+ JwkKty["RSA"] = "RSA";
5
+ return JwkKty;
6
+ }({});
7
+ //# sourceMappingURL=JwkKty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["JwkKty"],"sourceRoot":"../../../src","sources":["types/JwkKty.ts"],"mappings":"AAAA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=KeyPairOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/KeyPairOptions.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=KeyPairSigner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/KeyPairSigner.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=KeyPairVerifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/KeyPairVerifier.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export { BlsCurveName } from "./BlsCurveName";
2
+ export { JwkKty } from "./JwkKty";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BlsCurveName","JwkKty"],"sourceRoot":"../../../src","sources":["types/index.ts"],"mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAgB;AAG7C,SAASC,MAAM,QAAQ,UAAU","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { base64url } from "rfc4648";
2
+ import bs58 from "bs58";
3
+ export const convertBase64urlToBase58 = value => {
4
+ return bs58.encode(base64url.parse(value, {
5
+ loose: true
6
+ }));
7
+ };
8
+ export function uint8ArrayToHexString(arr) {
9
+ return Array.prototype.map.call(arr, function (byte) {
10
+ return ('0' + (byte & 0xFF).toString(16)).slice(-2);
11
+ }).join('');
12
+ }
13
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["base64url","bs58","convertBase64urlToBase58","value","encode","parse","loose","uint8ArrayToHexString","arr","Array","prototype","map","call","byte","toString","slice","join"],"sourceRoot":"../../../src","sources":["utils/codec.ts"],"mappings":"AAAA,SAASA,SAAS,QAAQ,SAAS;AACnC,OAAOC,IAAI,MAAM,MAAM;AAEvB,OAAO,MAAMC,wBAAwB,GAAIC,KAAa,IAAa;EACjE,OAAOF,IAAI,CAACG,MAAM,CAACJ,SAAS,CAACK,KAAK,CAACF,KAAK,EAAE;IAAEG,KAAK,EAAE;EAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,OAAO,SAASC,qBAAqBA,CAACC,GAAe,EAAE;EACrD,OAAOC,KAAK,CAACC,SAAS,CAACC,GAAG,CAACC,IAAI,CAACJ,GAAG,EAAE,UAASK,IAAI,EAAE;IAClD,OAAO,CAAC,GAAG,GAAG,CAACA,IAAI,GAAG,IAAI,EAAEC,QAAQ,CAAC,EAAE,CAAC,EAAEC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrD,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;AACb","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { convertBase64urlToBase58, uint8ArrayToHexString } from "./codec";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["convertBase64urlToBase58","uint8ArrayToHexString"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"AAAA,SAASA,wBAAwB,EAAEC,qBAAqB,QAAQ,SAAS","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { assertPrivateBlsJwk, assertPublicBlsJwk } from "./JsonWebKey";
2
+ import { BlsCurveName } from "../types";
3
+ export const assertBls12381G2PublicJwk = jwk => {
4
+ // Returns false because the BLS12-381 G2 x coordinate is not the proper length
5
+ return assertPublicBlsJwk(jwk) && (jwk.crv === BlsCurveName.DEPRECATED_G2 || jwk.crv === BlsCurveName.G2) && jwk.x.length === 128;
6
+ };
7
+ export const assertBls12381G2PrivateJwk = jwk => {
8
+ // Returns false because the BLS12-381 G2 x coordinate is not the proper length
9
+ return assertPrivateBlsJwk(jwk) && (jwk.crv === BlsCurveName.DEPRECATED_G2 || jwk.crv === BlsCurveName.G2) && jwk.x.length === 128;
10
+ };
11
+ //# sourceMappingURL=Bls12381G2Jwk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertPrivateBlsJwk","assertPublicBlsJwk","BlsCurveName","assertBls12381G2PublicJwk","jwk","crv","DEPRECATED_G2","G2","x","length","assertBls12381G2PrivateJwk"],"sourceRoot":"../../../src","sources":["validators/Bls12381G2Jwk.ts"],"mappings":"AAAA,SAASA,mBAAmB,EAAEC,kBAAkB,QAAQ,cAAc;AACtE,SAASC,YAAY,QAAQ,UAAU;AAGvC,OAAO,MAAMC,yBAAyB,GAAIC,GAAe,IAAc;EACrE;EACA,OACEH,kBAAkB,CAACG,GAAG,CAAC,KACtBA,GAAG,CAACC,GAAG,KAAKH,YAAY,CAACI,aAAa,IAAIF,GAAG,CAACC,GAAG,KAAKH,YAAY,CAACK,EAAE,CAAC,IACvEH,GAAG,CAACI,CAAC,CAACC,MAAM,KAAK,GAAG;AAExB,CAAC;AAED,OAAO,MAAMC,0BAA0B,GAAIN,GAAe,IAAc;EACtE;EACA,OACEJ,mBAAmB,CAACI,GAAG,CAAC,KACvBA,GAAG,CAACC,GAAG,KAAKH,YAAY,CAACI,aAAa,IAAIF,GAAG,CAACC,GAAG,KAAKH,YAAY,CAACK,EAAE,CAAC,IACvEH,GAAG,CAACI,CAAC,CAACC,MAAM,KAAK,GAAG;AAExB,CAAC","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { BlsCurveName, JwkKty } from "../types";
2
+ const checkCommonBlsJwkValues = jwk => {
3
+ const allowedCurveNames = [BlsCurveName.G1, BlsCurveName.G2, BlsCurveName.DEPRECATED_G1, BlsCurveName.DEPRECATED_G2];
4
+ return (
5
+ // A BLS key type MUST be set to "EC" or "OKP"
6
+ typeof jwk !== "undefined" && (jwk.kty === JwkKty.EC || jwk.kty === JwkKty.OctetKeyPair) &&
7
+ // The curve property should indicate either one of the types listed on allowedCurveNames
8
+ allowedCurveNames.indexOf(jwk.crv) >= 0
9
+ );
10
+ };
11
+ export const assertPublicBlsJwk = jwk => {
12
+ // Performs common checks, but also checks to make sure a d value is not included
13
+ // If a d value is included then this is a private key not a public key
14
+ return checkCommonBlsJwkValues(jwk) && typeof jwk.d === "undefined";
15
+ };
16
+ export const assertPrivateBlsJwk = jwk => {
17
+ return checkCommonBlsJwkValues(jwk);
18
+ };
19
+ //# sourceMappingURL=JsonWebKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BlsCurveName","JwkKty","checkCommonBlsJwkValues","jwk","allowedCurveNames","G1","G2","DEPRECATED_G1","DEPRECATED_G2","kty","EC","OctetKeyPair","indexOf","crv","assertPublicBlsJwk","d","assertPrivateBlsJwk"],"sourceRoot":"../../../src","sources":["validators/JsonWebKey.ts"],"mappings":"AAAA,SAASA,YAAY,EAAEC,MAAM,QAAQ,UAAU;AAG/C,MAAMC,uBAAuB,GAAIC,GAAe,IAAc;EAC5D,MAAMC,iBAA2B,GAAG,CAClCJ,YAAY,CAACK,EAAE,EACfL,YAAY,CAACM,EAAE,EACfN,YAAY,CAACO,aAAa,EAC1BP,YAAY,CAACQ,aAAa,CAC3B;EACD;IACE;IACA,OAAOL,GAAG,KAAK,WAAW,KACzBA,GAAG,CAACM,GAAG,KAAKR,MAAM,CAACS,EAAE,IAAIP,GAAG,CAACM,GAAG,KAAKR,MAAM,CAACU,YAAY,CAAC;IAC1D;IACAP,iBAAiB,CAACQ,OAAO,CAACT,GAAG,CAACU,GAAG,CAAC,IAAI;EAAC;AAE3C,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAAIX,GAAe,IAAc;EAC9D;EACA;EACA,OAAOD,uBAAuB,CAACC,GAAG,CAAC,IAAI,OAAOA,GAAG,CAACY,CAAC,KAAK,WAAW;AACrE,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAIb,GAAe,IAAc;EAC/D,OAAOD,uBAAuB,CAACC,GAAG,CAAC;AACrC,CAAC","ignoreList":[]}