cas-typescript-sdk 1.0.16 → 1.0.18
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 +3 -1
- package/index.d.ts +9 -7
- package/index.node +0 -0
- package/lib/digital-signature/digital-siganture-sha-512.d.ts +4 -2
- package/lib/digital-signature/digital-siganture-sha-512.js +18 -0
- package/lib/digital-signature/digital-signature-base.d.ts +4 -2
- package/lib/digital-signature/digital-signaturte-sha-256.d.ts +4 -2
- package/lib/digital-signature/digital-signaturte-sha-256.js +18 -0
- package/lib/digital-signature/index.d.ts +5 -4
- package/lib/digital-signature/index.js +9 -6
- package/lib/hashers/hasher-base.d.ts +4 -4
- package/lib/hashers/sha-wrapper.d.ts +4 -4
- package/lib/hashers/sha-wrapper.js +4 -4
- package/lib/hybrid/types/aes-rsa-hybrid-initializer.js +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -1
- package/lib/key_exchange/x25519.d.ts +1 -1
- package/lib/key_exchange/x25519.js +1 -1
- package/lib/password-hashers/argon2-wrapper.d.ts +1 -1
- package/lib/password-hashers/argon2-wrapper.js +1 -1
- package/lib/password-hashers/bcrypt-wrapper.d.ts +1 -1
- package/lib/password-hashers/bcrypt-wrapper.js +1 -1
- package/lib/password-hashers/password-hasher-base.d.ts +1 -1
- package/lib/password-hashers/scrypt-wrapper.d.ts +1 -1
- package/lib/password-hashers/scrypt-wrapper.js +1 -1
- package/lib/symmetric/aes-wrapper.d.ts +3 -3
- package/lib/symmetric/aes-wrapper.js +3 -3
- package/package.json +1 -1
- package/src/digital_signature/cas_digital_signature_rsa.rs +6 -6
- package/src/digital_signature/sha_256_ed25519.rs +69 -0
- package/src/digital_signature/sha_256_rsa.rs +7 -7
- package/src/digital_signature/sha_512_ed25519.rs +7 -7
- package/src/digital_signature/sha_512_rsa.rs +7 -7
- package/src/lib.rs +1 -0
- package/src-ts/digital-signature/digital-siganture-sha-512.ts +22 -2
- package/src-ts/digital-signature/digital-signature-base.ts +4 -2
- package/src-ts/digital-signature/digital-signaturte-sha-256.ts +22 -2
- package/src-ts/digital-signature/index.ts +11 -4
- package/src-ts/hashers/hasher-base.ts +4 -4
- package/src-ts/hashers/sha-wrapper.ts +4 -4
- package/src-ts/hybrid/types/aes-rsa-hybrid-initializer.ts +1 -1
- package/src-ts/index.ts +10 -0
- package/src-ts/key_exchange/x25519.ts +1 -1
- package/src-ts/password-hashers/argon2-wrapper.ts +1 -1
- package/src-ts/password-hashers/bcrypt-wrapper.ts +1 -1
- package/src-ts/password-hashers/password-hasher-base.ts +1 -1
- package/src-ts/password-hashers/scrypt-wrapper.ts +1 -1
- package/src-ts/symmetric/aes-wrapper.ts +3 -3
- package/test-ts/digital-signature.test.spec.ts +49 -5
- package/test-ts/hasher.test.spec.ts +10 -10
- package/test-ts/insecure-channel.test.spec.ts +8 -8
- package/test-ts/key-exchange-test.spec.ts +2 -2
- package/test-ts/password-hasher-test.spec.ts +6 -6
- package/test-ts/symmetric.test.spec.ts +2 -2
- package/src-ts/global.d.ts +0 -2
|
@@ -6,14 +6,14 @@ use rsa::{
|
|
|
6
6
|
Pkcs1v15Sign, RsaPrivateKey, RsaPublicKey,
|
|
7
7
|
};
|
|
8
8
|
use sha3::{Digest, Sha3_512};
|
|
9
|
-
use super::cas_digital_signature_rsa::{
|
|
9
|
+
use super::cas_digital_signature_rsa::{RSADigitalSignatureResult, RSADigitalSignature};
|
|
10
10
|
pub struct SHA512RSADigitalSignature;
|
|
11
11
|
|
|
12
|
-
impl
|
|
12
|
+
impl RSADigitalSignature for SHA512RSADigitalSignature {
|
|
13
13
|
fn digital_signature_rsa(
|
|
14
14
|
rsa_key_size: u32,
|
|
15
15
|
data_to_sign: Vec<u8>,
|
|
16
|
-
) ->
|
|
16
|
+
) -> RSADigitalSignatureResult {
|
|
17
17
|
let mut hasher = Sha3_512::new();
|
|
18
18
|
hasher.update(data_to_sign);
|
|
19
19
|
let sha_hasher_result = hasher.finalize();
|
|
@@ -24,7 +24,7 @@ impl CASRSADigitalSignature for SHA512RSADigitalSignature {
|
|
|
24
24
|
let mut signed_data = private_key
|
|
25
25
|
.sign(Pkcs1v15Sign::new_unprefixed(), &sha_hasher_result)
|
|
26
26
|
.unwrap();
|
|
27
|
-
let result =
|
|
27
|
+
let result = RSADigitalSignatureResult {
|
|
28
28
|
private_key: private_key
|
|
29
29
|
.to_pkcs8_pem(rsa::pkcs8::LineEnding::LF)
|
|
30
30
|
.unwrap()
|
|
@@ -60,7 +60,7 @@ impl CASRSADigitalSignature for SHA512RSADigitalSignature {
|
|
|
60
60
|
pub fn sha_512_rsa_digital_signature(
|
|
61
61
|
rsa_key_size: u32,
|
|
62
62
|
data_to_sign: Vec<u8>,
|
|
63
|
-
) ->
|
|
63
|
+
) -> RSADigitalSignatureResult {
|
|
64
64
|
return SHA512RSADigitalSignature::digital_signature_rsa(rsa_key_size, data_to_sign);
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -77,7 +77,7 @@ pub fn sha_512_rsa_verify_digital_signature(
|
|
|
77
77
|
fn sha_512_rsa_digital_signature_test() {
|
|
78
78
|
let key_size: u32 = 1024;
|
|
79
79
|
let data_to_sign = b"GetTheseBytes".to_vec();
|
|
80
|
-
let signature_result:
|
|
80
|
+
let signature_result: RSADigitalSignatureResult = SHA512RSADigitalSignature::digital_signature_rsa(key_size, data_to_sign.clone());
|
|
81
81
|
let is_verified: bool = SHA512RSADigitalSignature::verify_rsa(signature_result.public_key, data_to_sign, signature_result.signature);
|
|
82
82
|
assert_eq!(is_verified, true);
|
|
83
83
|
}
|
|
@@ -86,7 +86,7 @@ fn sha_512_rsa_digital_signature_test() {
|
|
|
86
86
|
fn sha_512_rsa_digital_signature_fail_test() {
|
|
87
87
|
let key_size: u32 = 1024;
|
|
88
88
|
let data_to_sign = b"GetTheseBytes".to_vec();
|
|
89
|
-
let signature_result:
|
|
89
|
+
let signature_result: RSADigitalSignatureResult = SHA512RSADigitalSignature::digital_signature_rsa(key_size, data_to_sign.clone());
|
|
90
90
|
let new_data = b"NOtTheOriginalData".to_vec();
|
|
91
91
|
let is_verified: bool = SHA512RSADigitalSignature::verify_rsa(signature_result.public_key, new_data, signature_result.signature);
|
|
92
92
|
assert_eq!(is_verified, false);
|
package/src/lib.rs
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RsaDigitalSignatureResult, SHAED25519DalekDigitalSignatureResult, sha512Ed25519DigitalSignature, sha512Ed25519DigitalSignatureVerify, sha512RsaDigitalSignature, sha512RsaVerifyDigitalSignature } from "../../index";
|
|
2
2
|
import { IDigitalSignature } from "./digital-signature-base";
|
|
3
3
|
|
|
4
4
|
export class DigitalSignatureSHA512Wrapper implements IDigitalSignature {
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
createED25519(dataToSign: number[]): SHAED25519DalekDigitalSignatureResult {
|
|
7
|
+
if (dataToSign?.length === 0) {
|
|
8
|
+
throw new Error("Must provide allocated data to sign");
|
|
9
|
+
}
|
|
10
|
+
return sha512Ed25519DigitalSignature(dataToSign);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
verifyED25519(publicKey: number[], dataToVerify: number[], signature: number[]): boolean {
|
|
14
|
+
if (!publicKey) {
|
|
15
|
+
throw new Error("You must provide a public key for verify with ED25519");
|
|
16
|
+
}
|
|
17
|
+
if (dataToVerify?.length === 0) {
|
|
18
|
+
throw new Error("Must provide allocated data to verify");
|
|
19
|
+
}
|
|
20
|
+
if (signature?.length === 0) {
|
|
21
|
+
throw new Error("Must provide allocated signature to verify");
|
|
22
|
+
}
|
|
23
|
+
return sha512Ed25519DigitalSignatureVerify(publicKey, dataToVerify, signature);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
createRsa(rsa_key_size: number, data_to_sign: number[]): RsaDigitalSignatureResult {
|
|
7
27
|
if (rsa_key_size !== 1024 && rsa_key_size !== 2048 && rsa_key_size !== 4096) {
|
|
8
28
|
throw new Error("You need to provide an appropriate RSA key size.");
|
|
9
29
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RSADigitalSignatureResult, SHAED25519DalekDigitalSignatureResult } from "../../index";
|
|
2
2
|
|
|
3
3
|
export interface IDigitalSignature {
|
|
4
|
-
createRsa(rsa_key_size: number, data_to_sign: Array<number>):
|
|
4
|
+
createRsa(rsa_key_size: number, data_to_sign: Array<number>): RSADigitalSignatureResult;
|
|
5
5
|
verifyRSa(public_key: string, data_to_verify: Array<number>, signature: Array<number>): boolean;
|
|
6
|
+
createED25519(dataToSign: Array<number>): SHAED25519DalekDigitalSignatureResult;
|
|
7
|
+
verifyED25519(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean;
|
|
6
8
|
}
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RsaDigitalSignatureResult, SHAED25519DalekDigitalSignatureResult, Shaed25519DalekDigitalSignatureResult, sha256Ed25519DigitalSignature, sha256Ed25519DigitalSignatureVerify, sha256RsaDigitalSignature, sha256RsaVerifyDigitalSignature, sha512Ed25519DigitalSignature } from "../../index";
|
|
2
2
|
import { IDigitalSignature } from "./digital-signature-base";
|
|
3
3
|
|
|
4
4
|
export class DigitalSignatureSHA256Wrapper implements IDigitalSignature {
|
|
5
|
+
|
|
6
|
+
createED25519(dataToSign: number[]): Shaed25519DalekDigitalSignatureResult {
|
|
7
|
+
if (dataToSign?.length === 0) {
|
|
8
|
+
throw new Error("Must provide allocated data to sign");
|
|
9
|
+
}
|
|
10
|
+
return sha256Ed25519DigitalSignature(dataToSign);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
verifyED25519(publicKey: number[], dataToVerify: number[], signature: number[]): boolean {
|
|
14
|
+
if (!publicKey) {
|
|
15
|
+
throw new Error("You must provide a public key for verify with ED25519");
|
|
16
|
+
}
|
|
17
|
+
if (dataToVerify?.length === 0) {
|
|
18
|
+
throw new Error("Must provide allocated data to verify");
|
|
19
|
+
}
|
|
20
|
+
if (signature?.length === 0) {
|
|
21
|
+
throw new Error("Must provide allocated signature to verify");
|
|
22
|
+
}
|
|
23
|
+
return sha256Ed25519DigitalSignatureVerify(publicKey, dataToVerify, signature);
|
|
24
|
+
}
|
|
5
25
|
|
|
6
|
-
createRsa(rsa_key_size: number, data_to_sign: number[]):
|
|
26
|
+
createRsa(rsa_key_size: number, data_to_sign: number[]): RsaDigitalSignatureResult {
|
|
7
27
|
if (rsa_key_size !== 1024 && rsa_key_size !== 2048 && rsa_key_size !== 4096) {
|
|
8
28
|
throw new Error("You need to provide an appropriate RSA key size.");
|
|
9
29
|
}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
1
|
+
import { DigitalSignatureType } from "./digital-signature-factory";
|
|
2
|
+
import { DigitalSignatureFactory } from "./digital-signature-factory";
|
|
3
|
+
import { DigitalSignatureSHA256Wrapper } from "./digital-signaturte-sha-256";
|
|
4
|
+
import { DigitalSignatureSHA512Wrapper } from "./digital-siganture-sha-512";
|
|
5
|
+
|
|
6
|
+
export {
|
|
7
|
+
DigitalSignatureFactory,
|
|
8
|
+
DigitalSignatureSHA256Wrapper,
|
|
9
|
+
DigitalSignatureSHA512Wrapper,
|
|
10
|
+
DigitalSignatureType
|
|
11
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export interface IHasherBase {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
hash512(dataToHash: number[]): number[];
|
|
3
|
+
verify512(dataToHash: number[], dataToVerify: number[]): boolean;
|
|
4
|
+
hash256(dataToHash: number[]): number[];
|
|
5
|
+
verify256(dataToHash: number[], dataToVerify: number[]): boolean;
|
|
6
6
|
}
|
|
@@ -2,14 +2,14 @@ import { sha256, sha256Verify, sha512, sha512Verify } from "../../index";
|
|
|
2
2
|
import { IHasherBase } from "./hasher-base";
|
|
3
3
|
|
|
4
4
|
export class SHAWrapper implements IHasherBase {
|
|
5
|
-
|
|
5
|
+
hash512(dataToHash: number[]): number[] {
|
|
6
6
|
if (!dataToHash || dataToHash.length === 0) {
|
|
7
7
|
throw new Error("You must provide an allocated array of data");
|
|
8
8
|
}
|
|
9
9
|
return sha512(dataToHash);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
verify512(dataToHash: number[], dataToVerify: number[]): boolean {
|
|
13
13
|
if (!dataToHash || dataToHash.length === 0) {
|
|
14
14
|
throw new Error("You must provide an allocated array of data");
|
|
15
15
|
}
|
|
@@ -19,14 +19,14 @@ export class SHAWrapper implements IHasherBase {
|
|
|
19
19
|
return sha512Verify(dataToHash, dataToVerify);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
hash256(dataToHash: number[]): number[] {
|
|
23
23
|
if (!dataToHash || dataToHash.length === 0) {
|
|
24
24
|
throw new Error("You must provide an allocated array of data");
|
|
25
25
|
}
|
|
26
26
|
return sha256(dataToHash);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
verify256(dataToHash: number[], dataToVerify: number[]): boolean {
|
|
30
30
|
if (!dataToHash || dataToHash.length === 0) {
|
|
31
31
|
throw new Error("You must provide an allocated array of data");
|
|
32
32
|
}
|
|
@@ -15,7 +15,7 @@ export class AESRSAHybridInitializer {
|
|
|
15
15
|
this.aesType = aesType;
|
|
16
16
|
let aesWrapper = new AESWrapper();
|
|
17
17
|
this.aesKey = (aesType === 128) ? aesWrapper.aes128Key() : aesWrapper.aes256Key();
|
|
18
|
-
this.aesNonce = aesWrapper.
|
|
18
|
+
this.aesNonce = aesWrapper.generateAESNonce();
|
|
19
19
|
if (rsaSize !== 1028 && rsaSize !== 2048 && rsaSize !== 4096) {
|
|
20
20
|
throw new Error("You must provide an appropriate RSA Key pair size to generate a hybrid initalizer");
|
|
21
21
|
}
|
package/src-ts/index.ts
CHANGED
|
@@ -14,6 +14,12 @@ import {
|
|
|
14
14
|
AESRSAHybridInitializer,
|
|
15
15
|
HybridEncryptionWrapper,
|
|
16
16
|
} from "./hybrid/index";
|
|
17
|
+
import {
|
|
18
|
+
DigitalSignatureFactory,
|
|
19
|
+
DigitalSignatureSHA256Wrapper,
|
|
20
|
+
DigitalSignatureSHA512Wrapper,
|
|
21
|
+
DigitalSignatureType,
|
|
22
|
+
} from "./digital-signature";
|
|
17
23
|
|
|
18
24
|
export {
|
|
19
25
|
AesRsaHybridEncryptResult,
|
|
@@ -31,4 +37,8 @@ export {
|
|
|
31
37
|
ScryptWrapper,
|
|
32
38
|
SHAWrapper,
|
|
33
39
|
X25519Wrapper,
|
|
40
|
+
DigitalSignatureFactory,
|
|
41
|
+
DigitalSignatureSHA256Wrapper,
|
|
42
|
+
DigitalSignatureSHA512Wrapper,
|
|
43
|
+
DigitalSignatureType,
|
|
34
44
|
};
|
|
@@ -5,7 +5,7 @@ export class X25519Wrapper {
|
|
|
5
5
|
return x25519GenerateSecretAndPublicKey();
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
public
|
|
8
|
+
public generateSharedSecret(secretKey: Array<number>, publicKey: Array<number>) {
|
|
9
9
|
return x25519DiffieHellman(secretKey, publicKey);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -9,7 +9,7 @@ export class Argon2Wrapper implements IPasswordHasherBase {
|
|
|
9
9
|
return argon2Hash(password);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
public
|
|
12
|
+
public verify(hashedPassword: string, passwordToVerify: string): boolean {
|
|
13
13
|
if (!hashedPassword || !passwordToVerify) {
|
|
14
14
|
throw new Error("You must provide a hashed password and a plaintext password to verify with Argon2");
|
|
15
15
|
}
|
|
@@ -10,7 +10,7 @@ export class ScryptWrapper implements IPasswordHasherBase {
|
|
|
10
10
|
return scryptHash(password);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
public
|
|
13
|
+
public verify(hashedPassword: string, passwordToVerify: string): boolean {
|
|
14
14
|
if (!hashedPassword || !passwordToVerify) {
|
|
15
15
|
throw new Error("You must provide a hashed password and a plaintext password to verify with Scrypt");
|
|
16
16
|
}
|
|
@@ -20,7 +20,7 @@ export class AESWrapper {
|
|
|
20
20
|
return aes256Key();
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
public
|
|
23
|
+
public generateAESNonce(): Array<number> {
|
|
24
24
|
return aesNonce();
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -40,11 +40,11 @@ export class AESWrapper {
|
|
|
40
40
|
return aes256Decrypt(aesKey, nonce, ciphertext);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
public
|
|
43
|
+
public aes256KeyNonceX25519DiffieHellman(shared_secret: Array<number>): AesKeyFromX25519SharedSecret {
|
|
44
44
|
return aes256KeyFromX25519SharedSecret(shared_secret);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
public
|
|
47
|
+
public aes128KeyNonceX25519DiffieHellman(shared_secret: Array<number>): AesKeyFromX25519SharedSecret {
|
|
48
48
|
return aes128KeyFromX25519SharedSecret(shared_secret);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assert } from "chai";
|
|
2
2
|
import { DigitalSignatureFactory, DigitalSignatureType } from "../src-ts/digital-signature/digital-signature-factory";
|
|
3
|
-
import {
|
|
3
|
+
import { RSADigitalSignatureResult } from "../index";
|
|
4
4
|
|
|
5
5
|
describe("Digital Signature", () => {
|
|
6
6
|
it("SHA 512 RSA pass", () => {
|
|
@@ -8,7 +8,7 @@ describe("Digital Signature", () => {
|
|
|
8
8
|
const tohashed: string = "This is my array to encrypt";
|
|
9
9
|
const encoder = new TextEncoder();
|
|
10
10
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
11
|
-
const dsResult:
|
|
11
|
+
const dsResult: RSADigitalSignatureResult = shaDsWrapper.createRsa(2048, tohashBytes);
|
|
12
12
|
const verify = shaDsWrapper.verifyRSa(dsResult.publicKey, tohashBytes, dsResult.signature);
|
|
13
13
|
assert.equal(verify, true);
|
|
14
14
|
});
|
|
@@ -20,7 +20,7 @@ describe("Digital Signature", () => {
|
|
|
20
20
|
const encoder = new TextEncoder();
|
|
21
21
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
22
22
|
const badBytes: Array<number> = Array.from(encoder.encode(notOriginal));
|
|
23
|
-
const dsResult:
|
|
23
|
+
const dsResult: RSADigitalSignatureResult = shaDsWrapper.createRsa(4096, tohashBytes);
|
|
24
24
|
const verify = shaDsWrapper.verifyRSa(dsResult.publicKey, badBytes, dsResult.signature);
|
|
25
25
|
assert.equal(verify, false);
|
|
26
26
|
});
|
|
@@ -30,7 +30,7 @@ describe("Digital Signature", () => {
|
|
|
30
30
|
const tohashed: string = "This is my array to encrypt";
|
|
31
31
|
const encoder = new TextEncoder();
|
|
32
32
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
33
|
-
const dsResult:
|
|
33
|
+
const dsResult: RSADigitalSignatureResult = shaDsWrapper.createRsa(2048, tohashBytes);
|
|
34
34
|
const verify = shaDsWrapper.verifyRSa(dsResult.publicKey, tohashBytes, dsResult.signature);
|
|
35
35
|
assert.equal(verify, true);
|
|
36
36
|
});
|
|
@@ -42,8 +42,52 @@ describe("Digital Signature", () => {
|
|
|
42
42
|
const encoder = new TextEncoder();
|
|
43
43
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
44
44
|
const badBytes: Array<number> = Array.from(encoder.encode(notOriginal));
|
|
45
|
-
const dsResult:
|
|
45
|
+
const dsResult: RSADigitalSignatureResult = shaDsWrapper.createRsa(4096, tohashBytes);
|
|
46
46
|
const verify = shaDsWrapper.verifyRSa(dsResult.publicKey, badBytes, dsResult.signature);
|
|
47
47
|
assert.equal(verify, false);
|
|
48
48
|
});
|
|
49
|
+
|
|
50
|
+
it("SHA 512 ED25519 pass", () => {
|
|
51
|
+
const shaDsWrapper = DigitalSignatureFactory.get(DigitalSignatureType.SHA512)
|
|
52
|
+
const toHash: string = "This is my array to encrypt";
|
|
53
|
+
const encoder = new TextEncoder();
|
|
54
|
+
const toHashBytes: Array<number> = Array.from(encoder.encode(toHash));
|
|
55
|
+
const dsResult = shaDsWrapper.createED25519(toHashBytes);
|
|
56
|
+
const verify = shaDsWrapper.verifyED25519(dsResult.publicKey, toHashBytes, dsResult.signature);
|
|
57
|
+
assert.equal(verify, true);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("SHA 512 ED25519 fails", () => {
|
|
61
|
+
const shaDsWrapper = DigitalSignatureFactory.get(DigitalSignatureType.SHA512)
|
|
62
|
+
const toHash: string = "This is my array to encrypt";
|
|
63
|
+
const notOriginal: string = "This is not a fun time";
|
|
64
|
+
const encoder = new TextEncoder();
|
|
65
|
+
const toHashBytes: Array<number> = Array.from(encoder.encode(toHash));
|
|
66
|
+
const badBytes: Array<number> = Array.from(encoder.encode(notOriginal));
|
|
67
|
+
const dsResult = shaDsWrapper.createED25519(toHashBytes);
|
|
68
|
+
const verify = shaDsWrapper.verifyED25519(dsResult.publicKey, badBytes, dsResult.signature);
|
|
69
|
+
assert.equal(verify, false);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("SHA 256 ED25519 pass", () => {
|
|
73
|
+
const shaDsWrapper = DigitalSignatureFactory.get(DigitalSignatureType.SHA256)
|
|
74
|
+
const toHash: string = "This is my array to encrypt";
|
|
75
|
+
const encoder = new TextEncoder();
|
|
76
|
+
const toHashBytes: Array<number> = Array.from(encoder.encode(toHash));
|
|
77
|
+
const dsResult = shaDsWrapper.createED25519(toHashBytes);
|
|
78
|
+
const verify = shaDsWrapper.verifyED25519(dsResult.publicKey, toHashBytes, dsResult.signature);
|
|
79
|
+
assert.equal(verify, true);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("SHA 256 ED25519 fails", () => {
|
|
83
|
+
const shaDsWrapper = DigitalSignatureFactory.get(DigitalSignatureType.SHA256)
|
|
84
|
+
const toHash: string = "This is my array to encrypt";
|
|
85
|
+
const notOriginal: string = "This is not a fun time";
|
|
86
|
+
const encoder = new TextEncoder();
|
|
87
|
+
const toHashBytes: Array<number> = Array.from(encoder.encode(toHash));
|
|
88
|
+
const badBytes: Array<number> = Array.from(encoder.encode(notOriginal));
|
|
89
|
+
const dsResult = shaDsWrapper.createED25519(toHashBytes);
|
|
90
|
+
const verify = shaDsWrapper.verifyED25519(dsResult.publicKey, badBytes, dsResult.signature);
|
|
91
|
+
assert.equal(verify, false);
|
|
92
|
+
});
|
|
49
93
|
});
|
|
@@ -7,7 +7,7 @@ describe("SHA512 Tests", () => {
|
|
|
7
7
|
const tohashed: string = "This is my array to hash";
|
|
8
8
|
const encoder = new TextEncoder();
|
|
9
9
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
10
|
-
const hashed = wrapper.
|
|
10
|
+
const hashed = wrapper.hash512(tohashBytes);
|
|
11
11
|
assert.notEqual(tohashBytes, hashed);
|
|
12
12
|
});
|
|
13
13
|
|
|
@@ -16,9 +16,9 @@ describe("SHA512 Tests", () => {
|
|
|
16
16
|
const tohashed: string = "This is my array to hash";
|
|
17
17
|
const encoder = new TextEncoder();
|
|
18
18
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
19
|
-
const hashed = wrapper.
|
|
19
|
+
const hashed = wrapper.hash512(tohashBytes);
|
|
20
20
|
const toVerifyBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
21
|
-
const verified = wrapper.
|
|
21
|
+
const verified = wrapper.verify512(hashed, toVerifyBytes);
|
|
22
22
|
assert.equal(true, verified);
|
|
23
23
|
});
|
|
24
24
|
|
|
@@ -27,10 +27,10 @@ describe("SHA512 Tests", () => {
|
|
|
27
27
|
const tohashed: string = "This is my array to hash";
|
|
28
28
|
const encoder = new TextEncoder();
|
|
29
29
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
30
|
-
const hashed = wrapper.
|
|
30
|
+
const hashed = wrapper.hash512(tohashBytes);
|
|
31
31
|
const toVerify = "This Is Not The Same";
|
|
32
32
|
const toVerifyBytes: Array<number> = Array.from(encoder.encode(toVerify));
|
|
33
|
-
const verified = wrapper.
|
|
33
|
+
const verified = wrapper.verify512(hashed, toVerifyBytes);
|
|
34
34
|
assert.equal(false, verified);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
@@ -42,7 +42,7 @@ describe("SHA256 Tests", () => {
|
|
|
42
42
|
const tohashed: string = "This is my array to hash";
|
|
43
43
|
const encoder = new TextEncoder();
|
|
44
44
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
45
|
-
const hashed = wrapper.
|
|
45
|
+
const hashed = wrapper.hash256(tohashBytes);
|
|
46
46
|
assert.notEqual(tohashBytes, hashed);
|
|
47
47
|
});
|
|
48
48
|
|
|
@@ -51,9 +51,9 @@ describe("SHA256 Tests", () => {
|
|
|
51
51
|
const tohashed: string = "This is my array to hash";
|
|
52
52
|
const encoder = new TextEncoder();
|
|
53
53
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
54
|
-
const hashed = wrapper.
|
|
54
|
+
const hashed = wrapper.hash256(tohashBytes);
|
|
55
55
|
const toVerifyBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
56
|
-
const verified = wrapper.
|
|
56
|
+
const verified = wrapper.verify256(hashed, toVerifyBytes);
|
|
57
57
|
assert.equal(true, verified);
|
|
58
58
|
});
|
|
59
59
|
|
|
@@ -62,10 +62,10 @@ describe("SHA256 Tests", () => {
|
|
|
62
62
|
const tohashed: string = "This is my array to hash";
|
|
63
63
|
const encoder = new TextEncoder();
|
|
64
64
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
65
|
-
const hashed = wrapper.
|
|
65
|
+
const hashed = wrapper.hash256(tohashBytes);
|
|
66
66
|
const toVerify = "This Is Not The Same";
|
|
67
67
|
const toVerifyBytes: Array<number> = Array.from(encoder.encode(toVerify));
|
|
68
|
-
const verified = wrapper.
|
|
68
|
+
const verified = wrapper.verify256(hashed, toVerifyBytes);
|
|
69
69
|
assert.equal(false, verified);
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -11,11 +11,11 @@ describe("Insecure Channel Tests", () => {
|
|
|
11
11
|
const alice_keys: X25519SecretPublicKeyResult = x25519Wrapper.generateSecretAndPublicKey();
|
|
12
12
|
const bob_keys: X25519SecretPublicKeyResult = x25519Wrapper.generateSecretAndPublicKey();
|
|
13
13
|
|
|
14
|
-
const alice_shared_secret = x25519Wrapper.
|
|
15
|
-
const bob_shared_secret = x25519Wrapper.
|
|
14
|
+
const alice_shared_secret = x25519Wrapper.generateSharedSecret(alice_keys.secretKey, bob_keys.publicKey);
|
|
15
|
+
const bob_shared_secret = x25519Wrapper.generateSharedSecret(bob_keys.secretKey, alice_keys.publicKey);
|
|
16
16
|
|
|
17
|
-
const alice_aes_key = aesWrapper.
|
|
18
|
-
const bob_aes_key = aesWrapper.
|
|
17
|
+
const alice_aes_key = aesWrapper.aes256KeyNonceX25519DiffieHellman(alice_shared_secret);
|
|
18
|
+
const bob_aes_key = aesWrapper.aes256KeyNonceX25519DiffieHellman(bob_shared_secret);
|
|
19
19
|
|
|
20
20
|
const tohashed: string = "This is my encrypt text";
|
|
21
21
|
const encoder = new TextEncoder();
|
|
@@ -33,11 +33,11 @@ describe("Insecure Channel Tests", () => {
|
|
|
33
33
|
const alice_keys: X25519SecretPublicKeyResult = x25519Wrapper.generateSecretAndPublicKey();
|
|
34
34
|
const bob_keys: X25519SecretPublicKeyResult = x25519Wrapper.generateSecretAndPublicKey();
|
|
35
35
|
|
|
36
|
-
const alice_shared_secret = x25519Wrapper.
|
|
37
|
-
const bob_shared_secret = x25519Wrapper.
|
|
36
|
+
const alice_shared_secret = x25519Wrapper.generateSharedSecret(alice_keys.secretKey, bob_keys.publicKey);
|
|
37
|
+
const bob_shared_secret = x25519Wrapper.generateSharedSecret(bob_keys.secretKey, alice_keys.publicKey);
|
|
38
38
|
|
|
39
|
-
const alice_aes_key = aesWrapper.
|
|
40
|
-
const bob_aes_key = aesWrapper.
|
|
39
|
+
const alice_aes_key = aesWrapper.aes128KeyNonceX25519DiffieHellman(alice_shared_secret);
|
|
40
|
+
const bob_aes_key = aesWrapper.aes128KeyNonceX25519DiffieHellman(bob_shared_secret);
|
|
41
41
|
|
|
42
42
|
const tohashed: string = "This is my encrypt text";
|
|
43
43
|
const encoder = new TextEncoder();
|
|
@@ -8,11 +8,11 @@ describe("X25519 Key Exchange", () => {
|
|
|
8
8
|
const alice = wrapper.generateSecretAndPublicKey();
|
|
9
9
|
const bob = wrapper.generateSecretAndPublicKey();
|
|
10
10
|
|
|
11
|
-
const alice_shared_secret = wrapper.
|
|
11
|
+
const alice_shared_secret = wrapper.generateSharedSecret(
|
|
12
12
|
alice.secretKey,
|
|
13
13
|
bob.publicKey,
|
|
14
14
|
);
|
|
15
|
-
const bob_shared_secret = wrapper.
|
|
15
|
+
const bob_shared_secret = wrapper.generateSharedSecret(
|
|
16
16
|
bob.secretKey,
|
|
17
17
|
alice.publicKey,
|
|
18
18
|
);
|
|
@@ -18,7 +18,7 @@ describe("Bcrypt Tests", () => {
|
|
|
18
18
|
const hasher: BCryptWrapper = new BCryptWrapper();
|
|
19
19
|
const password: string = "NotThisPassword!@";
|
|
20
20
|
const hashedPassword: string = hasher.hashPassword(password);
|
|
21
|
-
const isValid: boolean = hasher.
|
|
21
|
+
const isValid: boolean = hasher.verify(hashedPassword, password);
|
|
22
22
|
expect(isValid).to.equal(true);
|
|
23
23
|
});
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@ describe("Bcrypt Tests", () => {
|
|
|
26
26
|
const hasher: BCryptWrapper = new BCryptWrapper();
|
|
27
27
|
const password: string = "NotThisPassword!@";
|
|
28
28
|
const hashedPassword: string = hasher.hashPassword(password);
|
|
29
|
-
const isValid: boolean = hasher.
|
|
29
|
+
const isValid: boolean = hasher.verify(
|
|
30
30
|
hashedPassword,
|
|
31
31
|
"ThesePasswordsDoNotMatch",
|
|
32
32
|
);
|
|
@@ -50,7 +50,7 @@ describe("Scrypt Tests", () => {
|
|
|
50
50
|
);
|
|
51
51
|
const password: string = "ScryptRocks1231231";
|
|
52
52
|
const hashed: string = hasher.hashPassword(password);
|
|
53
|
-
const verified: boolean = hasher.
|
|
53
|
+
const verified: boolean = hasher.verify(hashed, password);
|
|
54
54
|
assert.isTrue(verified);
|
|
55
55
|
});
|
|
56
56
|
|
|
@@ -60,7 +60,7 @@ describe("Scrypt Tests", () => {
|
|
|
60
60
|
);
|
|
61
61
|
const password: string = "ScryptRocksSomeGarbageText";
|
|
62
62
|
const hashed: string = hasher.hashPassword(password);
|
|
63
|
-
const verified: boolean = hasher.
|
|
63
|
+
const verified: boolean = hasher.verify(
|
|
64
64
|
hashed,
|
|
65
65
|
"make this fail, its not the same",
|
|
66
66
|
);
|
|
@@ -84,7 +84,7 @@ describe("Argon2 Tests", () => {
|
|
|
84
84
|
);
|
|
85
85
|
const password: string = "ScryptRocks1231231";
|
|
86
86
|
const hashed: string = hasher.hashPassword(password);
|
|
87
|
-
const verified: boolean = hasher.
|
|
87
|
+
const verified: boolean = hasher.verify(hashed, password);
|
|
88
88
|
assert.isTrue(verified);
|
|
89
89
|
});
|
|
90
90
|
|
|
@@ -94,7 +94,7 @@ describe("Argon2 Tests", () => {
|
|
|
94
94
|
);
|
|
95
95
|
const password: string = "ScryptRocksSomeGarbageText";
|
|
96
96
|
const hashed: string = hasher.hashPassword(password);
|
|
97
|
-
const verified: boolean = hasher.
|
|
97
|
+
const verified: boolean = hasher.verify(
|
|
98
98
|
hashed,
|
|
99
99
|
"make this fail, its not the same",
|
|
100
100
|
);
|
|
@@ -6,7 +6,7 @@ describe("Symmetric Tests", () => {
|
|
|
6
6
|
it("aes 128 encrypt and decrypt equals", () => {
|
|
7
7
|
const aesWrapper: AESWrapper = new AESWrapper();
|
|
8
8
|
const aesKey = aesWrapper.aes128Key();
|
|
9
|
-
const aesNonce = aesWrapper.
|
|
9
|
+
const aesNonce = aesWrapper.generateAESNonce();
|
|
10
10
|
const tohashed: string = "This is my array to encrypt";
|
|
11
11
|
const encoder = new TextEncoder();
|
|
12
12
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
@@ -19,7 +19,7 @@ describe("Symmetric Tests", () => {
|
|
|
19
19
|
it("aes 256 encrypt and decrypt equals", () => {
|
|
20
20
|
const aesWrapper: AESWrapper = new AESWrapper();
|
|
21
21
|
const aesKey = aesWrapper.aes256Key();
|
|
22
|
-
const aesNonce = aesWrapper.
|
|
22
|
+
const aesNonce = aesWrapper.generateAESNonce();
|
|
23
23
|
const tohashed: string = "This is my array to encrypt";
|
|
24
24
|
const encoder = new TextEncoder();
|
|
25
25
|
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
package/src-ts/global.d.ts
DELETED