@hg-ts/rsa 0.7.27 → 0.8.1
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 +17 -11
- 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,21 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import forge from 'node-forge';
|
|
3
|
+
|
|
4
|
+
export type HmacAlgorithm = 'sha256' | 'sha384' | 'sha512';
|
|
5
|
+
|
|
6
|
+
export const HMAC_DIGEST_LENGTH: Record<HmacAlgorithm, number> = {
|
|
7
|
+
sha256: 32,
|
|
8
|
+
sha384: 48,
|
|
9
|
+
sha512: 64,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export function hmac(algorithm: HmacAlgorithm, key: Buffer, ...values: Buffer[]): Buffer {
|
|
13
|
+
const mac = forge.hmac.create();
|
|
14
|
+
mac.start(algorithm, key.toString('binary'));
|
|
15
|
+
|
|
16
|
+
for (const value of values) {
|
|
17
|
+
mac.update(value.toString('binary'));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return Buffer.from(mac.digest().getBytes(), 'binary');
|
|
21
|
+
}
|
package/src/utils/kdf.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Buffer from '@hg-ts/buffer';
|
|
2
|
+
import sodium from 'libsodium-wrappers';
|
|
3
|
+
|
|
4
|
+
sodium.ready.catch(() => {});
|
|
5
|
+
|
|
6
|
+
export function deriveKey(length: number, algorithm: Buffer, ...values: Buffer[]): Buffer {
|
|
7
|
+
return Buffer.from(
|
|
8
|
+
sodium.crypto_generichash(
|
|
9
|
+
length,
|
|
10
|
+
Buffer.concat([
|
|
11
|
+
algorithm,
|
|
12
|
+
...values,
|
|
13
|
+
]),
|
|
14
|
+
null,
|
|
15
|
+
),
|
|
16
|
+
);
|
|
17
|
+
}
|
package/tsconfig.json
CHANGED
package/dist/X25519/utils.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/X25519/utils.ts"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,GACxB,MAAM,CAWR"}
|
package/dist/X25519/utils.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import sodium from 'libsodium-wrappers';
|
|
2
|
-
const ALGORITHM = Buffer.from('X25519-XChaCha20-Poly1305', 'utf8');
|
|
3
|
-
sodium.ready.catch(() => { });
|
|
4
|
-
export function deriveEncryptionKey(sharedSecret, senderPublicKey, recipientPublicKey) {
|
|
5
|
-
return Buffer.from(sodium.crypto_generichash(sodium.crypto_aead_xchacha20poly1305_ietf_KEYBYTES, Buffer.concat([
|
|
6
|
-
ALGORITHM,
|
|
7
|
-
sharedSecret,
|
|
8
|
-
senderPublicKey,
|
|
9
|
-
recipientPublicKey,
|
|
10
|
-
]), null));
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/X25519/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/X25519/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAE7B,MAAM,UAAU,mBAAmB,CAClC,YAAoB,EACpB,eAAuB,EACvB,kBAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC3C,MAAM,CAAC,2CAA2C,EAClD,MAAM,CAAC,MAAM,CAAC;QACb,SAAS;QACT,YAAY;QACZ,eAAe;QACf,kBAAkB;KAClB,CAAC,EACF,IAAI,CACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/src/X25519/utils.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import sodium from 'libsodium-wrappers';
|
|
2
|
-
|
|
3
|
-
const ALGORITHM = Buffer.from('X25519-XChaCha20-Poly1305', 'utf8');
|
|
4
|
-
|
|
5
|
-
sodium.ready.catch(() => {});
|
|
6
|
-
|
|
7
|
-
export function deriveEncryptionKey(
|
|
8
|
-
sharedSecret: Buffer,
|
|
9
|
-
senderPublicKey: Buffer,
|
|
10
|
-
recipientPublicKey: Buffer,
|
|
11
|
-
): Buffer {
|
|
12
|
-
return Buffer.from(sodium.crypto_generichash(
|
|
13
|
-
sodium.crypto_aead_xchacha20poly1305_ietf_KEYBYTES,
|
|
14
|
-
Buffer.concat([
|
|
15
|
-
ALGORITHM,
|
|
16
|
-
sharedSecret,
|
|
17
|
-
senderPublicKey,
|
|
18
|
-
recipientPublicKey,
|
|
19
|
-
]),
|
|
20
|
-
null,
|
|
21
|
-
));
|
|
22
|
-
}
|