@sphereon/ssi-sdk-ext.key-utils 0.24.1-next.3 → 0.24.1-next.64
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/dist/functions.d.ts +6 -0
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +124 -18
- package/dist/functions.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/jwk-jcs.d.ts +0 -1
- package/dist/jwk-jcs.d.ts.map +1 -1
- package/dist/jwk-jcs.js.map +1 -1
- package/dist/types/key-util-types.d.ts +1 -0
- package/dist/types/key-util-types.d.ts.map +1 -1
- package/dist/types/key-util-types.js.map +1 -1
- package/package.json +6 -3
- package/src/functions.ts +131 -12
- package/src/index.ts +0 -2
- package/src/jwk-jcs.ts +0 -1
- package/src/types/key-util-types.ts +1 -0
- package/dist/x509/index.d.ts +0 -4
- package/dist/x509/index.d.ts.map +0 -1
- package/dist/x509/index.js +0 -20
- package/dist/x509/index.js.map +0 -1
- package/dist/x509/rsa-key.d.ts +0 -11
- package/dist/x509/rsa-key.d.ts.map +0 -1
- package/dist/x509/rsa-key.js +0 -101
- package/dist/x509/rsa-key.js.map +0 -1
- package/dist/x509/rsa-signer.d.ts +0 -25
- package/dist/x509/rsa-signer.d.ts.map +0 -1
- package/dist/x509/rsa-signer.js +0 -105
- package/dist/x509/rsa-signer.js.map +0 -1
- package/dist/x509/x509-utils.d.ts +0 -25
- package/dist/x509/x509-utils.d.ts.map +0 -1
- package/dist/x509/x509-utils.js +0 -176
- package/dist/x509/x509-utils.js.map +0 -1
- package/src/x509/index.ts +0 -3
- package/src/x509/rsa-key.ts +0 -81
- package/src/x509/rsa-signer.ts +0 -81
- package/src/x509/x509-utils.ts +0 -145
package/src/functions.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { randomBytes } from '@ethersproject/random'
|
|
2
|
+
import { PEMToJwk, generateRSAKeyAsPEM, hexToBase64, privateKeyHexFromPEM, hexToPEM } from '@sphereon/ssi-sdk-ext.x509-utils'
|
|
2
3
|
import { generateKeyPair as generateSigningKeyPair } from '@stablelib/ed25519'
|
|
3
4
|
import { IAgentContext, IKey, IKeyManager, ManagedKeyInfo, MinimalImportableKey } from '@veramo/core'
|
|
4
|
-
import Debug from 'debug'
|
|
5
5
|
|
|
6
6
|
import { JsonWebKey } from 'did-resolver'
|
|
7
7
|
import elliptic from 'elliptic'
|
|
8
8
|
import * as u8a from 'uint8arrays'
|
|
9
9
|
import { digestMethodParams } from './digest-methods'
|
|
10
10
|
import { ENC_KEY_ALGS, IImportProvidedOrGeneratedKeyArgs, JWK, JwkKeyUse, KeyCurve, KeyType, SIG_KEY_ALGS, TKeyType } from './types'
|
|
11
|
-
import {
|
|
11
|
+
import { Loggers } from '@sphereon/ssi-types'
|
|
12
|
+
export const logger = Loggers.DEFAULT.get('sphereon:key-utils')
|
|
12
13
|
|
|
13
|
-
const debug = Debug('sphereon:kms:local')
|
|
14
14
|
/**
|
|
15
15
|
* Generates a random Private Hex Key for the specified key type
|
|
16
16
|
* @param type The key type
|
|
@@ -37,6 +37,8 @@ export const generatePrivateKeyHex = async (type: TKeyType): Promise<string> =>
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
const algorithmsFromKeyType = (type: string): string[] => [type]
|
|
41
|
+
|
|
40
42
|
/**
|
|
41
43
|
* We optionally generate and then import our own keys.
|
|
42
44
|
*
|
|
@@ -76,15 +78,22 @@ export async function importProvidedOrGeneratedKey(
|
|
|
76
78
|
privateKeyHex = privateKeyHexFromPEM(key.meta.x509.privateKeyPEM)
|
|
77
79
|
}
|
|
78
80
|
}
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
+
if (privateKeyHex) {
|
|
82
|
+
return context.agent.keyManagerImport({
|
|
83
|
+
...key,
|
|
84
|
+
kms: args.kms,
|
|
85
|
+
type,
|
|
86
|
+
privateKeyHex: privateKeyHex!,
|
|
87
|
+
})
|
|
81
88
|
}
|
|
82
89
|
|
|
83
|
-
return context.agent.
|
|
84
|
-
...key,
|
|
85
|
-
kms: args.kms,
|
|
90
|
+
return context.agent.keyManagerCreate({
|
|
86
91
|
type,
|
|
87
|
-
|
|
92
|
+
kms: args.kms,
|
|
93
|
+
meta: {
|
|
94
|
+
algorithms: algorithmsFromKeyType(type),
|
|
95
|
+
keyAlias: args.alias,
|
|
96
|
+
},
|
|
88
97
|
})
|
|
89
98
|
}
|
|
90
99
|
|
|
@@ -236,7 +245,7 @@ const assertProperKeyLength = (keyHex: string, expectedKeyLength: number | numbe
|
|
|
236
245
|
*/
|
|
237
246
|
const toSecp256k1Jwk = (keyHex: string, opts?: { use?: JwkKeyUse; isPrivateKey?: boolean }): JWK => {
|
|
238
247
|
const { use } = opts ?? {}
|
|
239
|
-
debug(`toSecp256k1Jwk keyHex: ${keyHex}, length: ${keyHex.length}`)
|
|
248
|
+
logger.debug(`toSecp256k1Jwk keyHex: ${keyHex}, length: ${keyHex.length}`)
|
|
240
249
|
if (opts?.isPrivateKey) {
|
|
241
250
|
assertProperKeyLength(keyHex, [64])
|
|
242
251
|
} else {
|
|
@@ -267,7 +276,7 @@ const toSecp256k1Jwk = (keyHex: string, opts?: { use?: JwkKeyUse; isPrivateKey?:
|
|
|
267
276
|
*/
|
|
268
277
|
const toSecp256r1Jwk = (keyHex: string, opts?: { use?: JwkKeyUse; isPrivateKey?: boolean }): JWK => {
|
|
269
278
|
const { use } = opts ?? {}
|
|
270
|
-
debug(`toSecp256r1Jwk keyHex: ${keyHex}, length: ${keyHex.length}`)
|
|
279
|
+
logger.debug(`toSecp256r1Jwk keyHex: ${keyHex}, length: ${keyHex.length}`)
|
|
271
280
|
if (opts?.isPrivateKey) {
|
|
272
281
|
assertProperKeyLength(keyHex, [64])
|
|
273
282
|
} else {
|
|
@@ -276,7 +285,7 @@ const toSecp256r1Jwk = (keyHex: string, opts?: { use?: JwkKeyUse; isPrivateKey?:
|
|
|
276
285
|
|
|
277
286
|
const secp256r1 = new elliptic.ec('p256')
|
|
278
287
|
const keyBytes = u8a.fromString(keyHex, 'base16')
|
|
279
|
-
debug(`keyBytes length: ${keyBytes}`)
|
|
288
|
+
logger.debug(`keyBytes length: ${keyBytes}`)
|
|
280
289
|
const keyPair = opts?.isPrivateKey ? secp256r1.keyFromPrivate(keyBytes) : secp256r1.keyFromPublic(keyBytes)
|
|
281
290
|
const pubPoint = keyPair.getPublic()
|
|
282
291
|
return {
|
|
@@ -341,3 +350,113 @@ export const padLeft = (args: { data: string; size?: number; padString?: string
|
|
|
341
350
|
const length = padString.length
|
|
342
351
|
return padString.repeat((size - data.length) / length) + data
|
|
343
352
|
}
|
|
353
|
+
|
|
354
|
+
enum OIDType {
|
|
355
|
+
Secp256k1,
|
|
356
|
+
Secp256r1,
|
|
357
|
+
Ed25519,
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
const OID: Record<OIDType, Uint8Array> = {
|
|
361
|
+
[OIDType.Secp256k1]: new Uint8Array([0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01]),
|
|
362
|
+
[OIDType.Secp256r1]: new Uint8Array([0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07]),
|
|
363
|
+
[OIDType.Ed25519]: new Uint8Array([0x06, 0x03, 0x2b, 0x65, 0x70]),
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
const compareUint8Arrays = (a: Uint8Array, b: Uint8Array): boolean => {
|
|
367
|
+
if (a.length !== b.length) {
|
|
368
|
+
return false
|
|
369
|
+
}
|
|
370
|
+
for (let i = 0; i < a.length; i++) {
|
|
371
|
+
if (a[i] !== b[i]) {
|
|
372
|
+
return false
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return true
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const findSubarray = (haystack: Uint8Array, needle: Uint8Array): number => {
|
|
379
|
+
for (let i = 0; i <= haystack.length - needle.length; i++) {
|
|
380
|
+
if (compareUint8Arrays(haystack.subarray(i, i + needle.length), needle)) {
|
|
381
|
+
return i
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return -1
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
const getTargetOID = (keyType: TKeyType) => {
|
|
388
|
+
switch (keyType) {
|
|
389
|
+
case 'Secp256k1':
|
|
390
|
+
return OID[OIDType.Secp256k1]
|
|
391
|
+
case 'Secp256r1':
|
|
392
|
+
return OID[OIDType.Secp256r1]
|
|
393
|
+
case 'Ed25519':
|
|
394
|
+
return OID[OIDType.Ed25519]
|
|
395
|
+
default:
|
|
396
|
+
throw new Error(`Unsupported key type: ${keyType}`)
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export const isAsn1Der = (key: Uint8Array): boolean => key[0] === 0x30
|
|
401
|
+
|
|
402
|
+
export const asn1DerToRawPublicKey = (derKey: Uint8Array, keyType: TKeyType): Uint8Array => {
|
|
403
|
+
if (!isAsn1Der(derKey)) {
|
|
404
|
+
throw new Error('Invalid DER encoding: Expected to start with sequence tag')
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
let index = 2
|
|
408
|
+
if (derKey[1] & 0x80) {
|
|
409
|
+
const lengthBytesCount = derKey[1] & 0x7f
|
|
410
|
+
index += lengthBytesCount
|
|
411
|
+
}
|
|
412
|
+
const targetOid = getTargetOID(keyType)
|
|
413
|
+
const oidIndex = findSubarray(derKey, targetOid)
|
|
414
|
+
if (oidIndex === -1) {
|
|
415
|
+
throw new Error(`OID for ${keyType} not found in DER encoding`)
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
index = oidIndex + targetOid.length
|
|
419
|
+
|
|
420
|
+
while (index < derKey.length && derKey[index] !== 0x03) {
|
|
421
|
+
index++
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
if (index >= derKey.length) {
|
|
425
|
+
throw new Error('Invalid DER encoding: Bit string not found')
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// Skip the bit string tag (0x03) and length byte
|
|
429
|
+
index += 2
|
|
430
|
+
|
|
431
|
+
// Skip the unused bits count byte
|
|
432
|
+
index++
|
|
433
|
+
|
|
434
|
+
return derKey.slice(index)
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
export const isRawCompressedPublicKey = (key: Uint8Array): boolean => key.length === 33 && (key[0] === 0x02 || key[0] === 0x03)
|
|
438
|
+
|
|
439
|
+
export const toRawCompressedHexPublicKey = (rawPublicKey: Uint8Array, keyType: TKeyType): string => {
|
|
440
|
+
if (isRawCompressedPublicKey(rawPublicKey)) {
|
|
441
|
+
throw new Error('Invalid public key format, an uncompressed raw public key is required as input, not a raw')
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
if (keyType === 'Secp256k1' || keyType === 'Secp256r1') {
|
|
445
|
+
if (rawPublicKey[0] === 0x04 && rawPublicKey.length === 65) {
|
|
446
|
+
const xCoordinate = rawPublicKey.slice(1, 33)
|
|
447
|
+
const yCoordinate = rawPublicKey.slice(33)
|
|
448
|
+
const prefix = new Uint8Array([yCoordinate[31] % 2 === 0 ? 0x02 : 0x03])
|
|
449
|
+
const resultKey = hexStringFromUint8Array(new Uint8Array([...prefix, ...xCoordinate]))
|
|
450
|
+
logger.debug(`converted public key ${hexStringFromUint8Array(rawPublicKey)} to ${resultKey}`)
|
|
451
|
+
return resultKey
|
|
452
|
+
}
|
|
453
|
+
return u8a.toString(rawPublicKey, 'base16')
|
|
454
|
+
} else if (keyType === 'Ed25519') {
|
|
455
|
+
// Ed25519 keys are always in compressed form
|
|
456
|
+
return u8a.toString(rawPublicKey, 'base16')
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
throw new Error(`Unsupported key type: ${keyType}`)
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
export const hexStringFromUint8Array = (value: Uint8Array): string => u8a.toString(value, 'base16')
|
package/src/index.ts
CHANGED
package/src/jwk-jcs.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { TextDecoder, TextEncoder } from 'web-encoding'
|
|
2
2
|
import isPlainObject from 'lodash.isplainobject'
|
|
3
3
|
import type { ByteView } from 'multiformats/codecs/interface'
|
|
4
|
-
import type { JsonWebKey } from 'did-resolver'
|
|
5
4
|
|
|
6
5
|
const textEncoder = new TextEncoder()
|
|
7
6
|
const textDecoder = new TextDecoder()
|
package/dist/x509/index.d.ts
DELETED
package/dist/x509/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x509/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
|
package/dist/x509/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./rsa-key"), exports);
|
|
18
|
-
__exportStar(require("./rsa-signer"), exports);
|
|
19
|
-
__exportStar(require("./x509-utils"), exports);
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
package/dist/x509/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x509/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,+CAA4B;AAC5B,+CAA4B"}
|
package/dist/x509/rsa-key.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { HashAlgorithm } from '../digest-methods';
|
|
2
|
-
import { JWK } from '../types';
|
|
3
|
-
export type RSASignatureSchemes = 'RSASSA-PKCS1-V1_5' | 'RSA-PSS';
|
|
4
|
-
export type RSAEncryptionSchemes = 'RSAES-PKCS-v1_5 ' | 'RSAES-OAEP';
|
|
5
|
-
export declare const signAlgorithmToSchemeAndHashAlg: (signingAlg: string) => {
|
|
6
|
-
scheme: "RSASSA-PKCS1-V1_5" | "RSA-PSS";
|
|
7
|
-
hashAlgorithm: HashAlgorithm;
|
|
8
|
-
};
|
|
9
|
-
export declare const cryptoSubtleImportRSAKey: (jwk: JWK, scheme: RSAEncryptionSchemes | RSASignatureSchemes, hashAlgorithm?: HashAlgorithm) => Promise<CryptoKey>;
|
|
10
|
-
export declare const generateRSAKeyAsPEM: (scheme: RSAEncryptionSchemes | RSASignatureSchemes, hashAlgorithm?: HashAlgorithm, modulusLength?: number) => Promise<string>;
|
|
11
|
-
//# sourceMappingURL=rsa-key.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-key.d.ts","sourceRoot":"","sources":["../../src/x509/rsa-key.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9B,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,SAAS,CAAA;AAEjE,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,YAAY,CAAA;AA2BpE,eAAO,MAAM,+BAA+B,eAAgB,MAAM;;;CAajE,CAAA;AAED,eAAO,MAAM,wBAAwB,QAC9B,GAAG,UACA,oBAAoB,GAAG,mBAAmB,kBAClC,aAAa,KAC5B,QAAQ,SAAS,CAKnB,CAAA;AAED,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,GAAG,mBAAmB,kBAClC,aAAa,kBACb,MAAM,KACrB,QAAQ,MAAM,CAgBhB,CAAA"}
|
package/dist/x509/rsa-key.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.generateRSAKeyAsPEM = exports.cryptoSubtleImportRSAKey = exports.signAlgorithmToSchemeAndHashAlg = void 0;
|
|
36
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
37
|
-
const x509_utils_1 = require("./x509-utils");
|
|
38
|
-
const usage = (jwk) => {
|
|
39
|
-
var _a, _b, _c, _d;
|
|
40
|
-
if (jwk.key_ops && jwk.key_ops.length > 0) {
|
|
41
|
-
return jwk.key_ops;
|
|
42
|
-
}
|
|
43
|
-
if (jwk.use) {
|
|
44
|
-
const usages = [];
|
|
45
|
-
if (jwk.use.includes('sig')) {
|
|
46
|
-
usages.push('sign', 'verify');
|
|
47
|
-
}
|
|
48
|
-
else if (jwk.use.includes('enc')) {
|
|
49
|
-
usages.push('encrypt', 'decrypt');
|
|
50
|
-
}
|
|
51
|
-
if (usages.length > 0) {
|
|
52
|
-
return usages;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
if (jwk.kty === 'RSA') {
|
|
56
|
-
if (jwk.d) {
|
|
57
|
-
return ((_b = (_a = jwk.alg) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === null || _b === void 0 ? void 0 : _b.includes('QAEP')) ? ['encrypt'] : ['sign'];
|
|
58
|
-
}
|
|
59
|
-
return ((_d = (_c = jwk.alg) === null || _c === void 0 ? void 0 : _c.toUpperCase()) === null || _d === void 0 ? void 0 : _d.includes('QAEP')) ? ['decrypt'] : ['verify'];
|
|
60
|
-
}
|
|
61
|
-
// "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "unwrapKey" | "verify" | "wrapKey";
|
|
62
|
-
return jwk.d && jwk.kty !== 'RSA' ? ['sign', 'decrypt', 'verify', 'encrypt'] : ['verify'];
|
|
63
|
-
};
|
|
64
|
-
const signAlgorithmToSchemeAndHashAlg = (signingAlg) => {
|
|
65
|
-
const alg = signingAlg.toUpperCase();
|
|
66
|
-
let scheme;
|
|
67
|
-
if (alg.startsWith('RS')) {
|
|
68
|
-
scheme = 'RSASSA-PKCS1-V1_5';
|
|
69
|
-
}
|
|
70
|
-
else if (alg.startsWith('PS')) {
|
|
71
|
-
scheme = 'RSA-PSS';
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
throw Error(`Invalid signing algorithm supplied ${signingAlg}`);
|
|
75
|
-
}
|
|
76
|
-
const hashAlgorithm = `SHA-${alg.substring(2)}`;
|
|
77
|
-
return { scheme, hashAlgorithm };
|
|
78
|
-
};
|
|
79
|
-
exports.signAlgorithmToSchemeAndHashAlg = signAlgorithmToSchemeAndHashAlg;
|
|
80
|
-
const cryptoSubtleImportRSAKey = (jwk, scheme, hashAlgorithm) => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
-
const hashName = hashAlgorithm ? hashAlgorithm : jwk.alg ? `SHA-${jwk.alg.substring(2)}` : 'SHA-256';
|
|
82
|
-
const importParams = { name: scheme, hash: hashName };
|
|
83
|
-
return yield crypto.subtle.importKey('jwk', jwk, importParams, false, usage(jwk));
|
|
84
|
-
});
|
|
85
|
-
exports.cryptoSubtleImportRSAKey = cryptoSubtleImportRSAKey;
|
|
86
|
-
const generateRSAKeyAsPEM = (scheme, hashAlgorithm, modulusLength) => __awaiter(void 0, void 0, void 0, function* () {
|
|
87
|
-
const hashName = hashAlgorithm ? hashAlgorithm : 'SHA-256';
|
|
88
|
-
const params = {
|
|
89
|
-
name: scheme,
|
|
90
|
-
hash: hashName,
|
|
91
|
-
modulusLength: modulusLength ? modulusLength : 2048,
|
|
92
|
-
publicExponent: new Uint8Array([1, 0, 1]),
|
|
93
|
-
};
|
|
94
|
-
const keyUsage = scheme === 'RSA-PSS' || scheme === 'RSASSA-PKCS1-V1_5' ? ['sign', 'verify'] : ['encrypt', 'decrypt'];
|
|
95
|
-
const keypair = yield crypto.subtle.generateKey(params, true, keyUsage);
|
|
96
|
-
const pkcs8 = yield crypto.subtle.exportKey('pkcs8', keypair.privateKey);
|
|
97
|
-
const uint8Array = new Uint8Array(pkcs8);
|
|
98
|
-
return (0, x509_utils_1.base64ToPEM)(u8a.toString(uint8Array, 'base64pad'), 'RSA PRIVATE KEY');
|
|
99
|
-
});
|
|
100
|
-
exports.generateRSAKeyAsPEM = generateRSAKeyAsPEM;
|
|
101
|
-
//# sourceMappingURL=rsa-key.js.map
|
package/dist/x509/rsa-key.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-key.js","sourceRoot":"","sources":["../../src/x509/rsa-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { HashAlgorithm } from '../digest-methods';
|
|
2
|
-
import { JWK, KeyVisibility } from '../types';
|
|
3
|
-
import { RSAEncryptionSchemes, RSASignatureSchemes } from './rsa-key';
|
|
4
|
-
export declare class RSASigner {
|
|
5
|
-
private readonly hashAlgorithm;
|
|
6
|
-
private readonly jwk;
|
|
7
|
-
private key;
|
|
8
|
-
private readonly scheme;
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param key Either in PEM or JWK format (no raw hex keys here!)
|
|
12
|
-
* @param opts The algorithm and signature/encryption schemes
|
|
13
|
-
*/
|
|
14
|
-
constructor(key: string | JWK, opts?: {
|
|
15
|
-
hashAlgorithm?: HashAlgorithm;
|
|
16
|
-
scheme?: RSAEncryptionSchemes | RSASignatureSchemes;
|
|
17
|
-
visibility?: KeyVisibility;
|
|
18
|
-
});
|
|
19
|
-
private getImportParams;
|
|
20
|
-
private getKey;
|
|
21
|
-
private bufferToString;
|
|
22
|
-
sign(data: Uint8Array): Promise<string>;
|
|
23
|
-
verify(data: string | Uint8Array, signature: string): Promise<boolean>;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=rsa-signer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-signer.d.ts","sourceRoot":"","sources":["../../src/x509/rsa-signer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAA4B,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAG/F,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IAEzB,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IAEnE;;;;OAIG;gBAED,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,aAAa,CAAC;QAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAAC;QAAC,UAAU,CAAC,EAAE,aAAa,CAAA;KAAE;IAY3H,OAAO,CAAC,eAAe;YAQT,MAAM;IAOpB,OAAO,CAAC,cAAc;IAKT,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAYvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAgBpF"}
|
package/dist/x509/rsa-signer.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.RSASigner = void 0;
|
|
36
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
37
|
-
const rsa_key_1 = require("./rsa-key");
|
|
38
|
-
const x509_utils_1 = require("./x509-utils");
|
|
39
|
-
class RSASigner {
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* @param key Either in PEM or JWK format (no raw hex keys here!)
|
|
43
|
-
* @param opts The algorithm and signature/encryption schemes
|
|
44
|
-
*/
|
|
45
|
-
constructor(key, opts) {
|
|
46
|
-
var _a, _b;
|
|
47
|
-
if (typeof key === 'string') {
|
|
48
|
-
this.jwk = (0, x509_utils_1.PEMToJwk)(key, opts === null || opts === void 0 ? void 0 : opts.visibility);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.jwk = key;
|
|
52
|
-
}
|
|
53
|
-
this.hashAlgorithm = (_a = opts === null || opts === void 0 ? void 0 : opts.hashAlgorithm) !== null && _a !== void 0 ? _a : 'SHA-256';
|
|
54
|
-
this.scheme = (_b = opts === null || opts === void 0 ? void 0 : opts.scheme) !== null && _b !== void 0 ? _b : 'RSA-PSS';
|
|
55
|
-
}
|
|
56
|
-
getImportParams() {
|
|
57
|
-
if (this.scheme === 'RSA-PSS') {
|
|
58
|
-
return { name: this.scheme, saltLength: 32 };
|
|
59
|
-
}
|
|
60
|
-
// console.log({ name: this.scheme /*, hash: this.hashAlgorithm*/ })
|
|
61
|
-
return { name: this.scheme /*, hash: this.hashAlgorithm*/ };
|
|
62
|
-
}
|
|
63
|
-
getKey() {
|
|
64
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
if (!this.key) {
|
|
66
|
-
this.key = yield (0, rsa_key_1.cryptoSubtleImportRSAKey)(this.jwk, this.scheme, this.hashAlgorithm);
|
|
67
|
-
}
|
|
68
|
-
return this.key;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
bufferToString(buf) {
|
|
72
|
-
const uint8Array = new Uint8Array(buf);
|
|
73
|
-
return u8a.toString(uint8Array, 'base64url'); // Needs to be base64url for JsonWebSignature2020. Don't change!
|
|
74
|
-
}
|
|
75
|
-
sign(data) {
|
|
76
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
const input = data;
|
|
78
|
-
const key = yield this.getKey();
|
|
79
|
-
const signature = this.bufferToString(yield crypto.subtle.sign(this.getImportParams(), key, input));
|
|
80
|
-
if (!signature) {
|
|
81
|
-
throw Error('Could not sign input data');
|
|
82
|
-
}
|
|
83
|
-
// base64url signature
|
|
84
|
-
return signature;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
verify(data, signature) {
|
|
88
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
const jws = signature.includes('.') ? signature.split('.')[2] : signature;
|
|
90
|
-
const input = typeof data == 'string' ? u8a.fromString(data, 'utf-8') : data;
|
|
91
|
-
let key = yield this.getKey();
|
|
92
|
-
if (!key.usages.includes('verify')) {
|
|
93
|
-
const verifyJwk = Object.assign({}, this.jwk);
|
|
94
|
-
delete verifyJwk.d;
|
|
95
|
-
delete verifyJwk.use;
|
|
96
|
-
delete verifyJwk.key_ops;
|
|
97
|
-
key = yield (0, rsa_key_1.cryptoSubtleImportRSAKey)(verifyJwk, this.scheme, this.hashAlgorithm);
|
|
98
|
-
}
|
|
99
|
-
const verificationResult = yield crypto.subtle.verify(this.getImportParams(), key, u8a.fromString(jws, 'base64url'), input);
|
|
100
|
-
return verificationResult;
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
exports.RSASigner = RSASigner;
|
|
105
|
-
//# sourceMappingURL=rsa-signer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-signer.js","sourceRoot":"","sources":["../../src/x509/rsa-signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { JWK, KeyVisibility } from '../types';
|
|
2
|
-
export declare function pemCertChainTox5c(cert: string, maxDepth?: number): string[];
|
|
3
|
-
export declare function x5cToPemCertChain(x5c: string[], maxDepth?: number): string;
|
|
4
|
-
export declare const toKeyObject: (PEM: string, visibility?: KeyVisibility) => {
|
|
5
|
-
pem: string;
|
|
6
|
-
jwk: JWK;
|
|
7
|
-
keyHex: string;
|
|
8
|
-
keyType: KeyVisibility;
|
|
9
|
-
};
|
|
10
|
-
export declare const jwkToPEM: (jwk: JWK, visibility?: KeyVisibility) => string;
|
|
11
|
-
export declare const PEMToJwk: (pem: string, visibility?: KeyVisibility) => JWK;
|
|
12
|
-
export declare const privateKeyHexFromPEM: (PEM: string) => string;
|
|
13
|
-
export declare const hexKeyFromPEMBasedJwk: (jwk: JWK, visibility?: KeyVisibility) => string;
|
|
14
|
-
export declare const publicKeyHexFromPEM: (PEM: string) => string;
|
|
15
|
-
export declare const PEMToHex: (PEM: string, headerKey?: string) => string;
|
|
16
|
-
/**
|
|
17
|
-
* Converts a base64 encoded string to hex string, removing any non-base64 characters, including newlines
|
|
18
|
-
* @param input The input in base64, with optional newlines
|
|
19
|
-
* @param inputEncoding
|
|
20
|
-
*/
|
|
21
|
-
export declare const base64ToHex: (input: string, inputEncoding?: 'base64' | 'base64pad' | 'base64url' | 'base64urlpad') => string;
|
|
22
|
-
export declare const hexToBase64: (input: number | object | string, targetEncoding?: 'base64' | 'base64pad' | 'base64url' | 'base64urlpad') => string;
|
|
23
|
-
export declare const hexToPEM: (hex: string, type: KeyVisibility) => string;
|
|
24
|
-
export declare function base64ToPEM(cert: string, headerKey?: 'PUBLIC KEY' | 'RSA PRIVATE KEY' | 'PRIVATE KEY' | 'CERTIFICATE'): string;
|
|
25
|
-
//# sourceMappingURL=x509-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x509-utils.d.ts","sourceRoot":"","sources":["../../src/x509/x509-utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAI7C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB3E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAU1E;AAED,eAAO,MAAM,WAAW,QAAS,MAAM,eAAc,aAAa;;;;;CAWjE,CAAA;AAED,eAAO,MAAM,QAAQ,QAAS,GAAG,eAAc,aAAa,KAAc,MAEzE,CAAA;AAED,eAAO,MAAM,QAAQ,QAAS,MAAM,eAAc,aAAa,KAAc,GAE5E,CAAA;AACD,eAAO,MAAM,oBAAoB,QAAS,MAAM,WAE/C,CAAA;AAED,eAAO,MAAM,qBAAqB,QAAS,GAAG,eAAc,aAAa,KAAc,MAMtF,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAS,MAAM,WAU9C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAS,MAAM,cAAc,MAAM,KAAG,MAc1D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAAW,MAAM,kBAAkB,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,WAG/G,CAAA;AAED,eAAO,MAAM,WAAW,UAAW,MAAM,GAAG,MAAM,GAAG,MAAM,mBAAmB,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,KAAG,MAMrI,CAAA;AAED,eAAO,MAAM,QAAQ,QAAS,MAAM,QAAQ,aAAa,KAAG,MAa3D,CAAA;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,iBAAiB,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAO9H"}
|