Skip to content

Commit ed1e0c2

Browse files
authored
Merge pull request #32 from Cryptographic-API-Services/pre-release
Pre release
2 parents dd04911 + 1543f8f commit ed1e0c2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+229
-838
lines changed

Cargo.toml

+3-17
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,13 @@ path = "src/lib.rs"
88
crate-type = ["cdylib"]
99

1010
[dependencies]
11-
aes-gcm = "0.10.3"
12-
argon2 = "0.5.2"
13-
bcrypt = "0.15.0"
14-
blake2 = "0.10.6"
1511
napi = "2"
1612
napi-derive = "2"
1713
rand = "0.8.5"
1814
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"
2515
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"
3218

3319
[build-dependencies]
34-
napi-build = "1"
20+
napi-build = "1"

index.d.ts

+22-21
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export function sha512(dataToHash: Array<number>): Array<number>
1919
export function sha512Verify(dataToHash: Array<number>, dataToVerify: Array<number>): boolean
2020
export function sha256(dataToHash: Array<number>): Array<number>
2121
export function sha256Verify(dataToHash: Array<number>, dataToVerify: Array<number>): boolean
22-
export function x25519GenerateSecretAndPublicKey(): X25519SecretPublicKeyResult
22+
export function x25519GenerateSecretAndPublicKey(): CASx25519SecretPublicKeyResult
2323
export function x25519DiffieHellman(mySecretKey: Array<number>, usersPublicKey: Array<number>): Array<number>
2424
export function aesNonce(): Array<number>
2525
export function aes128Key(): Array<number>
@@ -28,52 +28,53 @@ export function aes128Encrypt(aesKey: Array<number>, nonce: Array<number>, plain
2828
export function aes128Decrypt(aesKey: Array<number>, nonce: Array<number>, ciphertext: Array<number>): Array<number>
2929
export function aes256Encrypt(aesKey: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>
3030
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
3434
export function encryptPlaintextRsa(publicKey: string, plaintext: Array<number>): Array<number>
3535
export function decryptCiphertextRsa(privateKey: string, ciphertext: Array<number>): Array<number>
3636
export function signRsa(privateKey: string, hash: Array<number>): Array<number>
3737
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
3939
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
4141
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
4343
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
4545
export function sha256Ed25519DigitalSignatureVerify(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean
4646
export function ascon128KeyGenerate(): Array<number>
4747
export function ascon128NonceGenerate(): Array<number>
4848
export function ascon128Encrypt(key: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>
4949
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 {
5252
publicKey: Array<number>
5353
secretKey: Array<number>
5454
constructor(publicKey: Array<number>, secretKey: Array<number>)
5555
}
56-
export class AesKeyFromX25519SharedSecret {
56+
export type CASAesKeyFromX25519SharedSecret = CasAesKeyFromX25519SharedSecret
57+
export class CasAesKeyFromX25519SharedSecret {
5758
aesKey: Array<number>
5859
aesNonce: Array<number>
5960
constructor(aesKey: Array<number>, aesNonce: Array<number>)
6061
}
61-
export type RSAKeyPairResult = RsaKeyPairResult
62-
export class RsaKeyPairResult {
62+
export type CASRSAKeyPairResult = CasrsaKeyPairResult
63+
export class CasrsaKeyPairResult {
6364
privateKey: string
6465
publicKey: string
6566
constructor(privateKey: string, publicKey: string)
6667
}
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 {
6976
publicKey: string
7077
privateKey: string
7178
signature: Array<number>
7279
constructor(publicKey: string, privateKey: string, signature: Array<number>)
7380
}
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-
}

index.node

7 KB
Binary file not shown.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
{
33
"name": "cas-typescript-sdk",
4-
"version": "1.0.23",
4+
"version": "1.0.24",
55
"description": "",
66
"main": "lib/index.js",
77
"types": "lib/index.d.ts",

src-ts/asymmetric/RSAWrapper.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { decryptCiphertextRsa, encryptPlaintextRsa, generateRsaKeys, RsaKeyPairResult, signRsa, verifyRsa } from "../../index";
1+
import { CASRSAKeyPairResult, decryptCiphertextRsa, encryptPlaintextRsa, generateRsaKeys, signRsa, verifyRsa } from "../../index";
22

33
export class RSAWrapper {
44

55
/**
66
* Generates an RSA key pair based of parameter sent in 1024, 2048, and 4096 are supported.
77
* @param keySize
8-
* @returns RsaKeyPairResult
8+
* @returns CASRSAKeyPairResult
99
*/
10-
public generateKeys(keySize: number): RsaKeyPairResult {
10+
public generateKeys(keySize: number): CASRSAKeyPairResult {
1111
if (keySize !== 1024 && keySize !== 2048 && keySize !== 4096) {
1212
throw new Error("You must provide an appropriate key size to generate RSA keys");
1313
}

src-ts/asymmetric/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { RSAWrapper } from "./RSAWrapper";
2-
import { RsaKeyPairResult } from "../../index";
2+
import { CASRSAKeyPairResult } from "../../index";
33

4-
export { RSAWrapper, RsaKeyPairResult };
4+
export { RSAWrapper, CASRSAKeyPairResult };

src-ts/digital-signature/digital-siganture-sha-512.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { RsaDigitalSignatureResult, SHAED25519DalekDigitalSignatureResult, sha512Ed25519DigitalSignature, sha512Ed25519DigitalSignatureVerify, sha512RsaDigitalSignature, sha512RsaVerifyDigitalSignature } from "../../index";
1+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult, sha512Ed25519DigitalSignature, sha512Ed25519DigitalSignatureVerify, sha512RsaDigitalSignature, sha512RsaVerifyDigitalSignature } from "../../index";
22
import { IDigitalSignature } from "./digital-signature-base";
33

44
export class DigitalSignatureSHA512Wrapper implements IDigitalSignature {
55

66
/**
77
* Creates an ED25519 siganture from an array of bytes with SHA3-512.
88
* @param dataToSign
9-
* @returns SHAED25519DalekDigitalSignatureResult
9+
* @returns CASSHAED25519DalekDigitalSignatureResult
1010
*/
11-
createED25519(dataToSign: number[]): SHAED25519DalekDigitalSignatureResult {
11+
createED25519(dataToSign: number[]): CASSHAED25519DalekDigitalSignatureResult {
1212
if (dataToSign?.length === 0) {
1313
throw new Error("Must provide allocated data to sign");
1414
}
@@ -39,9 +39,9 @@ export class DigitalSignatureSHA512Wrapper implements IDigitalSignature {
3939
* Generates and RSA digital signature with SHA3-512
4040
* @param rsa_key_size
4141
* @param data_to_sign
42-
* @returns RsaDigitalSignatureResult
42+
* @returns CASRSADigitalSignatureResult
4343
*/
44-
createRsa(rsa_key_size: number, data_to_sign: number[]): RsaDigitalSignatureResult {
44+
createRsa(rsa_key_size: number, data_to_sign: number[]): CASRSADigitalSignatureResult {
4545
if (rsa_key_size !== 1024 && rsa_key_size !== 2048 && rsa_key_size !== 4096) {
4646
throw new Error("You need to provide an appropriate RSA key size.");
4747
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RSADigitalSignatureResult, SHAED25519DalekDigitalSignatureResult } from "../../index";
1+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
22

33
export interface IDigitalSignature {
4-
createRsa(rsa_key_size: number, data_to_sign: Array<number>): RSADigitalSignatureResult;
4+
createRsa(rsa_key_size: number, data_to_sign: Array<number>): CASRSADigitalSignatureResult;
55
verifyRSa(public_key: string, data_to_verify: Array<number>, signature: Array<number>): boolean;
6-
createED25519(dataToSign: Array<number>): SHAED25519DalekDigitalSignatureResult;
6+
createED25519(dataToSign: Array<number>): CASSHAED25519DalekDigitalSignatureResult;
77
verifyED25519(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean;
88
}

src-ts/digital-signature/digital-signaturte-sha-256.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RsaDigitalSignatureResult, SHAED25519DalekDigitalSignatureResult, Shaed25519DalekDigitalSignatureResult, sha256Ed25519DigitalSignature, sha256Ed25519DigitalSignatureVerify, sha256RsaDigitalSignature, sha256RsaVerifyDigitalSignature, sha512Ed25519DigitalSignature } from "../../index";
1+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult, sha256Ed25519DigitalSignature, sha256Ed25519DigitalSignatureVerify, sha256RsaDigitalSignature, sha256RsaVerifyDigitalSignature, sha512Ed25519DigitalSignature } from "../../index";
22
import { IDigitalSignature } from "./digital-signature-base";
33

44
export class DigitalSignatureSHA256Wrapper implements IDigitalSignature {
@@ -8,7 +8,7 @@ export class DigitalSignatureSHA256Wrapper implements IDigitalSignature {
88
* @param dataToSign
99
* @returns SHAED25519DalekDigitalSignatureResult
1010
*/
11-
createED25519(dataToSign: number[]): Shaed25519DalekDigitalSignatureResult {
11+
createED25519(dataToSign: number[]): CASSHAED25519DalekDigitalSignatureResult {
1212
if (dataToSign?.length === 0) {
1313
throw new Error("Must provide allocated data to sign");
1414
}
@@ -41,7 +41,7 @@ export class DigitalSignatureSHA256Wrapper implements IDigitalSignature {
4141
* @param data_to_sign
4242
* @returns RsaDigitalSignatureResult
4343
*/
44-
createRsa(rsa_key_size: number, data_to_sign: number[]): RsaDigitalSignatureResult {
44+
createRsa(rsa_key_size: number, data_to_sign: number[]): CASRSADigitalSignatureResult {
4545
if (rsa_key_size !== 1024 && rsa_key_size !== 2048 && rsa_key_size !== 4096) {
4646
throw new Error("You need to provide an appropriate RSA key size.");
4747
}

src-ts/digital-signature/index.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ import { DigitalSignatureType } from "./digital-signature-factory";
22
import { DigitalSignatureFactory } from "./digital-signature-factory";
33
import { DigitalSignatureSHA256Wrapper } from "./digital-signaturte-sha-256";
44
import { DigitalSignatureSHA512Wrapper } from "./digital-siganture-sha-512";
5+
import { CASRSADigitalSignatureResult, CASSHAED25519DalekDigitalSignatureResult } from "../../index";
56

67
export {
78
DigitalSignatureFactory,
89
DigitalSignatureSHA256Wrapper,
910
DigitalSignatureSHA512Wrapper,
10-
DigitalSignatureType
11+
DigitalSignatureType,
12+
CASSHAED25519DalekDigitalSignatureResult,
13+
CASRSADigitalSignatureResult
1114
};

src-ts/hybrid/types/aes-rsa-hybrid-initializer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { RsaKeyPairResult } from "../../..";
1+
import { CASRSAKeyPairResult } from "../../..";
22
import { RSAWrapper } from "../../asymmetric";
33
import { AESWrapper } from "../../symmetric";
44

55
export class AESRSAHybridInitializer {
66
public aesType: number;
77
public aesKey: Array<number>;
88
public aesNonce: Array<number>;
9-
public rsaKeyPair: RsaKeyPairResult;
9+
public rsaKeyPair: CASRSAKeyPairResult;
1010

1111
/**
1212
* 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.

src-ts/index.ts

+8-46
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,8 @@
1-
import {
2-
Argon2Wrapper,
3-
BCryptWrapper,
4-
PasswordHasherFactory,
5-
PasswordHasherType,
6-
ScryptWrapper,
7-
} from "./password-hashers/index";
8-
import { HasherFactory, HasherType, SHAWrapper } from "./hashers/index";
9-
import { X25519Wrapper } from "./key_exchange/index";
10-
import { AESWrapper } from "./symmetric/index";
11-
import { RsaKeyPairResult, RSAWrapper } from "./asymmetric/index";
12-
import {
13-
AesRsaHybridEncryptResult,
14-
AESRSAHybridInitializer,
15-
HybridEncryptionWrapper,
16-
} from "./hybrid/index";
17-
import {
18-
DigitalSignatureFactory,
19-
DigitalSignatureSHA256Wrapper,
20-
DigitalSignatureSHA512Wrapper,
21-
DigitalSignatureType,
22-
} from "./digital-signature";
23-
import { AsconWrapper } from "./sponges/index";
24-
25-
export {
26-
AesRsaHybridEncryptResult,
27-
AESRSAHybridInitializer,
28-
AESWrapper,
29-
Argon2Wrapper,
30-
AsconWrapper,
31-
BCryptWrapper,
32-
DigitalSignatureFactory,
33-
DigitalSignatureSHA256Wrapper,
34-
DigitalSignatureSHA512Wrapper,
35-
DigitalSignatureType,
36-
HasherFactory,
37-
HasherType,
38-
HybridEncryptionWrapper,
39-
PasswordHasherFactory,
40-
PasswordHasherType,
41-
RsaKeyPairResult,
42-
RSAWrapper,
43-
ScryptWrapper,
44-
SHAWrapper,
45-
X25519Wrapper,
46-
};
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";

src-ts/key_exchange/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { CASx25519SecretPublicKeyResult } from "../../index";
12
import { X25519Wrapper } from "./x25519";
23

3-
export { X25519Wrapper };
4+
export { X25519Wrapper, CASx25519SecretPublicKeyResult };

src-ts/key_exchange/x25519.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { x25519DiffieHellman, x25519GenerateSecretAndPublicKey, X25519SecretPublicKeyResult } from "../../index"
1+
import { CASx25519SecretPublicKeyResult, x25519DiffieHellman, x25519GenerateSecretAndPublicKey } from "../../index"
22

33
export class X25519Wrapper {
44
/**
55
* Generates and secret and public key to be used to create a shared secret with Diffie Hellman.
66
* 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.
77
* @returns X25519SecretPublicKeyResult
88
*/
9-
public generateSecretAndPublicKey(): X25519SecretPublicKeyResult {
9+
public generateSecretAndPublicKey(): CASx25519SecretPublicKeyResult {
1010
return x25519GenerateSecretAndPublicKey();
1111
}
1212

src-ts/symmetric/aes-wrapper.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
AesKeyFromX25519SharedSecret,
2+
CASAesKeyFromX25519SharedSecret,
33
aes128Decrypt,
44
aes128Encrypt,
55
aes128Key,
@@ -87,7 +87,7 @@ export class AESWrapper {
8787
* @param shared_secret
8888
* @returns
8989
*/
90-
public aes256KeyNonceX25519DiffieHellman(shared_secret: Array<number>): AesKeyFromX25519SharedSecret {
90+
public aes256KeyNonceX25519DiffieHellman(shared_secret: Array<number>): CASAesKeyFromX25519SharedSecret {
9191
return aes256KeyFromX25519SharedSecret(shared_secret);
9292
}
9393

@@ -96,7 +96,7 @@ export class AESWrapper {
9696
* @param shared_secret
9797
* @returns
9898
*/
99-
public aes128KeyNonceX25519DiffieHellman(shared_secret: Array<number>): AesKeyFromX25519SharedSecret {
99+
public aes128KeyNonceX25519DiffieHellman(shared_secret: Array<number>): CASAesKeyFromX25519SharedSecret {
100100
return aes128KeyFromX25519SharedSecret(shared_secret);
101101
}
102102
}

src-ts/symmetric/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { CASAesKeyFromX25519SharedSecret } from "../../index";
12
import { AESWrapper } from "./aes-wrapper";
23

3-
export { AESWrapper };
4+
export { AESWrapper, CASAesKeyFromX25519SharedSecret };

src/asymmetric/cas_asymmetric_encryption.rs

-15
This file was deleted.

0 commit comments

Comments
 (0)