cas-typescript-sdk 1.0.18 → 1.0.20
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 +1 -0
- package/index.d.ts +4 -0
- package/index.node +0 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -1
- package/lib/sponges/ascon-wrapper.d.ts +6 -0
- package/lib/sponges/ascon-wrapper.js +37 -0
- package/lib/sponges/index.d.ts +2 -0
- package/lib/sponges/index.js +5 -0
- package/lib/symmetric/aes-wrapper.d.ts +20 -0
- package/lib/symmetric/aes-wrapper.js +20 -0
- package/package.json +1 -1
- package/src/lib.rs +5 -0
- package/src/sponges/ascon_aead.rs +84 -0
- package/src/sponges/cas_ascon_aead.rs +6 -0
- package/src-ts/index.ts +6 -4
- package/src-ts/sponges/ascon-wrapper.ts +50 -0
- package/src-ts/sponges/index.ts +3 -0
- package/src-ts/symmetric/aes-wrapper.ts +21 -0
- package/test-ts/{password-hasher-test.spec.ts → password-hasher.test.spec.ts} +1 -1
- package/test-ts/sponges.test.spec.ts +28 -0
- /package/test-ts/{key-exchange-test.spec.ts → key-exchange.test.spec.ts} +0 -0
package/Cargo.toml
CHANGED
package/index.d.ts
CHANGED
|
@@ -37,6 +37,10 @@ export function sha512Ed25519DigitalSignature(dataToSign: Array<number>): Shaed2
|
|
|
37
37
|
export function sha512Ed25519DigitalSignatureVerify(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean
|
|
38
38
|
export function sha256Ed25519DigitalSignature(dataToSign: Array<number>): Shaed25519DalekDigitalSignatureResult
|
|
39
39
|
export function sha256Ed25519DigitalSignatureVerify(publicKey: Array<number>, dataToVerify: Array<number>, signature: Array<number>): boolean
|
|
40
|
+
export function ascon128KeyGenerate(): Array<number>
|
|
41
|
+
export function ascon128NonceGenerate(): Array<number>
|
|
42
|
+
export function ascon128Encrypt(key: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>
|
|
43
|
+
export function ascon128Decrypt(key: Array<number>, nonce: Array<number>, ciphertext: Array<number>): Array<number>
|
|
40
44
|
export type x25519SecretPublicKeyResult = X25519SecretPublicKeyResult
|
|
41
45
|
export class X25519SecretPublicKeyResult {
|
|
42
46
|
publicKey: Array<number>
|
package/index.node
CHANGED
|
Binary file
|
package/lib/index.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ import { AESWrapper } from "./symmetric/index";
|
|
|
5
5
|
import { RsaKeyPairResult, RSAWrapper } from "./asymmetric/index";
|
|
6
6
|
import { AesRsaHybridEncryptResult, AESRSAHybridInitializer, HybridEncryptionWrapper } from "./hybrid/index";
|
|
7
7
|
import { DigitalSignatureFactory, DigitalSignatureSHA256Wrapper, DigitalSignatureSHA512Wrapper, DigitalSignatureType } from "./digital-signature";
|
|
8
|
-
|
|
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, };
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
4
|
const index_1 = require("./password-hashers/index");
|
|
5
5
|
Object.defineProperty(exports, "Argon2Wrapper", { enumerable: true, get: function () { return index_1.Argon2Wrapper; } });
|
|
6
6
|
Object.defineProperty(exports, "BCryptWrapper", { enumerable: true, get: function () { return index_1.BCryptWrapper; } });
|
|
@@ -27,3 +27,5 @@ Object.defineProperty(exports, "DigitalSignatureFactory", { enumerable: true, ge
|
|
|
27
27
|
Object.defineProperty(exports, "DigitalSignatureSHA256Wrapper", { enumerable: true, get: function () { return digital_signature_1.DigitalSignatureSHA256Wrapper; } });
|
|
28
28
|
Object.defineProperty(exports, "DigitalSignatureSHA512Wrapper", { enumerable: true, get: function () { return digital_signature_1.DigitalSignatureSHA512Wrapper; } });
|
|
29
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; } });
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class AsconWrapper {
|
|
2
|
+
ascon128Key(): Array<number>;
|
|
3
|
+
ascon128Nonce(): Array<number>;
|
|
4
|
+
ascon128Encrypt(key: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>;
|
|
5
|
+
ascon128Decrypt(key: Array<number>, nonce: Array<number>, ciphertext: Array<number>): Array<number>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsconWrapper = void 0;
|
|
4
|
+
const index_1 = require("../../index");
|
|
5
|
+
class AsconWrapper {
|
|
6
|
+
ascon128Key() {
|
|
7
|
+
return (0, index_1.ascon128KeyGenerate)();
|
|
8
|
+
}
|
|
9
|
+
ascon128Nonce() {
|
|
10
|
+
return (0, index_1.ascon128NonceGenerate)();
|
|
11
|
+
}
|
|
12
|
+
ascon128Encrypt(key, nonce, plaintext) {
|
|
13
|
+
if (!key || key.length === 0) {
|
|
14
|
+
throw new Error("Key is required");
|
|
15
|
+
}
|
|
16
|
+
if (!nonce || nonce.length === 0) {
|
|
17
|
+
throw new Error("Nonce is required");
|
|
18
|
+
}
|
|
19
|
+
if (!plaintext || plaintext.length === 0) {
|
|
20
|
+
throw new Error("Plaintext is required");
|
|
21
|
+
}
|
|
22
|
+
return (0, index_1.ascon128Encrypt)(key, nonce, plaintext);
|
|
23
|
+
}
|
|
24
|
+
ascon128Decrypt(key, nonce, ciphertext) {
|
|
25
|
+
if (!key || key.length === 0) {
|
|
26
|
+
throw new Error("Key is required");
|
|
27
|
+
}
|
|
28
|
+
if (!nonce || nonce.length === 0) {
|
|
29
|
+
throw new Error("Nonce is required");
|
|
30
|
+
}
|
|
31
|
+
if (!ciphertext || ciphertext.length === 0) {
|
|
32
|
+
throw new Error("Ciphertext is required");
|
|
33
|
+
}
|
|
34
|
+
return (0, index_1.ascon128Decrypt)(key, nonce, ciphertext);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.AsconWrapper = AsconWrapper;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsconWrapper = void 0;
|
|
4
|
+
const ascon_wrapper_1 = require("./ascon-wrapper");
|
|
5
|
+
Object.defineProperty(exports, "AsconWrapper", { enumerable: true, get: function () { return ascon_wrapper_1.AsconWrapper; } });
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { AesKeyFromX25519SharedSecret } from "../../index";
|
|
2
|
+
/**
|
|
3
|
+
* @description A wrapper class that contains methods to construct keys, nonces, and methods to encrypt and decrypt with AES-128-GCM and AES-256-GCM
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const nonce = aesWrapper.generateAESNonce();
|
|
8
|
+
const key = aesWrapper.aes128Key();
|
|
9
|
+
const textEncoder = new TextEncoder();
|
|
10
|
+
const array = Array.from(textEncoder.encode("Hello World"));
|
|
11
|
+
const encrypted = aesWrapper.aes128Encrypt(key, nonce, array);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
2
14
|
export declare class AESWrapper {
|
|
15
|
+
/**
|
|
16
|
+
* @description Generates a 128 bit AES key
|
|
17
|
+
* @returns returns a 128 bit AES key
|
|
18
|
+
*/
|
|
3
19
|
aes128Key(): Array<number>;
|
|
20
|
+
/**
|
|
21
|
+
* @description Generates a 256 bit AES key
|
|
22
|
+
* @returns returns a 256 bit AES key
|
|
23
|
+
*/
|
|
4
24
|
aes256Key(): Array<number>;
|
|
5
25
|
generateAESNonce(): Array<number>;
|
|
6
26
|
aes128Encrypt(aesKey: Array<number>, nonce: Array<number>, plaintext: Array<number>): Array<number>;
|
|
@@ -2,10 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AESWrapper = void 0;
|
|
4
4
|
const index_1 = require("../../index");
|
|
5
|
+
/**
|
|
6
|
+
* @description A wrapper class that contains methods to construct keys, nonces, and methods to encrypt and decrypt with AES-128-GCM and AES-256-GCM
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const nonce = aesWrapper.generateAESNonce();
|
|
11
|
+
const key = aesWrapper.aes128Key();
|
|
12
|
+
const textEncoder = new TextEncoder();
|
|
13
|
+
const array = Array.from(textEncoder.encode("Hello World"));
|
|
14
|
+
const encrypted = aesWrapper.aes128Encrypt(key, nonce, array);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
5
17
|
class AESWrapper {
|
|
18
|
+
/**
|
|
19
|
+
* @description Generates a 128 bit AES key
|
|
20
|
+
* @returns returns a 128 bit AES key
|
|
21
|
+
*/
|
|
6
22
|
aes128Key() {
|
|
7
23
|
return (0, index_1.aes128Key)();
|
|
8
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* @description Generates a 256 bit AES key
|
|
27
|
+
* @returns returns a 256 bit AES key
|
|
28
|
+
*/
|
|
9
29
|
aes256Key() {
|
|
10
30
|
return (0, index_1.aes256Key)();
|
|
11
31
|
}
|
package/package.json
CHANGED
package/src/lib.rs
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
|
|
2
|
+
use aes_gcm::AeadCore;
|
|
3
|
+
use ascon_aead::{aead::{generic_array::GenericArray, Aead, KeyInit, OsRng}, Ascon128};
|
|
4
|
+
use napi_derive::napi;
|
|
5
|
+
|
|
6
|
+
use super::cas_ascon_aead::{CASAsconAead};
|
|
7
|
+
pub struct AsconAead;
|
|
8
|
+
|
|
9
|
+
impl CASAsconAead for AsconAead {
|
|
10
|
+
fn encrypt(key: Vec<u8>, nonce: Vec<u8>, plaintext: Vec<u8>) -> Vec<u8> {
|
|
11
|
+
let key_generic_array = GenericArray::from_slice(&key);
|
|
12
|
+
let nonce_generic_array = GenericArray::from_slice(&nonce);
|
|
13
|
+
let cipher = Ascon128::new(key_generic_array);
|
|
14
|
+
let ciphertext = cipher.encrypt(&nonce_generic_array, plaintext.as_ref()).unwrap();
|
|
15
|
+
ciphertext
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
fn decrypt(key: Vec<u8>, nonce: Vec<u8>, ciphertext: Vec<u8>) -> Vec<u8> {
|
|
19
|
+
let key_generic_array = GenericArray::from_slice(&key);
|
|
20
|
+
let nonce_generic_array = GenericArray::from_slice(&nonce);
|
|
21
|
+
let cipher = Ascon128::new(key_generic_array);
|
|
22
|
+
let plaintext = cipher.decrypt(&nonce_generic_array, ciphertext.as_ref()).unwrap();
|
|
23
|
+
plaintext
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
fn generate_key() -> Vec<u8> {
|
|
27
|
+
return Ascon128::generate_key(&mut OsRng).to_vec();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
fn generate_nonce() -> Vec<u8> {
|
|
31
|
+
return Ascon128::generate_nonce(&mut OsRng).to_vec();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#[napi]
|
|
36
|
+
pub fn ascon128_key_generate() -> Vec<u8> {
|
|
37
|
+
return AsconAead::generate_key();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#[test]
|
|
41
|
+
fn test_ascon128_key_generate() {
|
|
42
|
+
let key = ascon128_key_generate();
|
|
43
|
+
assert_eq!(key.len(), 16);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
#[napi]
|
|
47
|
+
pub fn ascon128_nonce_generate() -> Vec<u8> {
|
|
48
|
+
return AsconAead::generate_nonce();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
#[test]
|
|
52
|
+
pub fn test_ascon128_nonce_generate() {
|
|
53
|
+
let nonce = ascon128_nonce_generate();
|
|
54
|
+
assert_eq!(nonce.len(), 16);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#[napi]
|
|
58
|
+
pub fn ascon128_encrypt(key: Vec<u8>, nonce: Vec<u8>, plaintext: Vec<u8>) -> Vec<u8> {
|
|
59
|
+
return AsconAead::encrypt(key, nonce, plaintext);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#[test]
|
|
63
|
+
pub fn test_ascon128_encrypt() {
|
|
64
|
+
let key = AsconAead::generate_key();
|
|
65
|
+
let nonce = AsconAead::generate_nonce();
|
|
66
|
+
let plaintext = b"Hello, World!".to_vec();
|
|
67
|
+
let ciphertext = ascon128_encrypt(key.clone(), nonce.clone(), plaintext.clone());
|
|
68
|
+
assert_ne!(ciphertext, plaintext);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
#[napi]
|
|
72
|
+
pub fn ascon128_decrypt(key: Vec<u8>, nonce: Vec<u8>, ciphertext: Vec<u8>) -> Vec<u8> {
|
|
73
|
+
return AsconAead::decrypt(key, nonce, ciphertext);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
#[test]
|
|
77
|
+
pub fn test_ascon128_decrypt() {
|
|
78
|
+
let key = AsconAead::generate_key();
|
|
79
|
+
let nonce = AsconAead::generate_nonce();
|
|
80
|
+
let plaintext = b"Hello, World!".to_vec();
|
|
81
|
+
let ciphertext = ascon128_encrypt(key.clone(), nonce.clone(), plaintext.clone());
|
|
82
|
+
let decrypted = ascon128_decrypt(key.clone(), nonce.clone(), ciphertext.clone());
|
|
83
|
+
assert_eq!(decrypted, plaintext);
|
|
84
|
+
}
|
package/src-ts/index.ts
CHANGED
|
@@ -20,13 +20,19 @@ import {
|
|
|
20
20
|
DigitalSignatureSHA512Wrapper,
|
|
21
21
|
DigitalSignatureType,
|
|
22
22
|
} from "./digital-signature";
|
|
23
|
+
import { AsconWrapper } from "./sponges/index";
|
|
23
24
|
|
|
24
25
|
export {
|
|
25
26
|
AesRsaHybridEncryptResult,
|
|
26
27
|
AESRSAHybridInitializer,
|
|
27
28
|
AESWrapper,
|
|
28
29
|
Argon2Wrapper,
|
|
30
|
+
AsconWrapper,
|
|
29
31
|
BCryptWrapper,
|
|
32
|
+
DigitalSignatureFactory,
|
|
33
|
+
DigitalSignatureSHA256Wrapper,
|
|
34
|
+
DigitalSignatureSHA512Wrapper,
|
|
35
|
+
DigitalSignatureType,
|
|
30
36
|
HasherFactory,
|
|
31
37
|
HasherType,
|
|
32
38
|
HybridEncryptionWrapper,
|
|
@@ -37,8 +43,4 @@ export {
|
|
|
37
43
|
ScryptWrapper,
|
|
38
44
|
SHAWrapper,
|
|
39
45
|
X25519Wrapper,
|
|
40
|
-
DigitalSignatureFactory,
|
|
41
|
-
DigitalSignatureSHA256Wrapper,
|
|
42
|
-
DigitalSignatureSHA512Wrapper,
|
|
43
|
-
DigitalSignatureType,
|
|
44
46
|
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ascon128Decrypt,
|
|
3
|
+
ascon128Encrypt,
|
|
4
|
+
ascon128KeyGenerate,
|
|
5
|
+
ascon128NonceGenerate,
|
|
6
|
+
} from "../../index";
|
|
7
|
+
|
|
8
|
+
export class AsconWrapper {
|
|
9
|
+
ascon128Key(): Array<number> {
|
|
10
|
+
return ascon128KeyGenerate();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
ascon128Nonce(): Array<number> {
|
|
14
|
+
return ascon128NonceGenerate();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
ascon128Encrypt(
|
|
18
|
+
key: Array<number>,
|
|
19
|
+
nonce: Array<number>,
|
|
20
|
+
plaintext: Array<number>,
|
|
21
|
+
): Array<number> {
|
|
22
|
+
if (!key || key.length === 0) {
|
|
23
|
+
throw new Error("Key is required");
|
|
24
|
+
}
|
|
25
|
+
if (!nonce || nonce.length === 0) {
|
|
26
|
+
throw new Error("Nonce is required");
|
|
27
|
+
}
|
|
28
|
+
if (!plaintext || plaintext.length === 0) {
|
|
29
|
+
throw new Error("Plaintext is required");
|
|
30
|
+
}
|
|
31
|
+
return ascon128Encrypt(key, nonce, plaintext);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
ascon128Decrypt(
|
|
35
|
+
key: Array<number>,
|
|
36
|
+
nonce: Array<number>,
|
|
37
|
+
ciphertext: Array<number>,
|
|
38
|
+
): Array<number> {
|
|
39
|
+
if (!key || key.length === 0) {
|
|
40
|
+
throw new Error("Key is required");
|
|
41
|
+
}
|
|
42
|
+
if (!nonce || nonce.length === 0) {
|
|
43
|
+
throw new Error("Nonce is required");
|
|
44
|
+
}
|
|
45
|
+
if (!ciphertext || ciphertext.length === 0) {
|
|
46
|
+
throw new Error("Ciphertext is required");
|
|
47
|
+
}
|
|
48
|
+
return ascon128Decrypt(key, nonce, ciphertext);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -11,11 +11,32 @@ import {
|
|
|
11
11
|
aesNonce,
|
|
12
12
|
} from "../../index";
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @description A wrapper class that contains methods to construct keys, nonces, and methods to encrypt and decrypt with AES-128-GCM and AES-256-GCM
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const nonce = aesWrapper.generateAESNonce();
|
|
20
|
+
const key = aesWrapper.aes128Key();
|
|
21
|
+
const textEncoder = new TextEncoder();
|
|
22
|
+
const array = Array.from(textEncoder.encode("Hello World"));
|
|
23
|
+
const encrypted = aesWrapper.aes128Encrypt(key, nonce, array);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
14
26
|
export class AESWrapper {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @description Generates a 128 bit AES key
|
|
30
|
+
* @returns returns a 128 bit AES key
|
|
31
|
+
*/
|
|
15
32
|
public aes128Key(): Array<number> {
|
|
16
33
|
return aes128Key();
|
|
17
34
|
}
|
|
18
35
|
|
|
36
|
+
/**
|
|
37
|
+
* @description Generates a 256 bit AES key
|
|
38
|
+
* @returns returns a 256 bit AES key
|
|
39
|
+
*/
|
|
19
40
|
public aes256Key(): Array<number> {
|
|
20
41
|
return aes256Key();
|
|
21
42
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AsconWrapper } from "../src-ts/sponges/ascon-wrapper";
|
|
2
|
+
import { assert } from "chai";
|
|
3
|
+
import { areEqual } from "./helpers/array";
|
|
4
|
+
|
|
5
|
+
describe("Sponges Tests", () => {
|
|
6
|
+
it("Ascon 128 Encrypt", () => {
|
|
7
|
+
const wrapper: AsconWrapper = new AsconWrapper();
|
|
8
|
+
const key: Array<number> = wrapper.ascon128Key();
|
|
9
|
+
const nonce: Array<number> = wrapper.ascon128Nonce();
|
|
10
|
+
const tohashed: string = "This is my array to encrypt";
|
|
11
|
+
const encoder = new TextEncoder();
|
|
12
|
+
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
13
|
+
const ciphertext = wrapper.ascon128Encrypt(key, nonce, tohashBytes);
|
|
14
|
+
assert.isNotTrue(areEqual(tohashBytes, ciphertext));
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it ("Ascon 128 Decrypt", () => {
|
|
18
|
+
const wrapper: AsconWrapper = new AsconWrapper();
|
|
19
|
+
const key: Array<number> = wrapper.ascon128Key();
|
|
20
|
+
const nonce: Array<number> = wrapper.ascon128Nonce();
|
|
21
|
+
const tohashed: string = "This is my array to encrypt";
|
|
22
|
+
const encoder = new TextEncoder();
|
|
23
|
+
const tohashBytes: Array<number> = Array.from(encoder.encode(tohashed));
|
|
24
|
+
const ciphertext = wrapper.ascon128Encrypt(key, nonce, tohashBytes);
|
|
25
|
+
const plaintext = wrapper.ascon128Decrypt(key, nonce, ciphertext);
|
|
26
|
+
assert.equal(areEqual(plaintext, tohashBytes), true);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
File without changes
|