cas-typescript-sdk 1.0.23 → 1.0.24

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.
Files changed (59) hide show
  1. package/Cargo.toml +3 -17
  2. package/index.d.ts +22 -21
  3. package/index.node +0 -0
  4. package/lib/asymmetric/RSAWrapper.d.ts +3 -3
  5. package/lib/asymmetric/RSAWrapper.js +1 -1
  6. package/lib/asymmetric/index.d.ts +2 -2
  7. package/lib/asymmetric/index.js +1 -3
  8. package/lib/digital-signature/digital-siganture-sha-512.d.ts +5 -5
  9. package/lib/digital-signature/digital-siganture-sha-512.js +2 -2
  10. package/lib/digital-signature/digital-signature-base.d.ts +3 -3
  11. package/lib/digital-signature/digital-signaturte-sha-256.d.ts +3 -3
  12. package/lib/digital-signature/index.d.ts +2 -1
  13. package/lib/hybrid/types/aes-rsa-hybrid-initializer.d.ts +2 -2
  14. package/lib/index.d.ts +8 -9
  15. package/lib/index.js +22 -29
  16. package/lib/key_exchange/index.d.ts +2 -1
  17. package/lib/key_exchange/x25519.d.ts +2 -2
  18. package/lib/symmetric/aes-wrapper.d.ts +3 -3
  19. package/lib/symmetric/index.d.ts +2 -1
  20. package/package.json +1 -1
  21. package/src/asymmetric/cas_rsa.rs +13 -59
  22. package/src/digital_signature/sha_256_ed25519.rs +6 -42
  23. package/src/digital_signature/sha_256_rsa.rs +7 -63
  24. package/src/digital_signature/sha_512_ed25519.rs +8 -48
  25. package/src/digital_signature/sha_512_rsa.rs +9 -62
  26. package/src/digital_signature/types.rs +34 -0
  27. package/src/hashers/sha.rs +1 -35
  28. package/src/key_exchange/types.rs +17 -0
  29. package/src/key_exchange/x25519.rs +4 -36
  30. package/src/lib.rs +3 -8
  31. package/src/password_hashers/argon2.rs +4 -44
  32. package/src/password_hashers/bcrypt.rs +4 -31
  33. package/src/password_hashers/scrypt.rs +3 -42
  34. package/src/sponges/ascon_aead.rs +9 -39
  35. package/src/symmetric/aes.rs +12 -88
  36. package/src/symmetric/types.rs +17 -0
  37. package/src-ts/asymmetric/RSAWrapper.ts +3 -3
  38. package/src-ts/asymmetric/index.ts +2 -2
  39. package/src-ts/digital-signature/digital-siganture-sha-512.ts +5 -5
  40. package/src-ts/digital-signature/digital-signature-base.ts +3 -3
  41. package/src-ts/digital-signature/digital-signaturte-sha-256.ts +3 -3
  42. package/src-ts/digital-signature/index.ts +4 -1
  43. package/src-ts/hybrid/types/aes-rsa-hybrid-initializer.ts +2 -2
  44. package/src-ts/index.ts +8 -46
  45. package/src-ts/key_exchange/index.ts +2 -1
  46. package/src-ts/key_exchange/x25519.ts +2 -2
  47. package/src-ts/symmetric/aes-wrapper.ts +3 -3
  48. package/src-ts/symmetric/index.ts +2 -1
  49. package/test-ts/asymmetric.test.spec.ts +3 -3
  50. package/test-ts/digital-signature.test.spec.ts +5 -5
  51. package/test-ts/insecure-channel.test.spec.ts +5 -5
  52. package/src/asymmetric/cas_asymmetric_encryption.rs +0 -15
  53. package/src/digital_signature/cas_digital_signature_rsa.rs +0 -27
  54. package/src/hashers/blake2.rs +0 -37
  55. package/src/hashers/cas_hasher.rs +0 -8
  56. package/src/key_exchange/cas_key_exchange.rs +0 -6
  57. package/src/password_hashers/cas_password_hasher.rs +0 -4
  58. package/src/sponges/cas_ascon_aead.rs +0 -6
  59. package/src/symmetric/cas_symmetric_encryption.rs +0 -14
package/Cargo.toml CHANGED
@@ -8,27 +8,13 @@ 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
13
  rand = "0.8.5"
18
14
  rand_chacha = "0.3.1"
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
15
  rayon = "1.10.0"
26
-
27
- [profile.dev.package.num-bigint-dig]
28
- opt-level = 3
29
-
30
- [dependencies.ed25519-dalek]
31
- version = "1"
16
+ csbindgen = "1.9.1"
17
+ cas-lib = "0.1.3"
32
18
 
33
19
  [build-dependencies]
34
- napi-build = "1"
20
+ napi-build = "1"
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(): X25519SecretPublicKeyResult
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>): AesKeyFromX25519SharedSecret
32
- export function aes128KeyFromX25519SharedSecret(sharedSecret: Array<number>): AesKeyFromX25519SharedSecret
33
- export function generateRsaKeys(keySize: number): RsaKeyPairResult
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>): RsaDigitalSignatureResult
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>): RsaDigitalSignatureResult
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>): Shaed25519DalekDigitalSignatureResult
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>): Shaed25519DalekDigitalSignatureResult
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 x25519SecretPublicKeyResult = X25519SecretPublicKeyResult
51
- export class X25519SecretPublicKeyResult {
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 class AesKeyFromX25519SharedSecret {
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 RSAKeyPairResult = RsaKeyPairResult
62
- export class RsaKeyPairResult {
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 RSADigitalSignatureResult = RsaDigitalSignatureResult
68
- export class RsaDigitalSignatureResult {
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 { RsaKeyPairResult } from "../../index";
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 RsaKeyPairResult
6
+ * @returns CASRSAKeyPairResult
7
7
  */
8
- generateKeys(keySize: number): RsaKeyPairResult;
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 RsaKeyPairResult
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 { RsaKeyPairResult } from "../../index";
3
- export { RSAWrapper, RsaKeyPairResult };
2
+ import { CASRSAKeyPairResult } from "../../index";
3
+ export { RSAWrapper, CASRSAKeyPairResult };
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RsaKeyPairResult = exports.RSAWrapper = void 0;
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 { RsaDigitalSignatureResult, SHAED25519DalekDigitalSignatureResult } from "../../index";
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 SHAED25519DalekDigitalSignatureResult
7
+ * @returns CASSHAED25519DalekDigitalSignatureResult
8
8
  */
9
- createED25519(dataToSign: number[]): SHAED25519DalekDigitalSignatureResult;
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 RsaDigitalSignatureResult
22
+ * @returns CASRSADigitalSignatureResult
23
23
  */
24
- createRsa(rsa_key_size: number, data_to_sign: number[]): RsaDigitalSignatureResult;
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 SHAED25519DalekDigitalSignatureResult
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 RsaDigitalSignatureResult
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 { RSADigitalSignatureResult, SHAED25519DalekDigitalSignatureResult } from "../../index";
1
+ import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
2
2
  export interface IDigitalSignature {
3
- createRsa(rsa_key_size: number, data_to_sign: Array<number>): RSADigitalSignatureResult;
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>): SHAED25519DalekDigitalSignatureResult;
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 { RsaDigitalSignatureResult, Shaed25519DalekDigitalSignatureResult } from "../../index";
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[]): Shaed25519DalekDigitalSignatureResult;
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[]): RsaDigitalSignatureResult;
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
- export { DigitalSignatureFactory, DigitalSignatureSHA256Wrapper, DigitalSignatureSHA512Wrapper, DigitalSignatureType };
5
+ import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
6
+ export { DigitalSignatureFactory, DigitalSignatureSHA256Wrapper, DigitalSignatureSHA512Wrapper, DigitalSignatureType, CASSHAED25519DalekDigitalSignatureResult, CASRSADigitalSignatureResult };
@@ -1,9 +1,9 @@
1
- import { RsaKeyPairResult } from "../../..";
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: RsaKeyPairResult;
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
- import { Argon2Wrapper, BCryptWrapper, PasswordHasherFactory, PasswordHasherType, ScryptWrapper } from "./password-hashers/index";
2
- import { HasherFactory, HasherType, SHAWrapper } from "./hashers/index";
3
- import { X25519Wrapper } from "./key_exchange/index";
4
- import { AESWrapper } from "./symmetric/index";
5
- import { RsaKeyPairResult, RSAWrapper } from "./asymmetric/index";
6
- import { AesRsaHybridEncryptResult, AESRSAHybridInitializer, HybridEncryptionWrapper } from "./hybrid/index";
7
- import { DigitalSignatureFactory, DigitalSignatureSHA256Wrapper, DigitalSignatureSHA512Wrapper, DigitalSignatureType } from "./digital-signature";
8
- import { AsconWrapper } from "./sponges/index";
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
- exports.X25519Wrapper = exports.SHAWrapper = exports.ScryptWrapper = exports.RSAWrapper = exports.RsaKeyPairResult = exports.PasswordHasherType = exports.PasswordHasherFactory = exports.HybridEncryptionWrapper = exports.HasherType = exports.HasherFactory = exports.DigitalSignatureType = exports.DigitalSignatureSHA512Wrapper = exports.DigitalSignatureSHA256Wrapper = exports.DigitalSignatureFactory = exports.BCryptWrapper = exports.AsconWrapper = exports.Argon2Wrapper = exports.AESWrapper = exports.AESRSAHybridInitializer = exports.AesRsaHybridEncryptResult = void 0;
4
- const index_1 = require("./password-hashers/index");
5
- Object.defineProperty(exports, "Argon2Wrapper", { enumerable: true, get: function () { return index_1.Argon2Wrapper; } });
6
- Object.defineProperty(exports, "BCryptWrapper", { enumerable: true, get: function () { return index_1.BCryptWrapper; } });
7
- Object.defineProperty(exports, "PasswordHasherFactory", { enumerable: true, get: function () { return index_1.PasswordHasherFactory; } });
8
- Object.defineProperty(exports, "PasswordHasherType", { enumerable: true, get: function () { return index_1.PasswordHasherType; } });
9
- Object.defineProperty(exports, "ScryptWrapper", { enumerable: true, get: function () { return index_1.ScryptWrapper; } });
10
- const index_2 = require("./hashers/index");
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,2 +1,3 @@
1
+ import { CASx25519SecretPublicKeyResult } from "../../index";
1
2
  import { X25519Wrapper } from "./x25519";
2
- export { X25519Wrapper };
3
+ export { X25519Wrapper, CASx25519SecretPublicKeyResult };
@@ -1,11 +1,11 @@
1
- import { X25519SecretPublicKeyResult } from "../../index";
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(): X25519SecretPublicKeyResult;
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 { AesKeyFromX25519SharedSecret } from "../../index";
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>): AesKeyFromX25519SharedSecret;
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>): AesKeyFromX25519SharedSecret;
61
+ aes128KeyNonceX25519DiffieHellman(shared_secret: Array<number>): CASAesKeyFromX25519SharedSecret;
62
62
  }
@@ -1,2 +1,3 @@
1
+ import { CASAesKeyFromX25519SharedSecret } from "../../index";
1
2
  import { AESWrapper } from "./aes-wrapper";
2
- export { AESWrapper };
3
+ export { AESWrapper, CASAesKeyFromX25519SharedSecret };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  {
3
3
  "name": "cas-typescript-sdk",
4
- "version": "1.0.23",
4
+ "version": "1.0.24",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -1,70 +1,24 @@
1
+ use cas_lib::asymmetric::{cas_asymmetric_encryption::{CASRSAEncryption, RSAKeyPairResult}, cas_rsa::CASRSA};
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
- use super::cas_asymmetric_encryption::{CASRSAEncryption, RSAKeyPairResult};
10
- pub struct CASRSA;
11
-
12
- impl CASRSAEncryption for CASRSA {
13
- fn generate_rsa_keys(key_size: u32) -> RSAKeyPairResult {
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
- fn verify(public_key: String, hash: Vec<u8>, signature: Vec<u8>) -> bool {
55
- let public_key = RsaPublicKey::from_pkcs1_pem(&public_key).unwrap();
56
- let verified = public_key.verify(Pkcs1v15Sign::new_unprefixed(), &hash, &signature);
57
- if verified.is_err() == false {
58
- return true;
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) -> RSAKeyPairResult {
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).into();
68
22
  }
69
23
 
70
24
  #[napi]
@@ -1,47 +1,11 @@
1
- use ed25519_dalek::{Keypair, Signature, Signer, Verifier};
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::cas_digital_signature_rsa::{
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>) -> SHAED25519DalekDigitalSignatureResult {
44
- return SHA256ED25519DigitalSignature::digital_signature_ed25519(data_to_sign);
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: SHAED25519DalekDigitalSignatureResult = SHA256ED25519DigitalSignature::digital_signature_ed25519(data_to_sign.clone());
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: SHAED25519DalekDigitalSignatureResult = SHA256ED25519DigitalSignature::digital_signature_ed25519(data_to_sign.clone());
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);