cas-typescript-sdk 1.0.23 → 1.0.25
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/Cargo.toml +3 -20
- package/README.md +1 -1
- package/index.d.ts +22 -21
- package/index.node +0 -0
- package/lib/asymmetric/RSAWrapper.d.ts +3 -3
- package/lib/asymmetric/RSAWrapper.js +1 -1
- package/lib/asymmetric/index.d.ts +2 -2
- package/lib/asymmetric/index.js +1 -3
- package/lib/digital-signature/digital-siganture-sha-512.d.ts +5 -5
- package/lib/digital-signature/digital-siganture-sha-512.js +2 -2
- package/lib/digital-signature/digital-signature-base.d.ts +3 -3
- package/lib/digital-signature/digital-signaturte-sha-256.d.ts +3 -3
- package/lib/digital-signature/index.d.ts +2 -1
- package/lib/hybrid/types/aes-rsa-hybrid-initializer.d.ts +2 -2
- package/lib/index.d.ts +8 -9
- package/lib/index.js +22 -29
- package/lib/key_exchange/index.d.ts +2 -1
- package/lib/key_exchange/x25519.d.ts +2 -2
- package/lib/symmetric/aes-wrapper.d.ts +3 -3
- package/lib/symmetric/index.d.ts +2 -1
- package/package.json +1 -1
- package/src/asymmetric/cas_rsa.rs +13 -59
- package/src/digital_signature/sha_256_ed25519.rs +6 -42
- package/src/digital_signature/sha_256_rsa.rs +7 -63
- package/src/digital_signature/sha_512_ed25519.rs +8 -48
- package/src/digital_signature/sha_512_rsa.rs +9 -62
- package/src/digital_signature/types.rs +34 -0
- package/src/hashers/sha.rs +1 -35
- package/src/key_exchange/types.rs +17 -0
- package/src/key_exchange/x25519.rs +4 -36
- package/src/lib.rs +3 -8
- package/src/password_hashers/argon2.rs +4 -44
- package/src/password_hashers/bcrypt.rs +4 -31
- package/src/password_hashers/scrypt.rs +3 -42
- package/src/sponges/ascon_aead.rs +9 -39
- package/src/symmetric/aes.rs +13 -95
- package/src/symmetric/types.rs +17 -0
- package/src-ts/asymmetric/RSAWrapper.ts +3 -3
- package/src-ts/asymmetric/index.ts +2 -2
- package/src-ts/digital-signature/digital-siganture-sha-512.ts +5 -5
- package/src-ts/digital-signature/digital-signature-base.ts +3 -3
- package/src-ts/digital-signature/digital-signaturte-sha-256.ts +3 -3
- package/src-ts/digital-signature/index.ts +4 -1
- package/src-ts/hybrid/types/aes-rsa-hybrid-initializer.ts +2 -2
- package/src-ts/index.ts +8 -46
- package/src-ts/key_exchange/index.ts +2 -1
- package/src-ts/key_exchange/x25519.ts +2 -2
- package/src-ts/symmetric/aes-wrapper.ts +3 -3
- package/src-ts/symmetric/index.ts +2 -1
- package/test-ts/asymmetric.test.spec.ts +3 -3
- package/test-ts/digital-signature.test.spec.ts +5 -5
- package/test-ts/insecure-channel.test.spec.ts +5 -5
- package/src/asymmetric/cas_asymmetric_encryption.rs +0 -15
- package/src/digital_signature/cas_digital_signature_rsa.rs +0 -27
- package/src/hashers/blake2.rs +0 -37
- package/src/hashers/cas_hasher.rs +0 -8
- package/src/key_exchange/cas_key_exchange.rs +0 -6
- package/src/password_hashers/cas_password_hasher.rs +0 -4
- package/src/sponges/cas_ascon_aead.rs +0 -6
- package/src/symmetric/cas_symmetric_encryption.rs +0 -14
package/Cargo.toml
CHANGED
|
@@ -8,27 +8,10 @@ path = "src/lib.rs"
|
|
|
8
8
|
crate-type = ["cdylib"]
|
|
9
9
|
|
|
10
10
|
[dependencies]
|
|
11
|
-
aes-gcm = "0.10.3"
|
|
12
|
-
argon2 = "0.5.2"
|
|
13
|
-
bcrypt = "0.15.0"
|
|
14
|
-
blake2 = "0.10.6"
|
|
15
11
|
napi = "2"
|
|
16
12
|
napi-derive = "2"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
rsa = "0.9.6"
|
|
20
|
-
scrypt = "0.11.0"
|
|
21
|
-
sha3 = "0.10.8"
|
|
22
|
-
x25519-dalek = {version = "2.0.0", features = ["static_secrets"]}
|
|
23
|
-
rand_07 = { package = "rand", version = "0.7.0" }
|
|
24
|
-
ascon-aead = "0.4.2"
|
|
25
|
-
rayon = "1.10.0"
|
|
26
|
-
|
|
27
|
-
[profile.dev.package.num-bigint-dig]
|
|
28
|
-
opt-level = 3
|
|
29
|
-
|
|
30
|
-
[dependencies.ed25519-dalek]
|
|
31
|
-
version = "1"
|
|
13
|
+
csbindgen = "1.9.1"
|
|
14
|
+
cas-lib = "0.1.6"
|
|
32
15
|
|
|
33
16
|
[build-dependencies]
|
|
34
|
-
napi-build = "1"
|
|
17
|
+
napi-build = "1"
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ The official NPM page can be found [here](https://www.npmjs.com/package/cas-type
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
## Consuming Library Documentation
|
|
15
|
-
This Node.js NPM module is dependent on our Rust layer [
|
|
15
|
+
This Node.js NPM module is dependent on our Rust layer [cas-lib](https://github.com/Cryptographic-API-Services/cas-lib). that contains methods to run industry-standard cryptographic operations sequentially, on threads, and the thread pool.
|
|
16
16
|
|
|
17
17
|
We utilize some smart people's existing work and we believe their documentation should be reviewed when possible.
|
|
18
18
|
- [Spin Research](https://github.com/SpinResearch)
|
package/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export function sha512(dataToHash: Array<number>): Array<number>
|
|
|
19
19
|
export function sha512Verify(dataToHash: Array<number>, dataToVerify: Array<number>): boolean
|
|
20
20
|
export function sha256(dataToHash: Array<number>): Array<number>
|
|
21
21
|
export function sha256Verify(dataToHash: Array<number>, dataToVerify: Array<number>): boolean
|
|
22
|
-
export function x25519GenerateSecretAndPublicKey():
|
|
22
|
+
export function x25519GenerateSecretAndPublicKey(): CASx25519SecretPublicKeyResult
|
|
23
23
|
export function x25519DiffieHellman(mySecretKey: Array<number>, usersPublicKey: Array<number>): Array<number>
|
|
24
24
|
export function aesNonce(): Array<number>
|
|
25
25
|
export function aes128Key(): Array<number>
|
|
@@ -28,52 +28,53 @@ export function aes128Encrypt(aesKey: Array<number>, nonce: Array<number>, plain
|
|
|
28
28
|
export function aes128Decrypt(aesKey: Array<number>, nonce: Array<number>, ciphertext: Array<number>): Array<number>
|
|
29
29
|
export function aes256Encrypt(aesKey: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>
|
|
30
30
|
export function aes256Decrypt(aesKey: Array<number>, nonce: Array<number>, ciphertext: Array<number>): Array<number>
|
|
31
|
-
export function aes256KeyFromX25519SharedSecret(sharedSecret: Array<number>):
|
|
32
|
-
export function aes128KeyFromX25519SharedSecret(sharedSecret: Array<number>):
|
|
33
|
-
export function generateRsaKeys(keySize: number):
|
|
31
|
+
export function aes256KeyFromX25519SharedSecret(sharedSecret: Array<number>): CASAesKeyFromX25519SharedSecret
|
|
32
|
+
export function aes128KeyFromX25519SharedSecret(sharedSecret: Array<number>): CASAesKeyFromX25519SharedSecret
|
|
33
|
+
export function generateRsaKeys(keySize: number): CasrsaKeyPairResult
|
|
34
34
|
export function encryptPlaintextRsa(publicKey: string, plaintext: Array<number>): Array<number>
|
|
35
35
|
export function decryptCiphertextRsa(privateKey: string, ciphertext: Array<number>): Array<number>
|
|
36
36
|
export function signRsa(privateKey: string, hash: Array<number>): Array<number>
|
|
37
37
|
export function verifyRsa(publicKey: string, hash: Array<number>, signature: Array<number>): boolean
|
|
38
|
-
export function sha512RsaDigitalSignature(rsaKeySize: number, dataToSign: Array<number>):
|
|
38
|
+
export function sha512RsaDigitalSignature(rsaKeySize: number, dataToSign: Array<number>): CASRSADigitalSignatureResult
|
|
39
39
|
export function sha512RsaVerifyDigitalSignature(publicKey: string, dataToVerify: Array<number>, signature: Array<number>): boolean
|
|
40
|
-
export function sha256RsaDigitalSignature(rsaKeySize: number, dataToSign: Array<number>):
|
|
40
|
+
export function sha256RsaDigitalSignature(rsaKeySize: number, dataToSign: Array<number>): CASRSADigitalSignatureResult
|
|
41
41
|
export function sha256RsaVerifyDigitalSignature(publicKey: string, dataToVerify: Array<number>, signature: Array<number>): boolean
|
|
42
|
-
export function sha512Ed25519DigitalSignature(dataToSign: Array<number>):
|
|
42
|
+
export function sha512Ed25519DigitalSignature(dataToSign: Array<number>): CASSHAED25519DalekDigitalSignatureResult
|
|
43
43
|
export function sha512Ed25519DigitalSignatureVerify(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean
|
|
44
|
-
export function sha256Ed25519DigitalSignature(dataToSign: Array<number>):
|
|
44
|
+
export function sha256Ed25519DigitalSignature(dataToSign: Array<number>): CASSHAED25519DalekDigitalSignatureResult
|
|
45
45
|
export function sha256Ed25519DigitalSignatureVerify(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean
|
|
46
46
|
export function ascon128KeyGenerate(): Array<number>
|
|
47
47
|
export function ascon128NonceGenerate(): Array<number>
|
|
48
48
|
export function ascon128Encrypt(key: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>
|
|
49
49
|
export function ascon128Decrypt(key: Array<number>, nonce: Array<number>, ciphertext: Array<number>): Array<number>
|
|
50
|
-
export type
|
|
51
|
-
export class
|
|
50
|
+
export type CASx25519SecretPublicKeyResult = CaSx25519SecretPublicKeyResult
|
|
51
|
+
export class CaSx25519SecretPublicKeyResult {
|
|
52
52
|
publicKey: Array<number>
|
|
53
53
|
secretKey: Array<number>
|
|
54
54
|
constructor(publicKey: Array<number>, secretKey: Array<number>)
|
|
55
55
|
}
|
|
56
|
-
export
|
|
56
|
+
export type CASAesKeyFromX25519SharedSecret = CasAesKeyFromX25519SharedSecret
|
|
57
|
+
export class CasAesKeyFromX25519SharedSecret {
|
|
57
58
|
aesKey: Array<number>
|
|
58
59
|
aesNonce: Array<number>
|
|
59
60
|
constructor(aesKey: Array<number>, aesNonce: Array<number>)
|
|
60
61
|
}
|
|
61
|
-
export type
|
|
62
|
-
export class
|
|
62
|
+
export type CASRSAKeyPairResult = CasrsaKeyPairResult
|
|
63
|
+
export class CasrsaKeyPairResult {
|
|
63
64
|
privateKey: string
|
|
64
65
|
publicKey: string
|
|
65
66
|
constructor(privateKey: string, publicKey: string)
|
|
66
67
|
}
|
|
67
|
-
export type
|
|
68
|
-
export class
|
|
68
|
+
export type CASSHAED25519DalekDigitalSignatureResult = Casshaed25519DalekDigitalSignatureResult
|
|
69
|
+
export class Casshaed25519DalekDigitalSignatureResult {
|
|
70
|
+
publicKey: Array<number>
|
|
71
|
+
signature: Array<number>
|
|
72
|
+
constructor(publicKey: Array<number>, signature: Array<number>)
|
|
73
|
+
}
|
|
74
|
+
export type CASRSADigitalSignatureResult = CasrsaDigitalSignatureResult
|
|
75
|
+
export class CasrsaDigitalSignatureResult {
|
|
69
76
|
publicKey: string
|
|
70
77
|
privateKey: string
|
|
71
78
|
signature: Array<number>
|
|
72
79
|
constructor(publicKey: string, privateKey: string, signature: Array<number>)
|
|
73
80
|
}
|
|
74
|
-
export type SHAED25519DalekDigitalSignatureResult = Shaed25519DalekDigitalSignatureResult
|
|
75
|
-
export class Shaed25519DalekDigitalSignatureResult {
|
|
76
|
-
publicKey: Array<number>
|
|
77
|
-
signature: Array<number>
|
|
78
|
-
constructor(publicKey: Array<number>, signature: Array<number>)
|
|
79
|
-
}
|
package/index.node
CHANGED
|
Binary file
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASRSAKeyPairResult } from "../../index";
|
|
2
2
|
export declare class RSAWrapper {
|
|
3
3
|
/**
|
|
4
4
|
* Generates an RSA key pair based of parameter sent in 1024, 2048, and 4096 are supported.
|
|
5
5
|
* @param keySize
|
|
6
|
-
* @returns
|
|
6
|
+
* @returns CASRSAKeyPairResult
|
|
7
7
|
*/
|
|
8
|
-
generateKeys(keySize: number):
|
|
8
|
+
generateKeys(keySize: number): CASRSAKeyPairResult;
|
|
9
9
|
/**
|
|
10
10
|
* Encrypts a plaintext byte array with a RSA public key
|
|
11
11
|
* @param publicKey
|
|
@@ -6,7 +6,7 @@ class RSAWrapper {
|
|
|
6
6
|
/**
|
|
7
7
|
* Generates an RSA key pair based of parameter sent in 1024, 2048, and 4096 are supported.
|
|
8
8
|
* @param keySize
|
|
9
|
-
* @returns
|
|
9
|
+
* @returns CASRSAKeyPairResult
|
|
10
10
|
*/
|
|
11
11
|
generateKeys(keySize) {
|
|
12
12
|
if (keySize !== 1024 && keySize !== 2048 && keySize !== 4096) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { RSAWrapper } from "./RSAWrapper";
|
|
2
|
-
import {
|
|
3
|
-
export { RSAWrapper,
|
|
2
|
+
import { CASRSAKeyPairResult } from "../../index";
|
|
3
|
+
export { RSAWrapper, CASRSAKeyPairResult };
|
package/lib/asymmetric/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.RSAWrapper = void 0;
|
|
4
4
|
const RSAWrapper_1 = require("./RSAWrapper");
|
|
5
5
|
Object.defineProperty(exports, "RSAWrapper", { enumerable: true, get: function () { return RSAWrapper_1.RSAWrapper; } });
|
|
6
|
-
const index_1 = require("../../index");
|
|
7
|
-
Object.defineProperty(exports, "RsaKeyPairResult", { enumerable: true, get: function () { return index_1.RsaKeyPairResult; } });
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
|
|
2
2
|
import { IDigitalSignature } from "./digital-signature-base";
|
|
3
3
|
export declare class DigitalSignatureSHA512Wrapper implements IDigitalSignature {
|
|
4
4
|
/**
|
|
5
5
|
* Creates an ED25519 siganture from an array of bytes with SHA3-512.
|
|
6
6
|
* @param dataToSign
|
|
7
|
-
* @returns
|
|
7
|
+
* @returns CASSHAED25519DalekDigitalSignatureResult
|
|
8
8
|
*/
|
|
9
|
-
createED25519(dataToSign: number[]):
|
|
9
|
+
createED25519(dataToSign: number[]): CASSHAED25519DalekDigitalSignatureResult;
|
|
10
10
|
/**
|
|
11
11
|
* Verifies an ED25519 signature with the public key generated from running createED25519() with SHA3-512
|
|
12
12
|
* @param publicKey
|
|
@@ -19,9 +19,9 @@ export declare class DigitalSignatureSHA512Wrapper implements IDigitalSignature
|
|
|
19
19
|
* Generates and RSA digital signature with SHA3-512
|
|
20
20
|
* @param rsa_key_size
|
|
21
21
|
* @param data_to_sign
|
|
22
|
-
* @returns
|
|
22
|
+
* @returns CASRSADigitalSignatureResult
|
|
23
23
|
*/
|
|
24
|
-
createRsa(rsa_key_size: number, data_to_sign: number[]):
|
|
24
|
+
createRsa(rsa_key_size: number, data_to_sign: number[]): CASRSADigitalSignatureResult;
|
|
25
25
|
/**
|
|
26
26
|
* Verifies a digital signature created with the RSA public key.
|
|
27
27
|
* @param public_key
|
|
@@ -6,7 +6,7 @@ class DigitalSignatureSHA512Wrapper {
|
|
|
6
6
|
/**
|
|
7
7
|
* Creates an ED25519 siganture from an array of bytes with SHA3-512.
|
|
8
8
|
* @param dataToSign
|
|
9
|
-
* @returns
|
|
9
|
+
* @returns CASSHAED25519DalekDigitalSignatureResult
|
|
10
10
|
*/
|
|
11
11
|
createED25519(dataToSign) {
|
|
12
12
|
if (dataToSign?.length === 0) {
|
|
@@ -37,7 +37,7 @@ class DigitalSignatureSHA512Wrapper {
|
|
|
37
37
|
* Generates and RSA digital signature with SHA3-512
|
|
38
38
|
* @param rsa_key_size
|
|
39
39
|
* @param data_to_sign
|
|
40
|
-
* @returns
|
|
40
|
+
* @returns CASRSADigitalSignatureResult
|
|
41
41
|
*/
|
|
42
42
|
createRsa(rsa_key_size, data_to_sign) {
|
|
43
43
|
if (rsa_key_size !== 1024 && rsa_key_size !== 2048 && rsa_key_size !== 4096) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
|
|
2
2
|
export interface IDigitalSignature {
|
|
3
|
-
createRsa(rsa_key_size: number, data_to_sign: Array<number>):
|
|
3
|
+
createRsa(rsa_key_size: number, data_to_sign: Array<number>): CASRSADigitalSignatureResult;
|
|
4
4
|
verifyRSa(public_key: string, data_to_verify: Array<number>, signature: Array<number>): boolean;
|
|
5
|
-
createED25519(dataToSign: Array<number>):
|
|
5
|
+
createED25519(dataToSign: Array<number>): CASSHAED25519DalekDigitalSignatureResult;
|
|
6
6
|
verifyED25519(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean;
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
|
|
2
2
|
import { IDigitalSignature } from "./digital-signature-base";
|
|
3
3
|
export declare class DigitalSignatureSHA256Wrapper implements IDigitalSignature {
|
|
4
4
|
/**
|
|
@@ -6,7 +6,7 @@ export declare class DigitalSignatureSHA256Wrapper implements IDigitalSignature
|
|
|
6
6
|
* @param dataToSign
|
|
7
7
|
* @returns SHAED25519DalekDigitalSignatureResult
|
|
8
8
|
*/
|
|
9
|
-
createED25519(dataToSign: number[]):
|
|
9
|
+
createED25519(dataToSign: number[]): CASSHAED25519DalekDigitalSignatureResult;
|
|
10
10
|
/**
|
|
11
11
|
* Verifies an ED25519 signature with the public key generated from running createED25519() with SHA3-512
|
|
12
12
|
* @param publicKey
|
|
@@ -21,7 +21,7 @@ export declare class DigitalSignatureSHA256Wrapper implements IDigitalSignature
|
|
|
21
21
|
* @param data_to_sign
|
|
22
22
|
* @returns RsaDigitalSignatureResult
|
|
23
23
|
*/
|
|
24
|
-
createRsa(rsa_key_size: number, data_to_sign: number[]):
|
|
24
|
+
createRsa(rsa_key_size: number, data_to_sign: number[]): CASRSADigitalSignatureResult;
|
|
25
25
|
/**
|
|
26
26
|
* Verifies a digital signature created with the RSA public key.
|
|
27
27
|
* @param public_key
|
|
@@ -2,4 +2,5 @@ import { DigitalSignatureType } from "./digital-signature-factory";
|
|
|
2
2
|
import { DigitalSignatureFactory } from "./digital-signature-factory";
|
|
3
3
|
import { DigitalSignatureSHA256Wrapper } from "./digital-signaturte-sha-256";
|
|
4
4
|
import { DigitalSignatureSHA512Wrapper } from "./digital-siganture-sha-512";
|
|
5
|
-
|
|
5
|
+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
|
|
6
|
+
export { DigitalSignatureFactory, DigitalSignatureSHA256Wrapper, DigitalSignatureSHA512Wrapper, DigitalSignatureType, CASSHAED25519DalekDigitalSignatureResult, CASRSADigitalSignatureResult };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASRSAKeyPairResult } from "../../..";
|
|
2
2
|
export declare class AESRSAHybridInitializer {
|
|
3
3
|
aesType: number;
|
|
4
4
|
aesKey: Array<number>;
|
|
5
5
|
aesNonce: Array<number>;
|
|
6
|
-
rsaKeyPair:
|
|
6
|
+
rsaKeyPair: CASRSAKeyPairResult;
|
|
7
7
|
/**
|
|
8
8
|
* Constructs an initalizer to use with Hybrid Encryption wrapper. Generates your RSA key pair, AES nonce, and AES key based on the parameters passed in.
|
|
9
9
|
* @param aesType
|
package/lib/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export { AesRsaHybridEncryptResult, AESRSAHybridInitializer, AESWrapper, Argon2Wrapper, AsconWrapper, BCryptWrapper, DigitalSignatureFactory, DigitalSignatureSHA256Wrapper, DigitalSignatureSHA512Wrapper, DigitalSignatureType, HasherFactory, HasherType, HybridEncryptionWrapper, PasswordHasherFactory, PasswordHasherType, RsaKeyPairResult, RSAWrapper, ScryptWrapper, SHAWrapper, X25519Wrapper, };
|
|
1
|
+
export * from "./password-hashers/index";
|
|
2
|
+
export * from "./hashers/index";
|
|
3
|
+
export * from "./key_exchange/index";
|
|
4
|
+
export * from "./symmetric/index";
|
|
5
|
+
export * from "./asymmetric/index";
|
|
6
|
+
export * from "./hybrid/index";
|
|
7
|
+
export * from "./digital-signature";
|
|
8
|
+
export * from "./sponges/index";
|
package/lib/index.js
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
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
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "HasherFactory", { enumerable: true, get: function () { return index_2.HasherFactory; } });
|
|
12
|
-
Object.defineProperty(exports, "HasherType", { enumerable: true, get: function () { return index_2.HasherType; } });
|
|
13
|
-
Object.defineProperty(exports, "SHAWrapper", { enumerable: true, get: function () { return index_2.SHAWrapper; } });
|
|
14
|
-
const index_3 = require("./key_exchange/index");
|
|
15
|
-
Object.defineProperty(exports, "X25519Wrapper", { enumerable: true, get: function () { return index_3.X25519Wrapper; } });
|
|
16
|
-
const index_4 = require("./symmetric/index");
|
|
17
|
-
Object.defineProperty(exports, "AESWrapper", { enumerable: true, get: function () { return index_4.AESWrapper; } });
|
|
18
|
-
const index_5 = require("./asymmetric/index");
|
|
19
|
-
Object.defineProperty(exports, "RsaKeyPairResult", { enumerable: true, get: function () { return index_5.RsaKeyPairResult; } });
|
|
20
|
-
Object.defineProperty(exports, "RSAWrapper", { enumerable: true, get: function () { return index_5.RSAWrapper; } });
|
|
21
|
-
const index_6 = require("./hybrid/index");
|
|
22
|
-
Object.defineProperty(exports, "AesRsaHybridEncryptResult", { enumerable: true, get: function () { return index_6.AesRsaHybridEncryptResult; } });
|
|
23
|
-
Object.defineProperty(exports, "AESRSAHybridInitializer", { enumerable: true, get: function () { return index_6.AESRSAHybridInitializer; } });
|
|
24
|
-
Object.defineProperty(exports, "HybridEncryptionWrapper", { enumerable: true, get: function () { return index_6.HybridEncryptionWrapper; } });
|
|
25
|
-
const digital_signature_1 = require("./digital-signature");
|
|
26
|
-
Object.defineProperty(exports, "DigitalSignatureFactory", { enumerable: true, get: function () { return digital_signature_1.DigitalSignatureFactory; } });
|
|
27
|
-
Object.defineProperty(exports, "DigitalSignatureSHA256Wrapper", { enumerable: true, get: function () { return digital_signature_1.DigitalSignatureSHA256Wrapper; } });
|
|
28
|
-
Object.defineProperty(exports, "DigitalSignatureSHA512Wrapper", { enumerable: true, get: function () { return digital_signature_1.DigitalSignatureSHA512Wrapper; } });
|
|
29
|
-
Object.defineProperty(exports, "DigitalSignatureType", { enumerable: true, get: function () { return digital_signature_1.DigitalSignatureType; } });
|
|
30
|
-
const index_7 = require("./sponges/index");
|
|
31
|
-
Object.defineProperty(exports, "AsconWrapper", { enumerable: true, get: function () { return index_7.AsconWrapper; } });
|
|
17
|
+
__exportStar(require("./password-hashers/index"), exports);
|
|
18
|
+
__exportStar(require("./hashers/index"), exports);
|
|
19
|
+
__exportStar(require("./key_exchange/index"), exports);
|
|
20
|
+
__exportStar(require("./symmetric/index"), exports);
|
|
21
|
+
__exportStar(require("./asymmetric/index"), exports);
|
|
22
|
+
__exportStar(require("./hybrid/index"), exports);
|
|
23
|
+
__exportStar(require("./digital-signature"), exports);
|
|
24
|
+
__exportStar(require("./sponges/index"), exports);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASx25519SecretPublicKeyResult } from "../../index";
|
|
2
2
|
export declare class X25519Wrapper {
|
|
3
3
|
/**
|
|
4
4
|
* Generates and secret and public key to be used to create a shared secret with Diffie Hellman.
|
|
5
5
|
* User should share their public key with the other user and take the other user's public key and they can generate a Shared Secret.
|
|
6
6
|
* @returns X25519SecretPublicKeyResult
|
|
7
7
|
*/
|
|
8
|
-
generateSecretAndPublicKey():
|
|
8
|
+
generateSecretAndPublicKey(): CASx25519SecretPublicKeyResult;
|
|
9
9
|
/**
|
|
10
10
|
* User takes their secret key and the other user's public key to generate a shared secret.
|
|
11
11
|
* Can be used to derive an AES key over insecure channel.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CASAesKeyFromX25519SharedSecret } from "../../index";
|
|
2
2
|
export declare class AESWrapper {
|
|
3
3
|
/**
|
|
4
4
|
* @description Generates a 128 bit AES key
|
|
@@ -52,11 +52,11 @@ export declare class AESWrapper {
|
|
|
52
52
|
* @param shared_secret
|
|
53
53
|
* @returns
|
|
54
54
|
*/
|
|
55
|
-
aes256KeyNonceX25519DiffieHellman(shared_secret: Array<number>):
|
|
55
|
+
aes256KeyNonceX25519DiffieHellman(shared_secret: Array<number>): CASAesKeyFromX25519SharedSecret;
|
|
56
56
|
/**
|
|
57
57
|
* Derives an AES-128 key from a X25519 Diffie Hellman shared secret.
|
|
58
58
|
* @param shared_secret
|
|
59
59
|
* @returns
|
|
60
60
|
*/
|
|
61
|
-
aes128KeyNonceX25519DiffieHellman(shared_secret: Array<number>):
|
|
61
|
+
aes128KeyNonceX25519DiffieHellman(shared_secret: Array<number>): CASAesKeyFromX25519SharedSecret;
|
|
62
62
|
}
|
package/lib/symmetric/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,70 +1,24 @@
|
|
|
1
|
+
use cas_lib::asymmetric::{cas_asymmetric_encryption::CASRSAEncryption, cas_rsa::CASRSA, types::RSAKeyPairResult};
|
|
1
2
|
use napi_derive::napi;
|
|
2
|
-
use rand::rngs::OsRng;
|
|
3
|
-
use rsa::{
|
|
4
|
-
pkcs1::{DecodeRsaPublicKey, EncodeRsaPublicKey},
|
|
5
|
-
pkcs8::{DecodePrivateKey, EncodePrivateKey},
|
|
6
|
-
Pkcs1v15Encrypt, Pkcs1v15Sign, RsaPrivateKey, RsaPublicKey,
|
|
7
|
-
};
|
|
8
3
|
|
|
9
|
-
|
|
10
|
-
pub struct
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
let mut rng: OsRng = OsRng;
|
|
15
|
-
let private_key: RsaPrivateKey =
|
|
16
|
-
RsaPrivateKey::new(&mut rng, key_size as usize).expect("failed to generate a key");
|
|
17
|
-
let public_key: RsaPublicKey = private_key.to_public_key();
|
|
18
|
-
let result = RSAKeyPairResult {
|
|
19
|
-
public_key: public_key
|
|
20
|
-
.to_pkcs1_pem(rsa::pkcs1::LineEnding::LF)
|
|
21
|
-
.unwrap()
|
|
22
|
-
.to_string(),
|
|
23
|
-
private_key: private_key
|
|
24
|
-
.to_pkcs8_pem(rsa::pkcs8::LineEnding::LF)
|
|
25
|
-
.unwrap()
|
|
26
|
-
.to_string(),
|
|
27
|
-
};
|
|
28
|
-
result
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
fn encrypt_plaintext(public_key: String, plaintext: Vec<u8>) -> Vec<u8> {
|
|
32
|
-
let public_key = RsaPublicKey::from_pkcs1_pem(&public_key).unwrap();
|
|
33
|
-
let mut rng = rand::thread_rng();
|
|
34
|
-
let ciphertext = public_key
|
|
35
|
-
.encrypt(&mut rng, Pkcs1v15Encrypt, &plaintext)
|
|
36
|
-
.unwrap();
|
|
37
|
-
ciphertext
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
fn decrypt_ciphertext(private_key: String, ciphertext: Vec<u8>) -> Vec<u8> {
|
|
41
|
-
let private_key = RsaPrivateKey::from_pkcs8_pem(&private_key).unwrap();
|
|
42
|
-
let plaintext = private_key.decrypt(Pkcs1v15Encrypt, &ciphertext).unwrap();
|
|
43
|
-
plaintext
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
fn sign(private_key: String, hash: Vec<u8>) -> Vec<u8> {
|
|
47
|
-
let private_key = RsaPrivateKey::from_pkcs8_pem(&private_key).unwrap();
|
|
48
|
-
let mut signed_data = private_key
|
|
49
|
-
.sign(Pkcs1v15Sign::new_unprefixed(), &hash)
|
|
50
|
-
.unwrap();
|
|
51
|
-
signed_data
|
|
52
|
-
}
|
|
4
|
+
#[napi(constructor)]
|
|
5
|
+
pub struct CASRSAKeyPairResult {
|
|
6
|
+
pub private_key: String,
|
|
7
|
+
pub public_key: String,
|
|
8
|
+
}
|
|
53
9
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
} else {
|
|
60
|
-
return false;
|
|
10
|
+
impl From<RSAKeyPairResult> for CASRSAKeyPairResult {
|
|
11
|
+
fn from(result: RSAKeyPairResult) -> Self {
|
|
12
|
+
CASRSAKeyPairResult {
|
|
13
|
+
private_key: result.private_key,
|
|
14
|
+
public_key: result.public_key,
|
|
61
15
|
}
|
|
62
16
|
}
|
|
63
17
|
}
|
|
64
18
|
|
|
65
19
|
#[napi]
|
|
66
|
-
pub fn generate_rsa_keys(key_size: u32) ->
|
|
67
|
-
return CASRSA::generate_rsa_keys(key_size);
|
|
20
|
+
pub fn generate_rsa_keys(key_size: u32) -> CASRSAKeyPairResult {
|
|
21
|
+
return CASRSA::generate_rsa_keys(key_size as usize).into();
|
|
68
22
|
}
|
|
69
23
|
|
|
70
24
|
#[napi]
|
|
@@ -1,47 +1,11 @@
|
|
|
1
|
-
use
|
|
1
|
+
use cas_lib::digital_signature::{cas_digital_signature_rsa::ED25519DigitalSignature, sha_256_ed25519::SHA256ED25519DigitalSignature};
|
|
2
2
|
use napi_derive::napi;
|
|
3
|
-
use sha3::{Digest, Sha3_256};
|
|
4
3
|
|
|
5
|
-
use super::
|
|
6
|
-
ED25519DigitalSignature, SHAED25519DalekDigitalSignatureResult,
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
pub struct SHA256ED25519DigitalSignature;
|
|
10
|
-
|
|
11
|
-
impl ED25519DigitalSignature for SHA256ED25519DigitalSignature {
|
|
12
|
-
fn digital_signature_ed25519(data_to_sign: Vec<u8>) -> SHAED25519DalekDigitalSignatureResult {
|
|
13
|
-
let mut hasher = Sha3_256::new();
|
|
14
|
-
hasher.update(data_to_sign);
|
|
15
|
-
let sha_hasher_result = hasher.finalize();
|
|
16
|
-
let mut csprng = rand_07::rngs::OsRng {};
|
|
17
|
-
let keypair = ed25519_dalek::Keypair::generate(&mut csprng);
|
|
18
|
-
|
|
19
|
-
let signature = keypair.sign(&sha_hasher_result);
|
|
20
|
-
let signature_bytes = signature.to_bytes();
|
|
21
|
-
let public_keypair_bytes = keypair.public.to_bytes();
|
|
22
|
-
let result = SHAED25519DalekDigitalSignatureResult {
|
|
23
|
-
public_key: public_keypair_bytes.to_vec(),
|
|
24
|
-
signature: signature_bytes.to_vec(),
|
|
25
|
-
};
|
|
26
|
-
result
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
fn digital_signature_ed25519_verify(public_key: Vec<u8>, data_to_verify: Vec<u8>, signature: Vec<u8>) -> bool {
|
|
30
|
-
let mut hasher = Sha3_256::new();
|
|
31
|
-
hasher.update(data_to_verify);
|
|
32
|
-
let sha_hasher_result = hasher.finalize();
|
|
33
|
-
|
|
34
|
-
let public_key_parsed = ed25519_dalek::PublicKey::from_bytes(&public_key).unwrap();
|
|
35
|
-
let signature_parsed = Signature::from_bytes(&signature).unwrap();
|
|
36
|
-
return public_key_parsed
|
|
37
|
-
.verify(&sha_hasher_result, &signature_parsed)
|
|
38
|
-
.is_ok();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
4
|
+
use super::types::CASSHAED25519DalekDigitalSignatureResult;
|
|
41
5
|
|
|
42
6
|
#[napi]
|
|
43
|
-
pub fn sha_256_ed25519_digital_signature(data_to_sign: Vec<u8>) ->
|
|
44
|
-
return SHA256ED25519DigitalSignature
|
|
7
|
+
pub fn sha_256_ed25519_digital_signature(data_to_sign: Vec<u8>) -> CASSHAED25519DalekDigitalSignatureResult {
|
|
8
|
+
return <SHA256ED25519DigitalSignature as ED25519DigitalSignature>::digital_signature_ed25519(data_to_sign).into();
|
|
45
9
|
}
|
|
46
10
|
|
|
47
11
|
#[napi]
|
|
@@ -53,7 +17,7 @@ pub fn sha_256_ed25519_digital_signature_verify(public_key: Vec<u8>, data_to_ver
|
|
|
53
17
|
fn sha_256_ed25519_test() {
|
|
54
18
|
let key_size: u32 = 1024;
|
|
55
19
|
let data_to_sign = b"GetTheseBytes".to_vec();
|
|
56
|
-
let signature_result:
|
|
20
|
+
let signature_result: CASSHAED25519DalekDigitalSignatureResult = SHA256ED25519DigitalSignature::digital_signature_ed25519(data_to_sign.clone()).into();
|
|
57
21
|
let is_verified: bool = SHA256ED25519DigitalSignature::digital_signature_ed25519_verify(signature_result.public_key, data_to_sign, signature_result.signature);
|
|
58
22
|
assert_eq!(is_verified, true);
|
|
59
23
|
}
|
|
@@ -62,7 +26,7 @@ fn sha_256_ed25519_test() {
|
|
|
62
26
|
fn sha_512_ed25519_test_fail() {
|
|
63
27
|
let key_size: u32 = 1024;
|
|
64
28
|
let data_to_sign = b"GetTheseBytes".to_vec();
|
|
65
|
-
let signature_result:
|
|
29
|
+
let signature_result: CASSHAED25519DalekDigitalSignatureResult = SHA256ED25519DigitalSignature::digital_signature_ed25519(data_to_sign.clone()).into();
|
|
66
30
|
let not_original_data = b"NOtTHoseBytes".to_vec();
|
|
67
31
|
let is_verified: bool = SHA256ED25519DigitalSignature::digital_signature_ed25519_verify(signature_result.public_key, not_original_data, signature_result.signature);
|
|
68
32
|
assert_eq!(is_verified, false);
|