@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.
- package/LICENSE +20 -0
- package/README.md +31 -0
- package/android/build.gradle +101 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/nuggetslife/bindings/vc/vc.kt +673 -0
- package/android/src/main/java/com/nuggetslife/vc/VcModule.kt +30 -0
- package/android/src/main/java/com/nuggetslife/vc/VcPackage.kt +17 -0
- package/android/src/main/jniLibs/arm64-v8a/libvc.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libvc.so +0 -0
- package/android/src/main/jniLibs/x86/libvc.so +0 -0
- package/android/src/main/jniLibs/x86_64/libvc.so +0 -0
- package/ios/Vc-Bridging-Header.h +2 -0
- package/ios/VcModule.mm +14 -0
- package/ios/VcModule.swift +23 -0
- package/ios/vc.swift +446 -0
- package/ios/vc.xcframework/Info.plist +48 -0
- package/ios/vc.xcframework/ios-arm64/Headers/module.modulemap +6 -0
- package/ios/vc.xcframework/ios-arm64/Headers/vcFFI.h +174 -0
- package/ios/vc.xcframework/ios-arm64/libvc.a +0 -0
- package/ios/vc.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap +6 -0
- package/ios/vc.xcframework/ios-arm64_x86_64-simulator/Headers/vcFFI.h +174 -0
- package/ios/vc.xcframework/ios-arm64_x86_64-simulator/libvc.a +0 -0
- package/ios/vcFFI.h +174 -0
- package/lib/commonjs/Bls12381G2KeyPair.js +405 -0
- package/lib/commonjs/Bls12381G2KeyPair.js.map +1 -0
- package/lib/commonjs/index.d.js +18 -0
- package/lib/commonjs/index.d.js.map +1 -0
- package/lib/commonjs/index.js +20 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types/BlsCurveName.js +14 -0
- package/lib/commonjs/types/BlsCurveName.js.map +1 -0
- package/lib/commonjs/types/GenerateKeyPairOptions.js +2 -0
- package/lib/commonjs/types/GenerateKeyPairOptions.js.map +1 -0
- package/lib/commonjs/types/JsonWebKey.js +2 -0
- package/lib/commonjs/types/JsonWebKey.js.map +1 -0
- package/lib/commonjs/types/JwkKeyPairOptions.js +6 -0
- package/lib/commonjs/types/JwkKeyPairOptions.js.map +1 -0
- package/lib/commonjs/types/JwkKty.js +13 -0
- package/lib/commonjs/types/JwkKty.js.map +1 -0
- package/lib/commonjs/types/KeyPairOptions.js +2 -0
- package/lib/commonjs/types/KeyPairOptions.js.map +1 -0
- package/lib/commonjs/types/KeyPairSigner.js +2 -0
- package/lib/commonjs/types/KeyPairSigner.js.map +1 -0
- package/lib/commonjs/types/KeyPairVerifier.js +2 -0
- package/lib/commonjs/types/KeyPairVerifier.js.map +1 -0
- package/lib/commonjs/types/index.js +20 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/utils/codec.js +22 -0
- package/lib/commonjs/utils/codec.js.map +1 -0
- package/lib/commonjs/utils/index.js +19 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/validators/Bls12381G2Jwk.js +19 -0
- package/lib/commonjs/validators/Bls12381G2Jwk.js.map +1 -0
- package/lib/commonjs/validators/JsonWebKey.js +27 -0
- package/lib/commonjs/validators/JsonWebKey.js.map +1 -0
- package/lib/module/Bls12381G2KeyPair.js +398 -0
- package/lib/module/Bls12381G2KeyPair.js.map +1 -0
- package/lib/module/index.d.js +9 -0
- package/lib/module/index.d.js.map +1 -0
- package/lib/module/index.js +14 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types/BlsCurveName.js +8 -0
- package/lib/module/types/BlsCurveName.js.map +1 -0
- package/lib/module/types/GenerateKeyPairOptions.js +2 -0
- package/lib/module/types/GenerateKeyPairOptions.js.map +1 -0
- package/lib/module/types/JsonWebKey.js +2 -0
- package/lib/module/types/JsonWebKey.js.map +1 -0
- package/lib/module/types/JwkKeyPairOptions.js +2 -0
- package/lib/module/types/JwkKeyPairOptions.js.map +1 -0
- package/lib/module/types/JwkKty.js +7 -0
- package/lib/module/types/JwkKty.js.map +1 -0
- package/lib/module/types/KeyPairOptions.js +2 -0
- package/lib/module/types/KeyPairOptions.js.map +1 -0
- package/lib/module/types/KeyPairSigner.js +2 -0
- package/lib/module/types/KeyPairSigner.js.map +1 -0
- package/lib/module/types/KeyPairVerifier.js +2 -0
- package/lib/module/types/KeyPairVerifier.js.map +1 -0
- package/lib/module/types/index.js +3 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/utils/codec.js +13 -0
- package/lib/module/utils/codec.js.map +1 -0
- package/lib/module/utils/index.js +2 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/validators/Bls12381G2Jwk.js +11 -0
- package/lib/module/validators/Bls12381G2Jwk.js.map +1 -0
- package/lib/module/validators/JsonWebKey.js +19 -0
- package/lib/module/validators/JsonWebKey.js.map +1 -0
- package/lib/typescript/src/Bls12381G2KeyPair.d.ts +104 -0
- package/lib/typescript/src/Bls12381G2KeyPair.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types/BlsCurveName.d.ts +7 -0
- package/lib/typescript/src/types/BlsCurveName.d.ts.map +1 -0
- package/lib/typescript/src/types/GenerateKeyPairOptions.d.ts +18 -0
- package/lib/typescript/src/types/GenerateKeyPairOptions.d.ts.map +1 -0
- package/lib/typescript/src/types/JsonWebKey.d.ts +60 -0
- package/lib/typescript/src/types/JsonWebKey.d.ts.map +1 -0
- package/lib/typescript/src/types/JwkKeyPairOptions.d.ts +23 -0
- package/lib/typescript/src/types/JwkKeyPairOptions.d.ts.map +1 -0
- package/lib/typescript/src/types/JwkKty.d.ts +6 -0
- package/lib/typescript/src/types/JwkKty.d.ts.map +1 -0
- package/lib/typescript/src/types/KeyPairOptions.d.ts +22 -0
- package/lib/typescript/src/types/KeyPairOptions.d.ts.map +1 -0
- package/lib/typescript/src/types/KeyPairSigner.d.ts +7 -0
- package/lib/typescript/src/types/KeyPairSigner.d.ts.map +1 -0
- package/lib/typescript/src/types/KeyPairVerifier.d.ts +8 -0
- package/lib/typescript/src/types/KeyPairVerifier.d.ts.map +1 -0
- package/lib/typescript/src/types/index.d.ts +9 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/codec.d.ts +3 -0
- package/lib/typescript/src/utils/codec.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +2 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/validators/Bls12381G2Jwk.d.ts +4 -0
- package/lib/typescript/src/validators/Bls12381G2Jwk.d.ts.map +1 -0
- package/lib/typescript/src/validators/JsonWebKey.d.ts +4 -0
- package/lib/typescript/src/validators/JsonWebKey.d.ts.map +1 -0
- package/nuggetslife-vc.podspec +42 -0
- package/package.json +164 -0
- package/src/Bls12381G2KeyPair.ts +447 -0
- package/src/index.d.ts +126 -0
- package/src/index.tsx +22 -0
- package/src/types/BlsCurveName.ts +6 -0
- package/src/types/GenerateKeyPairOptions.ts +17 -0
- package/src/types/JsonWebKey.ts +68 -0
- package/src/types/JwkKeyPairOptions.ts +24 -0
- package/src/types/JwkKty.ts +5 -0
- package/src/types/KeyPairOptions.ts +21 -0
- package/src/types/KeyPairSigner.ts +6 -0
- package/src/types/KeyPairVerifier.ts +8 -0
- package/src/types/index.ts +8 -0
- package/src/utils/codec.ts +12 -0
- package/src/utils/index.ts +1 -0
- package/src/validators/Bls12381G2Jwk.ts +21 -0
- 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":"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","ignoreList":[]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/GenerateKeyPairOptions.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/JsonWebKey.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/JwkKeyPairOptions.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/KeyPairOptions.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/KeyPairSigner.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/KeyPairVerifier.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -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 @@
|
|
|
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":[]}
|