@hg-ts/rsa 0.7.26 → 0.8.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/README.md +91 -0
- package/dist/X25519/key-pair.d.ts +4 -4
- package/dist/X25519/key-pair.d.ts.map +1 -1
- package/dist/X25519/key-pair.js +3 -5
- package/dist/X25519/key-pair.js.map +1 -1
- package/dist/X25519/private-key.d.ts +5 -4
- package/dist/X25519/private-key.d.ts.map +1 -1
- package/dist/X25519/private-key.js +8 -21
- package/dist/X25519/private-key.js.map +1 -1
- package/dist/X25519/public-key.d.ts +4 -6
- package/dist/X25519/public-key.d.ts.map +1 -1
- package/dist/X25519/public-key.js +8 -19
- package/dist/X25519/public-key.js.map +1 -1
- package/dist/X25519/x25519.test.d.ts +7 -6
- package/dist/X25519/x25519.test.d.ts.map +1 -1
- package/dist/X25519/x25519.test.js +70 -58
- package/dist/X25519/x25519.test.js.map +1 -1
- package/dist/aead/index.d.ts +2 -0
- package/dist/aead/index.d.ts.map +1 -0
- package/dist/aead/index.js +2 -0
- package/dist/aead/index.js.map +1 -0
- package/dist/aead/xchacha20-poly1305.d.ts +10 -0
- package/dist/aead/xchacha20-poly1305.d.ts.map +1 -0
- package/dist/aead/xchacha20-poly1305.js +48 -0
- package/dist/aead/xchacha20-poly1305.js.map +1 -0
- package/dist/aead/xchacha20-poly1305.test.d.ts +14 -0
- package/dist/aead/xchacha20-poly1305.test.d.ts.map +1 -0
- package/dist/aead/xchacha20-poly1305.test.js +140 -0
- package/dist/aead/xchacha20-poly1305.test.js.map +1 -0
- package/dist/base/index.d.ts +1 -0
- package/dist/base/index.d.ts.map +1 -1
- package/dist/base/index.js +1 -0
- package/dist/base/index.js.map +1 -1
- package/dist/base/key-capabilities.d.ts +36 -0
- package/dist/base/key-capabilities.d.ts.map +1 -0
- package/dist/base/key-capabilities.js +2 -0
- package/dist/base/key-capabilities.js.map +1 -0
- package/dist/base/key-pair.d.ts +3 -7
- package/dist/base/key-pair.d.ts.map +1 -1
- package/dist/base/key-pair.js.map +1 -1
- package/dist/base/key.d.ts +2 -1
- package/dist/base/key.d.ts.map +1 -1
- package/dist/base/key.js.map +1 -1
- package/dist/base/private-key.d.ts +2 -3
- package/dist/base/private-key.d.ts.map +1 -1
- package/dist/base/private-key.js.map +1 -1
- package/dist/base/public-key.d.ts +2 -3
- package/dist/base/public-key.d.ts.map +1 -1
- package/dist/base/public-key.js.map +1 -1
- package/dist/exceptions/hkdf-output-length.exception.d.ts +5 -0
- package/dist/exceptions/hkdf-output-length.exception.d.ts.map +1 -0
- package/dist/exceptions/hkdf-output-length.exception.js +7 -0
- package/dist/exceptions/hkdf-output-length.exception.js.map +1 -0
- package/dist/exceptions/index.d.ts +4 -0
- package/dist/exceptions/index.d.ts.map +1 -1
- package/dist/exceptions/index.js +4 -0
- package/dist/exceptions/index.js.map +1 -1
- package/dist/exceptions/invalid-encryption-key.exception.d.ts +5 -0
- package/dist/exceptions/invalid-encryption-key.exception.d.ts.map +1 -0
- package/dist/exceptions/invalid-encryption-key.exception.js +7 -0
- package/dist/exceptions/invalid-encryption-key.exception.js.map +1 -0
- package/dist/exceptions/invalid-pq-kem-key-length.exception.d.ts +5 -0
- package/dist/exceptions/invalid-pq-kem-key-length.exception.d.ts.map +1 -0
- package/dist/exceptions/invalid-pq-kem-key-length.exception.js +7 -0
- package/dist/exceptions/invalid-pq-kem-key-length.exception.js.map +1 -0
- package/dist/exceptions/invalid-pq-kem-message-length.exception.d.ts +5 -0
- package/dist/exceptions/invalid-pq-kem-message-length.exception.d.ts.map +1 -0
- package/dist/exceptions/invalid-pq-kem-message-length.exception.js +7 -0
- package/dist/exceptions/invalid-pq-kem-message-length.exception.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/pq-kem/algorithm.d.ts +16 -0
- package/dist/pq-kem/algorithm.d.ts.map +1 -0
- package/dist/pq-kem/algorithm.js +25 -0
- package/dist/pq-kem/algorithm.js.map +1 -0
- package/dist/pq-kem/index.d.ts +5 -0
- package/dist/pq-kem/index.d.ts.map +1 -0
- package/dist/pq-kem/index.js +5 -0
- package/dist/pq-kem/index.js.map +1 -0
- package/dist/pq-kem/key-pair.d.ts +15 -0
- package/dist/pq-kem/key-pair.d.ts.map +1 -0
- package/dist/pq-kem/key-pair.js +44 -0
- package/dist/pq-kem/key-pair.js.map +1 -0
- package/dist/pq-kem/pq-kem.test.d.ts +18 -0
- package/dist/pq-kem/pq-kem.test.d.ts.map +1 -0
- package/dist/pq-kem/pq-kem.test.js +173 -0
- package/dist/pq-kem/pq-kem.test.js.map +1 -0
- package/dist/pq-kem/private-key.d.ts +16 -0
- package/dist/pq-kem/private-key.d.ts.map +1 -0
- package/dist/pq-kem/private-key.js +43 -0
- package/dist/pq-kem/private-key.js.map +1 -0
- package/dist/pq-kem/public-key.d.ts +18 -0
- package/dist/pq-kem/public-key.d.ts.map +1 -0
- package/dist/pq-kem/public-key.js +70 -0
- package/dist/pq-kem/public-key.js.map +1 -0
- package/dist/rsa/key-pair.d.ts +2 -2
- package/dist/rsa/key-pair.d.ts.map +1 -1
- package/dist/rsa/key-pair.js.map +1 -1
- package/dist/rsa/private-key.d.ts +3 -2
- package/dist/rsa/private-key.d.ts.map +1 -1
- package/dist/rsa/private-key.js +2 -1
- package/dist/rsa/private-key.js.map +1 -1
- package/dist/rsa/public-key.d.ts +3 -2
- package/dist/rsa/public-key.d.ts.map +1 -1
- package/dist/rsa/public-key.js +2 -1
- package/dist/rsa/public-key.js.map +1 -1
- package/dist/rsa/rsa.test.d.ts.map +1 -1
- package/dist/rsa/rsa.test.js +1 -0
- package/dist/rsa/rsa.test.js.map +1 -1
- package/dist/utils/hkdf.d.ts +26 -0
- package/dist/utils/hkdf.d.ts.map +1 -0
- package/dist/utils/hkdf.js +43 -0
- package/dist/utils/hkdf.js.map +1 -0
- package/dist/utils/hkdf.test.d.ts +7 -0
- package/dist/utils/hkdf.test.d.ts.map +1 -0
- package/dist/utils/hkdf.test.js +79 -0
- package/dist/utils/hkdf.test.js.map +1 -0
- package/dist/utils/hmac.d.ts +5 -0
- package/dist/utils/hmac.d.ts.map +1 -0
- package/dist/utils/hmac.js +16 -0
- package/dist/utils/hmac.js.map +1 -0
- package/dist/utils/hmac.test.d.ts +6 -0
- package/dist/utils/hmac.test.d.ts.map +1 -0
- package/dist/utils/hmac.test.js +33 -0
- package/dist/utils/hmac.test.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/kdf.d.ts +3 -0
- package/dist/utils/kdf.d.ts.map +1 -0
- package/dist/utils/kdf.js +10 -0
- package/dist/utils/kdf.js.map +1 -0
- package/package.json +16 -10
- package/src/X25519/key-pair.ts +9 -9
- package/src/X25519/private-key.ts +15 -30
- package/src/X25519/public-key.ts +15 -31
- package/src/X25519/x25519.test.ts +81 -68
- package/src/aead/index.ts +1 -0
- package/src/aead/xchacha20-poly1305.test.ts +147 -0
- package/src/aead/xchacha20-poly1305.ts +80 -0
- package/src/base/index.ts +1 -0
- package/src/base/key-capabilities.ts +54 -0
- package/src/base/key-pair.ts +6 -11
- package/src/base/key.ts +3 -1
- package/src/base/private-key.ts +2 -5
- package/src/base/public-key.ts +4 -5
- package/src/exceptions/hkdf-output-length.exception.ts +7 -0
- package/src/exceptions/index.ts +4 -0
- package/src/exceptions/invalid-encryption-key.exception.ts +7 -0
- package/src/exceptions/invalid-pq-kem-key-length.exception.ts +7 -0
- package/src/exceptions/invalid-pq-kem-message-length.exception.ts +7 -0
- package/src/index.ts +3 -0
- package/src/pq-kem/algorithm.ts +51 -0
- package/src/pq-kem/index.ts +4 -0
- package/src/pq-kem/key-pair.ts +76 -0
- package/src/pq-kem/pq-kem.test.ts +144 -0
- package/src/pq-kem/private-key.ts +67 -0
- package/src/pq-kem/public-key.ts +99 -0
- package/src/rsa/key-pair.ts +11 -5
- package/src/rsa/private-key.ts +9 -2
- package/src/rsa/public-key.ts +9 -2
- package/src/rsa/rsa.test.ts +1 -0
- package/src/utils/hkdf.test.ts +77 -0
- package/src/utils/hkdf.ts +89 -0
- package/src/utils/hmac.test.ts +43 -0
- package/src/utils/hmac.ts +21 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/kdf.ts +17 -0
- package/tsconfig.json +3 -1
- package/dist/X25519/utils.d.ts +0 -2
- package/dist/X25519/utils.d.ts.map +0 -1
- package/dist/X25519/utils.js +0 -12
- package/dist/X25519/utils.js.map +0 -1
- package/src/X25519/utils.ts +0 -22
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ml_kem1024 as mlKem1024, ml_kem512 as mlKem512, ml_kem768 as mlKem768, } from '@noble/post-quantum/ml-kem.js';
|
|
2
|
+
import { InvalidPqKemKeyLengthException } from '../exceptions/index.js';
|
|
3
|
+
export const DEFAULT_PQ_KEM_ALGORITHM = 768;
|
|
4
|
+
export const PQ_KEM_ALGORITHMS = [
|
|
5
|
+
512,
|
|
6
|
+
768,
|
|
7
|
+
1024,
|
|
8
|
+
];
|
|
9
|
+
const IMPLEMENTATIONS = {
|
|
10
|
+
512: mlKem512,
|
|
11
|
+
768: mlKem768,
|
|
12
|
+
1024: mlKem1024,
|
|
13
|
+
};
|
|
14
|
+
export function getPqKemImplementation(bits) {
|
|
15
|
+
return IMPLEMENTATIONS[bits];
|
|
16
|
+
}
|
|
17
|
+
export function inferPqKemBitsByKeyLength(length, keyType) {
|
|
18
|
+
for (const [bits, candidate] of Object.entries(IMPLEMENTATIONS)) {
|
|
19
|
+
if (candidate.lengths[keyType] === length) {
|
|
20
|
+
return Number(bits);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
throw new InvalidPqKemKeyLengthException(keyType, length);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=algorithm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"algorithm.js","sourceRoot":"","sources":["../../src/pq-kem/algorithm.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,IAAI,SAAS,EACvB,SAAS,IAAI,QAAQ,EACrB,SAAS,IAAI,QAAQ,GACrB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAIxE,MAAM,CAAC,MAAM,wBAAwB,GAAmB,GAAG,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,GAAG;IACH,GAAG;IACH,IAAI;CACyC,CAAC;AAY/C,MAAM,eAAe,GAAgD;IACpE,GAAG,EAAE,QAA+B;IACpC,GAAG,EAAE,QAA+B;IACpC,IAAI,EAAE,SAAgC;CACtC,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,IAAoB;IAC1D,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,yBAAyB,CACxC,MAAc,EACd,OAAkC;IAElC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACjE,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,IAAI,CAAmB,CAAC;QACvC,CAAC;IACF,CAAC;IAED,MAAM,IAAI,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pq-kem/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pq-kem/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import { BaseKeyPair, DecapsulatingPrivateKey, EncapsulatingPublicKey, KeyPairOptions, KeyPairResult, NewKeyPairOptions } from '../base/index.js';
|
|
3
|
+
import { type PqKemAlgorithm } from './algorithm.js';
|
|
4
|
+
import { PqKemPrivateKey } from './private-key.js';
|
|
5
|
+
import { PqKemEncapsulation, PqKemPublicKey } from './public-key.js';
|
|
6
|
+
export type PqKemKeyPairOptions = KeyPairOptions<PqKemPrivateKey, PqKemAlgorithm>;
|
|
7
|
+
export declare class PqKemKeyPair extends BaseKeyPair<PqKemPrivateKey, PqKemPublicKey, PqKemKeyPairOptions> implements EncapsulatingPublicKey, DecapsulatingPrivateKey {
|
|
8
|
+
readonly bits: PqKemAlgorithm;
|
|
9
|
+
constructor(options?: PqKemKeyPairOptions);
|
|
10
|
+
encapsulate(message?: string | Buffer): PqKemEncapsulation;
|
|
11
|
+
decapsulate(cipherText: string | Buffer): Buffer;
|
|
12
|
+
protected generateNewKeys(options: NewKeyPairOptions<PqKemAlgorithm>): KeyPairResult<PqKemPrivateKey, PqKemPublicKey>;
|
|
13
|
+
private prepareSeed;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=key-pair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/pq-kem/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,OAAO,EACN,WAAW,EACX,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGN,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACN,kBAAkB,EAClB,cAAc,EACd,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAElF,qBAAa,YAAa,SAAQ,WAAW,CAC5C,eAAe,EACf,cAAc,EACd,mBAAmB,CAClB,YAAW,sBAAsB,EAAE,uBAAuB;IAC3D,SAAgB,IAAI,EAAE,cAAc,CAAC;gBAElB,OAAO,GAAE,mBAAwB;IAK7C,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB;IAI1D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAIvD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,aAAa,CACnF,eAAe,EACf,cAAc,CACd;IAcD,OAAO,CAAC,WAAW;CAenB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import forge from 'node-forge';
|
|
3
|
+
import { BaseKeyPair, } from '../base/index.js';
|
|
4
|
+
import { DEFAULT_PQ_KEM_ALGORITHM, getPqKemImplementation, } from './algorithm.js';
|
|
5
|
+
import { PqKemPrivateKey } from './private-key.js';
|
|
6
|
+
import { PqKemPublicKey, } from './public-key.js';
|
|
7
|
+
export class PqKemKeyPair extends BaseKeyPair {
|
|
8
|
+
bits;
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
super(options, PqKemPrivateKey);
|
|
11
|
+
this.bits = this.privateKeyInstance.bits;
|
|
12
|
+
}
|
|
13
|
+
encapsulate(message) {
|
|
14
|
+
return this.publicKeyInstance.encapsulate(message);
|
|
15
|
+
}
|
|
16
|
+
decapsulate(cipherText) {
|
|
17
|
+
return this.privateKeyInstance.decapsulate(cipherText);
|
|
18
|
+
}
|
|
19
|
+
generateNewKeys(options) {
|
|
20
|
+
const bits = options.bits ?? DEFAULT_PQ_KEM_ALGORITHM;
|
|
21
|
+
const implementation = getPqKemImplementation(bits);
|
|
22
|
+
const keyPair = options.seed
|
|
23
|
+
? implementation.keygen(this.prepareSeed(options.seed, bits))
|
|
24
|
+
: implementation.keygen();
|
|
25
|
+
const privateKey = new PqKemPrivateKey(Buffer.from(keyPair.secretKey), bits);
|
|
26
|
+
return {
|
|
27
|
+
privateKey,
|
|
28
|
+
publicKey: new PqKemPublicKey(Buffer.from(keyPair.publicKey), bits),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
prepareSeed(seed, bits) {
|
|
32
|
+
const seedLength = getPqKemImplementation(bits).lengths.seed;
|
|
33
|
+
const bytes = Buffer.from(seed, 'utf8');
|
|
34
|
+
if (bytes.length === seedLength) {
|
|
35
|
+
return bytes;
|
|
36
|
+
}
|
|
37
|
+
const hash = forge.md.sha512.create();
|
|
38
|
+
hash.update('PQKEM seed', 'utf8');
|
|
39
|
+
hash.update(bits.toString(), 'utf8');
|
|
40
|
+
hash.update(bytes.toString('binary'));
|
|
41
|
+
return Buffer.from(hash.digest().getBytes(), 'binary').subarray(0, seedLength);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=key-pair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/pq-kem/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACN,WAAW,GAMX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,wBAAwB,EACxB,sBAAsB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEN,cAAc,GACd,MAAM,iBAAiB,CAAC;AAIzB,MAAM,OAAO,YAAa,SAAQ,WAIjC;IACgB,IAAI,CAAiB;IAErC,YAAmB,UAA+B,EAAE;QACnD,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IAC1C,CAAC;IAEM,WAAW,CAAC,OAAyB;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,WAAW,CAAC,UAA2B;QAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAES,eAAe,CAAC,OAA0C;QAInE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,wBAAwB,CAAC;QACtD,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;YAC3B,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAE7E,OAAO;YACN,UAAU;YACV,SAAS,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;SACnE,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,IAAoB;QACrD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChF,CAAC;CACD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Suite } from '@hg-ts/tests';
|
|
2
|
+
export declare class PqKemTest extends Suite {
|
|
3
|
+
encapsulateAndDecapsulate(): Promise<void>;
|
|
4
|
+
restoresKeys(): Promise<void>;
|
|
5
|
+
restoresKeyPairFromPrivateKeyString(): Promise<void>;
|
|
6
|
+
decapsulatesBase64CipherText(): Promise<void>;
|
|
7
|
+
encapsulatesWithMessage(): Promise<void>;
|
|
8
|
+
encapsulatesWithStringMessage(): Promise<void>;
|
|
9
|
+
seeded(): Promise<void>;
|
|
10
|
+
seededWithExactSeedLength(): Promise<void>;
|
|
11
|
+
nativeKeysAreCopied(): Promise<void>;
|
|
12
|
+
publicKeyValidationValid(): Promise<void>;
|
|
13
|
+
publicKeyValidationFails(): Promise<void>;
|
|
14
|
+
encapsulateFailsForInvalidMessageLength(): Promise<void>;
|
|
15
|
+
privateKeyFailsForInvalidKeyLength(): Promise<void>;
|
|
16
|
+
publicKeyFailsForInvalidKeyLength(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=pq-kem.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pq-kem.test.d.ts","sourceRoot":"","sources":["../../src/pq-kem/pq-kem.test.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAYtB,qBACa,SAAU,SAAQ,KAAK;IAEtB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,mCAAmC,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpD,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7C,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxC,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU1C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQzC,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzC,uCAAuC,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxD,kCAAkC,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnD,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/D"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import Buffer from '@hg-ts/buffer';
|
|
3
|
+
import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
|
|
4
|
+
import { z } from '@hg-ts/validation';
|
|
5
|
+
import { InvalidPqKemKeyLengthException, InvalidPqKemMessageLengthException, getPqKemImplementation, PqKemKeyPair, PqKemPrivateKey, PqKemPublicKey, } from '../index.js';
|
|
6
|
+
let PqKemTest = class PqKemTest extends Suite {
|
|
7
|
+
async encapsulateAndDecapsulate() {
|
|
8
|
+
const recipient = new PqKemKeyPair();
|
|
9
|
+
const encapsulation = recipient.encapsulate();
|
|
10
|
+
const sharedSecret = recipient.decapsulate(encapsulation.cipherText);
|
|
11
|
+
expect(sharedSecret).toMatchObject(encapsulation.sharedSecret);
|
|
12
|
+
}
|
|
13
|
+
async restoresKeys() {
|
|
14
|
+
const keyPair = new PqKemKeyPair({ bits: 1024 });
|
|
15
|
+
const privateKey = PqKemPrivateKey.fromString(keyPair.privateKey);
|
|
16
|
+
const publicKey = PqKemPublicKey.fromString(keyPair.publicKey);
|
|
17
|
+
expect(privateKey.toString()).toBe(keyPair.privateKey);
|
|
18
|
+
expect(publicKey.toString()).toBe(keyPair.publicKey);
|
|
19
|
+
}
|
|
20
|
+
async restoresKeyPairFromPrivateKeyString() {
|
|
21
|
+
const keyPair = new PqKemKeyPair({ bits: 512 });
|
|
22
|
+
const restored = new PqKemKeyPair({ privateKey: keyPair.privateKey });
|
|
23
|
+
expect(restored.bits).toBe(512);
|
|
24
|
+
expect(restored.privateKey).toBe(keyPair.privateKey);
|
|
25
|
+
expect(restored.publicKey).toBe(keyPair.publicKey);
|
|
26
|
+
}
|
|
27
|
+
async decapsulatesBase64CipherText() {
|
|
28
|
+
const recipient = new PqKemKeyPair();
|
|
29
|
+
const encapsulation = recipient.encapsulate();
|
|
30
|
+
const sharedSecret = recipient.privateKeyInstance.decapsulate(encapsulation.cipherText.toString('base64'));
|
|
31
|
+
expect(sharedSecret).toMatchObject(encapsulation.sharedSecret);
|
|
32
|
+
}
|
|
33
|
+
async encapsulatesWithMessage() {
|
|
34
|
+
const recipient = new PqKemKeyPair();
|
|
35
|
+
const message = Buffer.alloc(getPqKemImplementation(recipient.bits).lengths.msg, 1);
|
|
36
|
+
const encapsulation = recipient.publicKeyInstance.encapsulate(message);
|
|
37
|
+
expect(recipient.decapsulate(encapsulation.cipherText)).toMatchObject(encapsulation.sharedSecret);
|
|
38
|
+
}
|
|
39
|
+
async encapsulatesWithStringMessage() {
|
|
40
|
+
const recipient = new PqKemKeyPair();
|
|
41
|
+
const message = 'a'.repeat(getPqKemImplementation(recipient.bits).lengths.msg);
|
|
42
|
+
const encapsulation = recipient.publicKeyInstance.encapsulate(message);
|
|
43
|
+
expect(recipient.decapsulate(encapsulation.cipherText)).toMatchObject(encapsulation.sharedSecret);
|
|
44
|
+
}
|
|
45
|
+
async seeded() {
|
|
46
|
+
const seed = Math.random().toString();
|
|
47
|
+
const first = new PqKemKeyPair({ seed });
|
|
48
|
+
const second = new PqKemKeyPair({ seed });
|
|
49
|
+
expect(first.privateKey).toBe(second.privateKey);
|
|
50
|
+
expect(first.publicKey).toBe(second.publicKey);
|
|
51
|
+
}
|
|
52
|
+
async seededWithExactSeedLength() {
|
|
53
|
+
const seed = 'a'.repeat(getPqKemImplementation(768).lengths.seed);
|
|
54
|
+
const first = new PqKemKeyPair({ seed });
|
|
55
|
+
const second = new PqKemKeyPair({ seed });
|
|
56
|
+
expect(first.privateKey).toBe(second.privateKey);
|
|
57
|
+
expect(first.publicKey).toBe(second.publicKey);
|
|
58
|
+
}
|
|
59
|
+
async nativeKeysAreCopied() {
|
|
60
|
+
const keyPair = new PqKemKeyPair();
|
|
61
|
+
expect(keyPair.privateKeyInstance.nativeKey).toMatchObject(keyPair.privateKeyInstance.nativeKey);
|
|
62
|
+
expect(keyPair.publicKeyInstance.nativeKey).toMatchObject(keyPair.publicKeyInstance.nativeKey);
|
|
63
|
+
}
|
|
64
|
+
async publicKeyValidationValid() {
|
|
65
|
+
const keyPair = new PqKemKeyPair();
|
|
66
|
+
PqKemPublicKey.schema.parse(keyPair.publicKey);
|
|
67
|
+
}
|
|
68
|
+
async publicKeyValidationFails() {
|
|
69
|
+
PqKemPublicKey.schema.parse('{}');
|
|
70
|
+
}
|
|
71
|
+
async encapsulateFailsForInvalidMessageLength() {
|
|
72
|
+
new PqKemKeyPair().encapsulate(Buffer.alloc(31));
|
|
73
|
+
}
|
|
74
|
+
async privateKeyFailsForInvalidKeyLength() {
|
|
75
|
+
new PqKemPrivateKey(Buffer.alloc(1), 768).toString();
|
|
76
|
+
}
|
|
77
|
+
async publicKeyFailsForInvalidKeyLength() {
|
|
78
|
+
new PqKemPublicKey(Buffer.alloc(1), 768).toString();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
__decorate([
|
|
82
|
+
Test(),
|
|
83
|
+
__metadata("design:type", Function),
|
|
84
|
+
__metadata("design:paramtypes", []),
|
|
85
|
+
__metadata("design:returntype", Promise)
|
|
86
|
+
], PqKemTest.prototype, "encapsulateAndDecapsulate", null);
|
|
87
|
+
__decorate([
|
|
88
|
+
Test(),
|
|
89
|
+
__metadata("design:type", Function),
|
|
90
|
+
__metadata("design:paramtypes", []),
|
|
91
|
+
__metadata("design:returntype", Promise)
|
|
92
|
+
], PqKemTest.prototype, "restoresKeys", null);
|
|
93
|
+
__decorate([
|
|
94
|
+
Test(),
|
|
95
|
+
__metadata("design:type", Function),
|
|
96
|
+
__metadata("design:paramtypes", []),
|
|
97
|
+
__metadata("design:returntype", Promise)
|
|
98
|
+
], PqKemTest.prototype, "restoresKeyPairFromPrivateKeyString", null);
|
|
99
|
+
__decorate([
|
|
100
|
+
Test(),
|
|
101
|
+
__metadata("design:type", Function),
|
|
102
|
+
__metadata("design:paramtypes", []),
|
|
103
|
+
__metadata("design:returntype", Promise)
|
|
104
|
+
], PqKemTest.prototype, "decapsulatesBase64CipherText", null);
|
|
105
|
+
__decorate([
|
|
106
|
+
Test(),
|
|
107
|
+
__metadata("design:type", Function),
|
|
108
|
+
__metadata("design:paramtypes", []),
|
|
109
|
+
__metadata("design:returntype", Promise)
|
|
110
|
+
], PqKemTest.prototype, "encapsulatesWithMessage", null);
|
|
111
|
+
__decorate([
|
|
112
|
+
Test(),
|
|
113
|
+
__metadata("design:type", Function),
|
|
114
|
+
__metadata("design:paramtypes", []),
|
|
115
|
+
__metadata("design:returntype", Promise)
|
|
116
|
+
], PqKemTest.prototype, "encapsulatesWithStringMessage", null);
|
|
117
|
+
__decorate([
|
|
118
|
+
Test(),
|
|
119
|
+
__metadata("design:type", Function),
|
|
120
|
+
__metadata("design:paramtypes", []),
|
|
121
|
+
__metadata("design:returntype", Promise)
|
|
122
|
+
], PqKemTest.prototype, "seeded", null);
|
|
123
|
+
__decorate([
|
|
124
|
+
Test(),
|
|
125
|
+
__metadata("design:type", Function),
|
|
126
|
+
__metadata("design:paramtypes", []),
|
|
127
|
+
__metadata("design:returntype", Promise)
|
|
128
|
+
], PqKemTest.prototype, "seededWithExactSeedLength", null);
|
|
129
|
+
__decorate([
|
|
130
|
+
Test(),
|
|
131
|
+
__metadata("design:type", Function),
|
|
132
|
+
__metadata("design:paramtypes", []),
|
|
133
|
+
__metadata("design:returntype", Promise)
|
|
134
|
+
], PqKemTest.prototype, "nativeKeysAreCopied", null);
|
|
135
|
+
__decorate([
|
|
136
|
+
Test(),
|
|
137
|
+
__metadata("design:type", Function),
|
|
138
|
+
__metadata("design:paramtypes", []),
|
|
139
|
+
__metadata("design:returntype", Promise)
|
|
140
|
+
], PqKemTest.prototype, "publicKeyValidationValid", null);
|
|
141
|
+
__decorate([
|
|
142
|
+
Test(),
|
|
143
|
+
ExpectException(z.ZodError),
|
|
144
|
+
__metadata("design:type", Function),
|
|
145
|
+
__metadata("design:paramtypes", []),
|
|
146
|
+
__metadata("design:returntype", Promise)
|
|
147
|
+
], PqKemTest.prototype, "publicKeyValidationFails", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
Test(),
|
|
150
|
+
ExpectException(InvalidPqKemMessageLengthException),
|
|
151
|
+
__metadata("design:type", Function),
|
|
152
|
+
__metadata("design:paramtypes", []),
|
|
153
|
+
__metadata("design:returntype", Promise)
|
|
154
|
+
], PqKemTest.prototype, "encapsulateFailsForInvalidMessageLength", null);
|
|
155
|
+
__decorate([
|
|
156
|
+
Test(),
|
|
157
|
+
ExpectException(InvalidPqKemKeyLengthException),
|
|
158
|
+
__metadata("design:type", Function),
|
|
159
|
+
__metadata("design:paramtypes", []),
|
|
160
|
+
__metadata("design:returntype", Promise)
|
|
161
|
+
], PqKemTest.prototype, "privateKeyFailsForInvalidKeyLength", null);
|
|
162
|
+
__decorate([
|
|
163
|
+
Test(),
|
|
164
|
+
ExpectException(InvalidPqKemKeyLengthException),
|
|
165
|
+
__metadata("design:type", Function),
|
|
166
|
+
__metadata("design:paramtypes", []),
|
|
167
|
+
__metadata("design:returntype", Promise)
|
|
168
|
+
], PqKemTest.prototype, "publicKeyFailsForInvalidKeyLength", null);
|
|
169
|
+
PqKemTest = __decorate([
|
|
170
|
+
Describe()
|
|
171
|
+
], PqKemTest);
|
|
172
|
+
export { PqKemTest };
|
|
173
|
+
//# sourceMappingURL=pq-kem.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pq-kem.test.js","sourceRoot":"","sources":["../../src/pq-kem/pq-kem.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import { BasePrivateKey, DecapsulatingPrivateKey } from '../base/index.js';
|
|
3
|
+
import { type PqKemAlgorithm } from './algorithm.js';
|
|
4
|
+
import { PqKemPublicKey } from './public-key.js';
|
|
5
|
+
export declare class PqKemPrivateKey extends BasePrivateKey<Buffer, PqKemPublicKey> implements DecapsulatingPrivateKey {
|
|
6
|
+
readonly bits: PqKemAlgorithm;
|
|
7
|
+
constructor(key: Buffer, bits: PqKemAlgorithm);
|
|
8
|
+
decapsulate(cipherText: string | Buffer): Buffer;
|
|
9
|
+
toPublicKey(): PqKemPublicKey;
|
|
10
|
+
toString(): string;
|
|
11
|
+
get nativeKey(): Buffer;
|
|
12
|
+
static fromString(value: string): PqKemPrivateKey;
|
|
13
|
+
private get implementation();
|
|
14
|
+
private validateKey;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=private-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/pq-kem/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EACN,cAAc,EACd,uBAAuB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAGN,KAAK,cAAc,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qBAAa,eACZ,SAAQ,cAAc,CAAC,MAAM,EAAE,cAAc,CAC7C,YAAW,uBAAuB;IAClC,SAAgB,IAAI,EAAE,cAAc,CAAC;gBAElB,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;IAM7C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAQvC,WAAW,IAAI,cAAc;IAO7B,QAAQ,IAAI,MAAM;IAIlC,IAAoB,SAAS,IAAI,MAAM,CAEtC;WAEa,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAOxD,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,WAAW;CAOnB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import { BasePrivateKey, } from '../base/index.js';
|
|
3
|
+
import { InvalidPqKemKeyLengthException } from '../exceptions/index.js';
|
|
4
|
+
import { getPqKemImplementation, inferPqKemBitsByKeyLength, } from './algorithm.js';
|
|
5
|
+
import { PqKemPublicKey } from './public-key.js';
|
|
6
|
+
export class PqKemPrivateKey extends BasePrivateKey {
|
|
7
|
+
bits;
|
|
8
|
+
constructor(key, bits) {
|
|
9
|
+
super(key);
|
|
10
|
+
this.bits = bits;
|
|
11
|
+
this.validateKey();
|
|
12
|
+
}
|
|
13
|
+
decapsulate(cipherText) {
|
|
14
|
+
const value = typeof cipherText === 'string'
|
|
15
|
+
? Buffer.from(cipherText, 'base64')
|
|
16
|
+
: cipherText;
|
|
17
|
+
return Buffer.from(this.implementation.decapsulate(value, this.key));
|
|
18
|
+
}
|
|
19
|
+
toPublicKey() {
|
|
20
|
+
return new PqKemPublicKey(Buffer.from(this.implementation.getPublicKey(this.key)), this.bits);
|
|
21
|
+
}
|
|
22
|
+
toString() {
|
|
23
|
+
return this.key.toString('base64');
|
|
24
|
+
}
|
|
25
|
+
get nativeKey() {
|
|
26
|
+
return Buffer.from(this.key);
|
|
27
|
+
}
|
|
28
|
+
static fromString(value) {
|
|
29
|
+
const key = Buffer.from(value, 'base64');
|
|
30
|
+
const bits = inferPqKemBitsByKeyLength(key.length, 'secretKey');
|
|
31
|
+
return new PqKemPrivateKey(key, bits);
|
|
32
|
+
}
|
|
33
|
+
get implementation() {
|
|
34
|
+
return getPqKemImplementation(this.bits);
|
|
35
|
+
}
|
|
36
|
+
validateKey() {
|
|
37
|
+
const { secretKey } = this.implementation.lengths;
|
|
38
|
+
if (this.key.length !== secretKey) {
|
|
39
|
+
throw new InvalidPqKemKeyLengthException('secretKey', this.key.length);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=private-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/pq-kem/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EACN,cAAc,GAEd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACN,sBAAsB,EACtB,yBAAyB,GAGzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,OAAO,eACZ,SAAQ,cAAsC;IAE9B,IAAI,CAAiB;IAErC,YAAmB,GAAW,EAAE,IAAoB;QACnD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAEM,WAAW,CAAC,UAA2B;QAC7C,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ;YAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;YACnC,CAAC,CAAC,UAAU,CAAC;QAEd,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAEe,WAAW;QAC1B,OAAO,IAAI,cAAc,CACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvD,IAAI,CAAC,IAAI,CACT,CAAC;IACH,CAAC;IAEe,QAAQ;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,IAAoB,SAAS;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,KAAa;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEhE,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,IAAY,cAAc;QACzB,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,WAAW;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAElD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,8BAA8B,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import { z } from '@hg-ts/validation';
|
|
3
|
+
import { BasePublicKey, EncapsulatingPublicKey, type KemEncapsulation } from '../base/index.js';
|
|
4
|
+
import { type PqKemAlgorithm } from './algorithm.js';
|
|
5
|
+
export type PqKemEncapsulation = KemEncapsulation;
|
|
6
|
+
export declare class PqKemPublicKey extends BasePublicKey<Buffer> implements EncapsulatingPublicKey {
|
|
7
|
+
readonly bits: PqKemAlgorithm;
|
|
8
|
+
static schema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
9
|
+
constructor(key: Buffer, bits: PqKemAlgorithm);
|
|
10
|
+
encapsulate(message?: string | Buffer): PqKemEncapsulation;
|
|
11
|
+
toString(): string;
|
|
12
|
+
get nativeKey(): Buffer;
|
|
13
|
+
static fromString(value: string): PqKemPublicKey;
|
|
14
|
+
private prepareMessage;
|
|
15
|
+
private get implementation();
|
|
16
|
+
private validateKey;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=public-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-key.d.ts","sourceRoot":"","sources":["../../src/pq-kem/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EACN,aAAa,EACb,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAGN,KAAK,cAAc,EAEnB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAkBlD,qBAAa,cAAe,SAAQ,aAAa,CAAC,MAAM,CAAE,YAAW,sBAAsB;IAC1F,SAAgB,IAAI,EAAE,cAAc,CAAC;IAErC,OAAc,MAAM,iFAAU;gBAEX,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;IAM7C,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB;IAWjD,QAAQ,IAAI,MAAM;IAIlC,IAAoB,SAAS,IAAI,MAAM,CAEtC;WAEa,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAOvD,OAAO,CAAC,cAAc;IAatB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,WAAW;CAOnB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import { z } from '@hg-ts/validation';
|
|
3
|
+
import { BasePublicKey, } from '../base/index.js';
|
|
4
|
+
import { InvalidPqKemKeyLengthException, InvalidPqKemMessageLengthException, } from '../exceptions/index.js';
|
|
5
|
+
import { getPqKemImplementation, inferPqKemBitsByKeyLength, } from './algorithm.js';
|
|
6
|
+
const schema = z.string().transform((value, ctx) => {
|
|
7
|
+
try {
|
|
8
|
+
PqKemPublicKey.fromString(value);
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
ctx.issues.push({
|
|
13
|
+
message: error instanceof Error ? error.message : 'Invalid PQKEM public key',
|
|
14
|
+
fatal: true,
|
|
15
|
+
code: 'invalid_format',
|
|
16
|
+
input: value,
|
|
17
|
+
format: 'PQKEM Public Key',
|
|
18
|
+
});
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
}).pipe(z.string());
|
|
22
|
+
export class PqKemPublicKey extends BasePublicKey {
|
|
23
|
+
bits;
|
|
24
|
+
static schema = schema;
|
|
25
|
+
constructor(key, bits) {
|
|
26
|
+
super(key);
|
|
27
|
+
this.bits = bits;
|
|
28
|
+
this.validateKey();
|
|
29
|
+
}
|
|
30
|
+
encapsulate(message) {
|
|
31
|
+
const { cipherText, sharedSecret } = message
|
|
32
|
+
? this.implementation.encapsulate(this.key, this.prepareMessage(message))
|
|
33
|
+
: this.implementation.encapsulate(this.key);
|
|
34
|
+
return {
|
|
35
|
+
cipherText: Buffer.from(cipherText),
|
|
36
|
+
sharedSecret: Buffer.from(sharedSecret),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
toString() {
|
|
40
|
+
return this.key.toString('base64');
|
|
41
|
+
}
|
|
42
|
+
get nativeKey() {
|
|
43
|
+
return Buffer.from(this.key);
|
|
44
|
+
}
|
|
45
|
+
static fromString(value) {
|
|
46
|
+
const key = Buffer.from(value, 'base64');
|
|
47
|
+
const bits = inferPqKemBitsByKeyLength(key.length, 'publicKey');
|
|
48
|
+
return new PqKemPublicKey(key, bits);
|
|
49
|
+
}
|
|
50
|
+
prepareMessage(message) {
|
|
51
|
+
const value = typeof message === 'string'
|
|
52
|
+
? Buffer.from(message, 'utf8')
|
|
53
|
+
: message;
|
|
54
|
+
const { msg } = this.implementation.lengths;
|
|
55
|
+
if (value.length !== msg) {
|
|
56
|
+
throw new InvalidPqKemMessageLengthException(msg, value.length);
|
|
57
|
+
}
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
get implementation() {
|
|
61
|
+
return getPqKemImplementation(this.bits);
|
|
62
|
+
}
|
|
63
|
+
validateKey() {
|
|
64
|
+
const { publicKey } = this.implementation.lengths;
|
|
65
|
+
if (this.key.length !== publicKey) {
|
|
66
|
+
throw new InvalidPqKemKeyLengthException('publicKey', this.key.length);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=public-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-key.js","sourceRoot":"","sources":["../../src/pq-kem/public-key.ts"],"names":[],"mappings":"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"}
|
package/dist/rsa/key-pair.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BaseKeyPair, KeyPairOptions, KeyPairResult, NewKeyPairOptions } from '../base/index.js';
|
|
1
|
+
import { BaseKeyPair, DecryptingPrivateKey, EncryptingPublicKey, KeyPairOptions, KeyPairResult, NewKeyPairOptions, SigningPrivateKey, VerifyingPublicKey } from '../base/index.js';
|
|
2
2
|
import { RsaPrivateKey } from './private-key.js';
|
|
3
3
|
import { RsaPublicKey } from './public-key.js';
|
|
4
|
-
export declare class RsaKeyPair extends BaseKeyPair<RsaPrivateKey, RsaPublicKey> {
|
|
4
|
+
export declare class RsaKeyPair extends BaseKeyPair<RsaPrivateKey, RsaPublicKey> implements EncryptingPublicKey, DecryptingPrivateKey, SigningPrivateKey, VerifyingPublicKey {
|
|
5
5
|
constructor(options?: KeyPairOptions<RsaPrivateKey>);
|
|
6
6
|
encrypt(value: string | Buffer): Buffer;
|
|
7
7
|
decrypt(value: string | Buffer): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/rsa/key-pair.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,
|
|
1
|
+
{"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/rsa/key-pair.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,UACZ,SAAQ,WAAW,CAAC,aAAa,EAAE,YAAY,CAC/C,YAAW,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB;gBACxE,OAAO,GAAE,cAAc,CAAC,aAAa,CAAM;IAIvD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAIvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAIvC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjE,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC;CAuBjG"}
|
package/dist/rsa/key-pair.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/rsa/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACN,WAAW,
|
|
1
|
+
{"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/rsa/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACN,WAAW,GAQX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,OAAO,UACZ,SAAQ,WAAwC;IAEhD,YAAmB,UAAyC,EAAE;QAC7D,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC/B,CAAC;IAEM,OAAO,CAAC,KAAsB;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,OAAO,CAAC,KAAsB;QACpC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,SAA0B,EAAE,KAAa;QACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAES,eAAe,CAAC,OAA0B;QACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,cAAc,GAAyC,EAAE,CAAC;QAEhE,IAAI,IAAI,EAAE,CAAC;YACV,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;YAEnC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAE9D,OAAO;YACN,UAAU,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;YACjD,SAAS,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9C,CAAC;IACH,CAAC;CACD"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
1
2
|
import forge from 'node-forge';
|
|
2
|
-
import { BasePrivateKey } from '../base/index.js';
|
|
3
|
+
import { BasePrivateKey, DecryptingPrivateKey, SigningPrivateKey } from '../base/index.js';
|
|
3
4
|
import { RsaPublicKey } from './public-key.js';
|
|
4
|
-
export declare class RsaPrivateKey extends BasePrivateKey<forge.pki.rsa.PrivateKey, RsaPublicKey> {
|
|
5
|
+
export declare class RsaPrivateKey extends BasePrivateKey<forge.pki.rsa.PrivateKey, RsaPublicKey> implements DecryptingPrivateKey, SigningPrivateKey {
|
|
5
6
|
decrypt(encrypted: string | Buffer): string;
|
|
6
7
|
sign(value: string): Buffer;
|
|
7
8
|
toPublicKey(): RsaPublicKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/rsa/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/rsa/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACN,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,aACZ,SAAQ,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAC7D,YAAW,oBAAoB,EAAE,iBAAiB;IAC3C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAa3C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAc3B,WAAW,IAAI,YAAY;IAIlB,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAMvD,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,KAAK;IAIb,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,gBAAgB;CAWxB"}
|
package/dist/rsa/private-key.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
1
2
|
import forge from 'node-forge';
|
|
2
|
-
import { BasePrivateKey } from '../base/index.js';
|
|
3
|
+
import { BasePrivateKey, } from '../base/index.js';
|
|
3
4
|
import { InvalidDecryptionKeyExpection } from '../exceptions/index.js';
|
|
4
5
|
import { RsaPublicKey } from './public-key.js';
|
|
5
6
|
export class RsaPrivateKey extends BasePrivateKey {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/rsa/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/rsa/private-key.ts"],"names":[],"mappings":"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"}
|
package/dist/rsa/public-key.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
1
2
|
import { z } from '@hg-ts/validation';
|
|
2
3
|
import forge from 'node-forge';
|
|
3
|
-
import { BasePublicKey } from '../base/index.js';
|
|
4
|
-
export declare class RsaPublicKey extends BasePublicKey<forge.pki.rsa.PublicKey> {
|
|
4
|
+
import { BasePublicKey, EncryptingPublicKey, VerifyingPublicKey } from '../base/index.js';
|
|
5
|
+
export declare class RsaPublicKey extends BasePublicKey<forge.pki.rsa.PublicKey> implements EncryptingPublicKey, VerifyingPublicKey {
|
|
5
6
|
static schema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
6
7
|
encrypt(value: string | Buffer): Buffer;
|
|
7
8
|
verify(signature: string | Buffer, value: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-key.d.ts","sourceRoot":"","sources":["../../src/rsa/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"public-key.d.ts","sourceRoot":"","sources":["../../src/rsa/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,kBAAkB,CAAC;AAmB1B,qBAAa,YACZ,SAAQ,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAC7C,YAAW,mBAAmB,EAAE,kBAAkB;IAClD,OAAc,MAAM,iFAAU;IAEvB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IASvC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAejD,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAMtD,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,KAAK;IAIb,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,gBAAgB;CAWxB"}
|
package/dist/rsa/public-key.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
1
2
|
import { z } from '@hg-ts/validation';
|
|
2
3
|
import forge from 'node-forge';
|
|
3
|
-
import { BasePublicKey } from '../base/index.js';
|
|
4
|
+
import { BasePublicKey, } from '../base/index.js';
|
|
4
5
|
const schema = z.string().transform((value, ctx) => {
|
|
5
6
|
try {
|
|
6
7
|
const publicKey = forge.pki.publicKeyFromPem(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-key.js","sourceRoot":"","sources":["../../src/rsa/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"public-key.js","sourceRoot":"","sources":["../../src/rsa/public-key.ts"],"names":[],"mappings":"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"}
|