cas-typescript-sdk 1.0.25 → 1.0.26
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/index.d.ts +4 -0
- package/index.node +0 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/message/hmac.d.ts +6 -0
- package/lib/message/hmac.js +49 -0
- package/lib/message/index.d.ts +2 -0
- package/lib/message/index.js +5 -0
- package/package.json +1 -1
- package/src/lib.rs +4 -0
- package/src/message/hmac.rs +40 -0
- package/src-ts/index.ts +2 -1
- package/src-ts/message/hmac.ts +49 -0
- package/src-ts/message/index.ts +3 -0
- package/test-ts/hmac.test.spec.ts +32 -0
package/index.d.ts
CHANGED
|
@@ -47,6 +47,10 @@ 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 function hmacSign(key: Array<number>, message: Array<number>): Array<number>
|
|
51
|
+
export function hmacSignThreadpool(key: Array<number>, message: Array<number>): Array<number>
|
|
52
|
+
export function hmacVerify(key: Array<number>, message: Array<number>, signature: Array<number>): boolean
|
|
53
|
+
export function hmacVerifyThreadpool(key: Array<number>, message: Array<number>, signature: Array<number>): boolean
|
|
50
54
|
export type CASx25519SecretPublicKeyResult = CaSx25519SecretPublicKeyResult
|
|
51
55
|
export class CaSx25519SecretPublicKeyResult {
|
|
52
56
|
publicKey: Array<number>
|
package/index.node
CHANGED
|
Binary file
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -22,3 +22,4 @@ __exportStar(require("./asymmetric/index"), exports);
|
|
|
22
22
|
__exportStar(require("./hybrid/index"), exports);
|
|
23
23
|
__exportStar(require("./digital-signature"), exports);
|
|
24
24
|
__exportStar(require("./sponges/index"), exports);
|
|
25
|
+
__exportStar(require("./message/index"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class HmacWrapper {
|
|
2
|
+
hmacSignBytes(key: Array<number>, message: Array<number>): Array<number>;
|
|
3
|
+
hmacVerifyBytes(key: Array<number>, message: Array<number>, signature: Array<number>): boolean;
|
|
4
|
+
hmacSignBytesThreadpool(key: Array<number>, message: Array<number>): Array<number>;
|
|
5
|
+
hmacVerifyBytesThreadpool(key: Array<number>, message: Array<number>, signature: Array<number>): boolean;
|
|
6
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HmacWrapper = void 0;
|
|
4
|
+
const index_1 = require("../../index");
|
|
5
|
+
class HmacWrapper {
|
|
6
|
+
hmacSignBytes(key, message) {
|
|
7
|
+
if (key?.length === 0) {
|
|
8
|
+
throw new Error("Must provide an allocated key");
|
|
9
|
+
}
|
|
10
|
+
if (message?.length === 0) {
|
|
11
|
+
throw new Error("Must provide an allocated message");
|
|
12
|
+
}
|
|
13
|
+
return (0, index_1.hmacSign)(key, message);
|
|
14
|
+
}
|
|
15
|
+
hmacVerifyBytes(key, message, signature) {
|
|
16
|
+
if (key?.length === 0) {
|
|
17
|
+
throw new Error("Must provide an allocated key");
|
|
18
|
+
}
|
|
19
|
+
if (message?.length === 0) {
|
|
20
|
+
throw new Error("Must provide an allocated message");
|
|
21
|
+
}
|
|
22
|
+
if (signature?.length === 0) {
|
|
23
|
+
throw new Error("Must provide an allocated signature");
|
|
24
|
+
}
|
|
25
|
+
return (0, index_1.hmacVerify)(key, message, signature);
|
|
26
|
+
}
|
|
27
|
+
hmacSignBytesThreadpool(key, message) {
|
|
28
|
+
if (key?.length === 0) {
|
|
29
|
+
throw new Error("Must provide an allocated key");
|
|
30
|
+
}
|
|
31
|
+
if (message?.length === 0) {
|
|
32
|
+
throw new Error("Must provide an allocated message");
|
|
33
|
+
}
|
|
34
|
+
return (0, index_1.hmacSignThreadpool)(key, message);
|
|
35
|
+
}
|
|
36
|
+
hmacVerifyBytesThreadpool(key, message, signature) {
|
|
37
|
+
if (key?.length === 0) {
|
|
38
|
+
throw new Error("Must provide an allocated key");
|
|
39
|
+
}
|
|
40
|
+
if (message?.length === 0) {
|
|
41
|
+
throw new Error("Must provide an allocated message");
|
|
42
|
+
}
|
|
43
|
+
if (signature?.length === 0) {
|
|
44
|
+
throw new Error("Must provide an allocated signature");
|
|
45
|
+
}
|
|
46
|
+
return (0, index_1.hmacVerifyThreadpool)(key, message, signature);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.HmacWrapper = HmacWrapper;
|
package/package.json
CHANGED
package/src/lib.rs
CHANGED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
use cas_lib::message::{cas_hmac::CASHMAC, hmac::HMAC};
|
|
2
|
+
use napi_derive::napi;
|
|
3
|
+
|
|
4
|
+
#[napi]
|
|
5
|
+
pub fn hmac_sign(key: Vec<u8>, message: Vec<u8>) -> Vec<u8> {
|
|
6
|
+
return <HMAC as CASHMAC>::sign(key, message);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
#[napi]
|
|
10
|
+
pub fn hmac_sign_threadpool(key: Vec<u8>, message: Vec<u8>) -> Vec<u8> {
|
|
11
|
+
return <HMAC as CASHMAC>::sign_threadpool(key, message);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#[napi]
|
|
15
|
+
pub fn hmac_verify(key: Vec<u8>, message: Vec<u8>, signature: Vec<u8>) -> bool {
|
|
16
|
+
return <HMAC as CASHMAC>::verify(key, message, signature);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
#[napi]
|
|
20
|
+
pub fn hmac_verify_threadpool(key: Vec<u8>, message: Vec<u8>, signature: Vec<u8>) -> bool {
|
|
21
|
+
return <HMAC as CASHMAC>::verify_threadpool(key, message, signature);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
#[test]
|
|
25
|
+
fn hmac_sign_and_verify_test() {
|
|
26
|
+
let mut key = b"ThisIsMyKeyForHmac".to_vec();
|
|
27
|
+
let mut message = b"ThisIsMyMessageToSign".to_vec();
|
|
28
|
+
let signature = hmac_sign(key.clone(), message.clone());
|
|
29
|
+
let result = hmac_verify(key, message, signature);
|
|
30
|
+
assert_eq!(true, result);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#[test]
|
|
34
|
+
fn hmac_sign_and_verify_threadpool_test() {
|
|
35
|
+
let mut key = b"ThisIsMyKeyForHmac7789".to_vec();
|
|
36
|
+
let mut message = b"ThisIsMyMessageToSign1230".to_vec();
|
|
37
|
+
let signature = hmac_sign_threadpool(key.clone(), message.clone());
|
|
38
|
+
let result = hmac_verify_threadpool(key, message, signature);
|
|
39
|
+
assert_eq!(true, result);
|
|
40
|
+
}
|
package/src-ts/index.ts
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { hmacSign, hmacSignThreadpool, hmacVerify, hmacVerifyThreadpool } from "../../index";
|
|
2
|
+
|
|
3
|
+
export class HmacWrapper {
|
|
4
|
+
public hmacSignBytes(key: Array<number>, message: Array<number>): Array<number> {
|
|
5
|
+
if (key?.length === 0) {
|
|
6
|
+
throw new Error("Must provide an allocated key");
|
|
7
|
+
}
|
|
8
|
+
if (message?.length === 0) {
|
|
9
|
+
throw new Error("Must provide an allocated message");
|
|
10
|
+
}
|
|
11
|
+
return hmacSign(key, message);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public hmacVerifyBytes(key: Array<number>, message: Array<number>, signature: Array<number>): boolean {
|
|
15
|
+
if (key?.length === 0) {
|
|
16
|
+
throw new Error("Must provide an allocated key");
|
|
17
|
+
}
|
|
18
|
+
if (message?.length === 0) {
|
|
19
|
+
throw new Error("Must provide an allocated message");
|
|
20
|
+
}
|
|
21
|
+
if(signature?.length===0) {
|
|
22
|
+
throw new Error("Must provide an allocated signature");
|
|
23
|
+
}
|
|
24
|
+
return hmacVerify(key, message, signature);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public hmacSignBytesThreadpool(key: Array<number>, message: Array<number>): Array<number> {
|
|
28
|
+
if (key?.length === 0) {
|
|
29
|
+
throw new Error("Must provide an allocated key");
|
|
30
|
+
}
|
|
31
|
+
if (message?.length === 0) {
|
|
32
|
+
throw new Error("Must provide an allocated message");
|
|
33
|
+
}
|
|
34
|
+
return hmacSignThreadpool(key, message);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public hmacVerifyBytesThreadpool(key: Array<number>, message: Array<number>, signature: Array<number>): boolean {
|
|
38
|
+
if (key?.length === 0) {
|
|
39
|
+
throw new Error("Must provide an allocated key");
|
|
40
|
+
}
|
|
41
|
+
if (message?.length === 0) {
|
|
42
|
+
throw new Error("Must provide an allocated message");
|
|
43
|
+
}
|
|
44
|
+
if(signature?.length===0) {
|
|
45
|
+
throw new Error("Must provide an allocated signature");
|
|
46
|
+
}
|
|
47
|
+
return hmacVerifyThreadpool(key, message, signature);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { assert } from "chai";
|
|
2
|
+
import { HmacWrapper } from "../src-ts/message/index";
|
|
3
|
+
|
|
4
|
+
describe("HMAC Tests", () => {
|
|
5
|
+
it("Sign and Verify", () => {
|
|
6
|
+
const wrapper = new HmacWrapper();
|
|
7
|
+
const key: string = "This is my array to hash";
|
|
8
|
+
const encoder = new TextEncoder();
|
|
9
|
+
const keyBytes: Array<number> = Array.from(encoder.encode(key));
|
|
10
|
+
const message: string = "This is my message";
|
|
11
|
+
const messageBytes = Array.from(encoder.encode(message));
|
|
12
|
+
const signature = wrapper.hmacSignBytes(keyBytes, messageBytes);
|
|
13
|
+
const result = wrapper.hmacVerifyBytes(keyBytes, messageBytes, signature);
|
|
14
|
+
assert.equal(true, result);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it("Sign and Verify Threadpool", () => {
|
|
18
|
+
const wrapper = new HmacWrapper();
|
|
19
|
+
const key: string = "This is my array to hash";
|
|
20
|
+
const encoder = new TextEncoder();
|
|
21
|
+
const keyBytes: Array<number> = Array.from(encoder.encode(key));
|
|
22
|
+
const message: string = "This is my message";
|
|
23
|
+
const messageBytes = Array.from(encoder.encode(message));
|
|
24
|
+
const signature = wrapper.hmacSignBytesThreadpool(keyBytes, messageBytes);
|
|
25
|
+
const result = wrapper.hmacVerifyBytesThreadpool(
|
|
26
|
+
keyBytes,
|
|
27
|
+
messageBytes,
|
|
28
|
+
signature,
|
|
29
|
+
);
|
|
30
|
+
assert.equal(true, result);
|
|
31
|
+
});
|
|
32
|
+
});
|