@blockchyp/blockchyp-ts 2.27.2 → 2.28.1

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.
@@ -27,12 +27,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.BlockChypCrypto = void 0;
30
- const create_hmac_1 = __importDefault(require("create-hmac"));
31
- const randombytes_1 = __importDefault(require("randombytes"));
30
+ const hmac_1 = require("@noble/hashes/hmac");
31
+ const sha256_1 = require("@noble/hashes/sha256");
32
+ const utils_1 = require("@noble/hashes/utils");
32
33
  const moment_1 = __importDefault(require("moment"));
33
34
  const base32 = require('base32');
34
- const sha_js_1 = __importDefault(require("sha.js"));
35
- const EC = __importStar(require("elliptic"));
35
+ const nist_1 = require("@noble/curves/nist");
36
36
  const aesjs = __importStar(require("aes-js"));
37
37
  const buffer_1 = require("buffer");
38
38
  class BlockChypCrypto {
@@ -41,9 +41,8 @@ class BlockChypCrypto {
41
41
  const ts = this.generateIsoTimestamp();
42
42
  const toSign = creds.apiKey + creds.bearerToken + ts + nonce;
43
43
  const key = buffer_1.Buffer.from(creds.signingKey, 'hex');
44
- const hmac = (0, create_hmac_1.default)('sha256', key);
45
- hmac.update(toSign);
46
- const sig = hmac.digest('hex');
44
+ const mac = (0, hmac_1.hmac)(sha256_1.sha256, key, (0, utils_1.utf8ToBytes)(toSign));
45
+ const sig = (0, utils_1.bytesToHex)(mac);
47
46
  const results = {
48
47
  'Nonce': nonce,
49
48
  'Timestamp': ts,
@@ -54,21 +53,29 @@ class BlockChypCrypto {
54
53
  encrypt(hexKey, plainText) {
55
54
  const key = buffer_1.Buffer.from(hexKey, 'hex').slice(0, 32);
56
55
  const keyArr = [...key];
57
- const iv = (0, randombytes_1.default)(16);
56
+ const iv = (0, utils_1.randomBytes)(16);
58
57
  const ivArr = [...iv];
59
58
  const aesCbc = new aesjs.ModeOfOperation.cbc(keyArr, ivArr);
60
59
  const plainBytes = aesjs.padding.pkcs7.pad(aesjs.utils.utf8.toBytes(plainText));
61
60
  const encryptedBytes = aesCbc.encrypt(plainBytes);
62
- return iv.toString('hex') + aesjs.utils.hex.fromBytes(encryptedBytes);
61
+ return (0, utils_1.bytesToHex)(iv) + aesjs.utils.hex.fromBytes(encryptedBytes);
63
62
  }
64
63
  sha256Hash(msg) {
65
- return (0, sha_js_1.default)('sha256').update(msg, 'hex').digest('hex');
64
+ const msgBytes = buffer_1.Buffer.from(msg, 'hex');
65
+ return (0, utils_1.bytesToHex)((0, sha256_1.sha256)(msgBytes));
66
66
  }
67
67
  validateSignature(publicKey, msg, sig) {
68
- const ec = new EC.ec('p256');
69
- const key = ec.keyFromPublic({ x: publicKey.x, y: publicKey.y });
70
68
  const msgHash = this.sha256Hash(msg);
71
- return key.verify(msgHash, { r: sig.r, s: sig.s });
69
+ const msgHashBytes = buffer_1.Buffer.from(msgHash, 'hex');
70
+ const pubKeyPoint = nist_1.p256.ProjectivePoint.fromAffine({
71
+ x: BigInt('0x' + publicKey.x),
72
+ y: BigInt('0x' + publicKey.y)
73
+ });
74
+ const pubKeyBytes = pubKeyPoint.toRawBytes(false);
75
+ const signature = new nist_1.p256.Signature(BigInt('0x' + sig.r), BigInt('0x' + sig.s));
76
+ const sigBytes = signature.toCompactRawBytes();
77
+ // Verify signature (prehash: true means we already hashed the message)
78
+ return nist_1.p256.verify(sigBytes, msgHashBytes, pubKeyBytes, { prehash: true });
72
79
  }
73
80
  decrypt(hexKey, cipherText) {
74
81
  const key = buffer_1.Buffer.from(hexKey, 'hex').slice(0, 32);
@@ -82,7 +89,7 @@ class BlockChypCrypto {
82
89
  return aesjs.utils.utf8.fromBytes(decryptedBytes);
83
90
  }
84
91
  generateNonce() {
85
- return base32.encode((0, randombytes_1.default)(32)).toUpperCase();
92
+ return base32.encode((0, utils_1.randomBytes)(32)).toUpperCase();
86
93
  }
87
94
  generateIsoTimestamp() {
88
95
  return (0, moment_1.default)().utc().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z';
@@ -1 +1 @@
1
- {"version":3,"file":"cryptoutils.js","sourceRoot":"","sources":["../../src/cryptoutils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cryptoutils.js","sourceRoot":"","sources":["../../src/cryptoutils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockchyp/blockchyp-ts",
3
- "version": "2.27.2",
3
+ "version": "2.28.1",
4
4
  "description": "BlockChyp Typescript Client",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -39,7 +39,6 @@
39
39
  "devDependencies": {
40
40
  "@types/aes-js": "^3.1.4",
41
41
  "@types/create-hmac": "^1.1.3",
42
- "@types/elliptic": "^6.4.18",
43
42
  "@types/is-windows": "^1.0.2",
44
43
  "@types/jasmine": "^5.1.4",
45
44
  "@types/node": "^20.12.12",
@@ -69,15 +68,10 @@
69
68
  "bn.js": "^4.12.2",
70
69
  "buffer": "^6.0.3",
71
70
  "cached-path-relative": "^1.0.2",
72
- "create-hmac": "^1.1.7",
73
- "crypto-browserify": "^3.12.1",
74
- "elliptic": "^6.6.1",
71
+ "@noble/curves": "^1.6.0",
72
+ "@noble/hashes": "^1.5.0",
75
73
  "glob": "^13.0.0",
76
74
  "moment": "^2.22.2",
77
- "npm": "^11.6.3",
78
- "randombytes": "^2.0.6",
79
- "pbkdf2": "^3.1.5",
80
- "sha.js": "^2.4.12",
81
75
  "stream-browserify": "^3.0.0",
82
76
  "uuidv4": "^6.2.13"
83
77
  }
@@ -1,22 +1,22 @@
1
- import createHmac from 'create-hmac'
2
- import randomBytes from 'randombytes'
1
+ import { hmac } from '@noble/hashes/hmac'
2
+ import { sha256 } from '@noble/hashes/sha256'
3
+ import { randomBytes, bytesToHex, utf8ToBytes } from '@noble/hashes/utils'
3
4
  import moment from 'moment'
4
5
  const base32 = require('base32')
5
- import shajs from 'sha.js'
6
- import * as EC from 'elliptic'
6
+ import { p256 } from '@noble/curves/nist'
7
7
  import * as aesjs from 'aes-js'
8
8
  import { Buffer } from 'buffer';
9
9
  import { BlockChypCredentials } from './client'
10
10
 
11
+
11
12
  export class BlockChypCrypto {
12
13
  generateGatewayHeaders (creds: BlockChypCredentials) {
13
14
  const nonce = this.generateNonce()
14
15
  const ts = this.generateIsoTimestamp()
15
16
  const toSign = creds.apiKey + creds.bearerToken + ts + nonce
16
17
  const key = Buffer.from(creds.signingKey, 'hex')
17
- const hmac = createHmac('sha256', key)
18
- hmac.update(toSign)
19
- const sig = hmac.digest('hex')
18
+ const mac = hmac(sha256, key, utf8ToBytes(toSign))
19
+ const sig = bytesToHex(mac)
20
20
 
21
21
  const results = {
22
22
  'Nonce': nonce,
@@ -38,18 +38,32 @@ export class BlockChypCrypto {
38
38
  const plainBytes = aesjs.padding.pkcs7.pad(aesjs.utils.utf8.toBytes(plainText))
39
39
  const encryptedBytes = aesCbc.encrypt(plainBytes)
40
40
 
41
- return iv.toString('hex') + aesjs.utils.hex.fromBytes(encryptedBytes)
41
+ return bytesToHex(iv) + aesjs.utils.hex.fromBytes(encryptedBytes)
42
42
  }
43
43
 
44
44
  sha256Hash (msg: string) {
45
- return shajs('sha256').update(msg, 'hex').digest('hex')
45
+ const msgBytes = Buffer.from(msg, 'hex')
46
+ return bytesToHex(sha256(msgBytes))
46
47
  }
47
48
 
48
49
  validateSignature (publicKey: any, msg: string, sig: any) {
49
- const ec = new EC.ec('p256')
50
- const key = ec.keyFromPublic({x: publicKey.x, y: publicKey.y})
51
50
  const msgHash = this.sha256Hash(msg)
52
- return key.verify(msgHash, {r: sig.r, s: sig.s})
51
+ const msgHashBytes = Buffer.from(msgHash, 'hex')
52
+
53
+ const pubKeyPoint = p256.ProjectivePoint.fromAffine({
54
+ x: BigInt('0x' + publicKey.x),
55
+ y: BigInt('0x' + publicKey.y)
56
+ })
57
+ const pubKeyBytes = pubKeyPoint.toRawBytes(false)
58
+
59
+ const signature = new p256.Signature(
60
+ BigInt('0x' + sig.r),
61
+ BigInt('0x' + sig.s)
62
+ )
63
+ const sigBytes = signature.toCompactRawBytes()
64
+
65
+ // Verify signature (prehash: true means we already hashed the message)
66
+ return p256.verify(sigBytes, msgHashBytes, pubKeyBytes, { prehash: true })
53
67
  }
54
68
 
55
69
  decrypt (hexKey: string, cipherText: string) {