@gjsify/crypto 0.3.13 → 0.3.15
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/lib/esm/asn1.js +576 -450
- package/lib/esm/bigint-math.js +37 -28
- package/lib/esm/cipher.js +1252 -1229
- package/lib/esm/constants.js +12 -13
- package/lib/esm/crypto-utils.js +54 -36
- package/lib/esm/dh.js +408 -368
- package/lib/esm/ecdh.js +403 -321
- package/lib/esm/ecdsa.js +138 -111
- package/lib/esm/hash.js +100 -89
- package/lib/esm/hkdf.js +65 -47
- package/lib/esm/hmac.js +95 -90
- package/lib/esm/index.js +75 -148
- package/lib/esm/key-object.js +348 -307
- package/lib/esm/mgf1.js +30 -24
- package/lib/esm/pbkdf2.js +66 -59
- package/lib/esm/public-encrypt.js +203 -156
- package/lib/esm/random.js +137 -124
- package/lib/esm/rsa-oaep.js +94 -87
- package/lib/esm/rsa-pss.js +95 -88
- package/lib/esm/scrypt.js +116 -115
- package/lib/esm/sign.js +267 -237
- package/lib/esm/timing-safe-equal.js +16 -11
- package/lib/esm/x509.js +215 -206
- package/package.json +7 -7
package/lib/esm/hmac.js
CHANGED
|
@@ -1,93 +1,98 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BLOCK_SIZES, SUPPORTED_ALGORITHMS, normalizeAlgorithm } from "./crypto-utils.js";
|
|
2
|
+
import { Hash } from "./hash.js";
|
|
2
3
|
import { Buffer } from "node:buffer";
|
|
4
|
+
import { Transform } from "node:stream";
|
|
3
5
|
import { normalizeEncoding } from "@gjsify/utils";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
6
|
+
|
|
7
|
+
//#region src/hmac.ts
|
|
8
|
+
/**
|
|
9
|
+
* Creates and returns an Hmac object that uses the given algorithm and key.
|
|
10
|
+
* Implemented using createHash (GLib.Checksum) since GLib.Hmac bindings are broken in GJS.
|
|
11
|
+
*/
|
|
12
|
+
var Hmac = class extends Transform {
|
|
13
|
+
_algorithm;
|
|
14
|
+
_innerHash;
|
|
15
|
+
_outerKeyPad;
|
|
16
|
+
_finalized = false;
|
|
17
|
+
constructor(algorithm, key) {
|
|
18
|
+
super();
|
|
19
|
+
const normalized = normalizeAlgorithm(algorithm);
|
|
20
|
+
if (!SUPPORTED_ALGORITHMS.has(normalized)) {
|
|
21
|
+
const err = new Error(`Unknown message digest: ${algorithm}`);
|
|
22
|
+
err.code = "ERR_CRYPTO_HASH_UNKNOWN";
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
this._algorithm = normalized;
|
|
26
|
+
let keyBytes;
|
|
27
|
+
if (typeof key === "string") {
|
|
28
|
+
keyBytes = Buffer.from(key, "utf8");
|
|
29
|
+
} else {
|
|
30
|
+
keyBytes = key instanceof Uint8Array ? key : Buffer.from(key);
|
|
31
|
+
}
|
|
32
|
+
const blockSize = BLOCK_SIZES[normalized];
|
|
33
|
+
if (keyBytes.length > blockSize) {
|
|
34
|
+
const h = new Hash(normalized);
|
|
35
|
+
h.update(keyBytes);
|
|
36
|
+
keyBytes = h.digest();
|
|
37
|
+
}
|
|
38
|
+
const paddedKey = new Uint8Array(blockSize);
|
|
39
|
+
paddedKey.set(keyBytes);
|
|
40
|
+
const iKeyPad = new Uint8Array(blockSize);
|
|
41
|
+
const oKeyPad = new Uint8Array(blockSize);
|
|
42
|
+
for (let i = 0; i < blockSize; i++) {
|
|
43
|
+
iKeyPad[i] = paddedKey[i] ^ 54;
|
|
44
|
+
oKeyPad[i] = paddedKey[i] ^ 92;
|
|
45
|
+
}
|
|
46
|
+
this._outerKeyPad = oKeyPad;
|
|
47
|
+
this._innerHash = new Hash(normalized);
|
|
48
|
+
this._innerHash.update(iKeyPad);
|
|
49
|
+
}
|
|
50
|
+
/** Update the HMAC with data. */
|
|
51
|
+
update(data, inputEncoding) {
|
|
52
|
+
if (this._finalized) {
|
|
53
|
+
throw new Error("Digest already called");
|
|
54
|
+
}
|
|
55
|
+
let bytes;
|
|
56
|
+
if (typeof data === "string") {
|
|
57
|
+
const enc = normalizeEncoding(inputEncoding);
|
|
58
|
+
bytes = Buffer.from(data, enc);
|
|
59
|
+
} else {
|
|
60
|
+
bytes = data instanceof Uint8Array ? data : Buffer.from(data);
|
|
61
|
+
}
|
|
62
|
+
this._innerHash.update(bytes);
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/** Calculate the HMAC digest. */
|
|
66
|
+
digest(encoding) {
|
|
67
|
+
if (this._finalized) {
|
|
68
|
+
throw new Error("Digest already called");
|
|
69
|
+
}
|
|
70
|
+
this._finalized = true;
|
|
71
|
+
const innerDigest = this._innerHash.digest();
|
|
72
|
+
const outerHash = new Hash(this._algorithm);
|
|
73
|
+
outerHash.update(this._outerKeyPad);
|
|
74
|
+
outerHash.update(innerDigest);
|
|
75
|
+
const result = outerHash.digest();
|
|
76
|
+
if (encoding) return result.toString(encoding);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
_transform(chunk, encoding, callback) {
|
|
80
|
+
try {
|
|
81
|
+
this.update(chunk, encoding);
|
|
82
|
+
callback();
|
|
83
|
+
} catch (err) {
|
|
84
|
+
callback(err);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
_flush(callback) {
|
|
88
|
+
try {
|
|
89
|
+
this.push(this.digest());
|
|
90
|
+
callback();
|
|
91
|
+
} catch (err) {
|
|
92
|
+
callback(err);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
93
95
|
};
|
|
96
|
+
|
|
97
|
+
//#endregion
|
|
98
|
+
export { Hmac };
|
package/lib/esm/index.js
CHANGED
|
@@ -1,158 +1,85 @@
|
|
|
1
|
+
import { createCipher, createCipheriv, createDecipher, createDecipheriv, getCiphers } from "./cipher.js";
|
|
2
|
+
import { constants } from "./constants.js";
|
|
3
|
+
import { randomBytes, randomFill, randomFillSync, randomInt, randomUUID } from "./random.js";
|
|
4
|
+
import { DiffieHellman, DiffieHellmanGroup, createDiffieHellman, createDiffieHellmanGroup, getDiffieHellman } from "./dh.js";
|
|
5
|
+
import { createECDH, getCurves } from "./ecdh.js";
|
|
1
6
|
import { Hash, getHashes, hash } from "./hash.js";
|
|
2
7
|
import { Hmac } from "./hmac.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
randomFill,
|
|
6
|
-
randomFillSync,
|
|
7
|
-
randomUUID,
|
|
8
|
-
randomInt
|
|
9
|
-
} from "./random.js";
|
|
8
|
+
import { ecdsaSign, ecdsaVerify } from "./ecdsa.js";
|
|
9
|
+
import { hkdf, hkdfSync } from "./hkdf.js";
|
|
10
10
|
import { timingSafeEqual } from "./timing-safe-equal.js";
|
|
11
|
-
import { constants } from "./constants.js";
|
|
12
11
|
import { pbkdf2, pbkdf2Sync } from "./pbkdf2.js";
|
|
13
|
-
import { hkdf, hkdfSync } from "./hkdf.js";
|
|
14
12
|
import { scrypt, scryptSync } from "./scrypt.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
13
|
+
import { Sign, Verify, createSign, createVerify } from "./sign.js";
|
|
14
|
+
import { privateDecrypt, privateEncrypt, publicDecrypt, publicEncrypt } from "./public-encrypt.js";
|
|
15
|
+
import { mgf1 } from "./mgf1.js";
|
|
16
|
+
import { rsaPssSign, rsaPssVerify } from "./rsa-pss.js";
|
|
17
|
+
import { rsaOaepDecrypt, rsaOaepEncrypt } from "./rsa-oaep.js";
|
|
18
|
+
import { KeyObject, createPrivateKey, createPublicKey, createSecretKey } from "./key-object.js";
|
|
19
|
+
import { X509Certificate } from "./x509.js";
|
|
20
|
+
|
|
21
|
+
//#region src/index.ts
|
|
22
|
+
/** Create a Hash object for the given algorithm. */
|
|
17
23
|
function createHash(algorithm) {
|
|
18
|
-
|
|
24
|
+
return new Hash(algorithm);
|
|
19
25
|
}
|
|
26
|
+
/** Create an Hmac object for the given algorithm and key. */
|
|
20
27
|
function createHmac(algorithm, key) {
|
|
21
|
-
|
|
28
|
+
return new Hmac(algorithm, key);
|
|
22
29
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
createDecipheriv: createDecipheriv2,
|
|
76
|
-
getCiphers: getCiphers2,
|
|
77
|
-
Sign: Sign2,
|
|
78
|
-
Verify: Verify2,
|
|
79
|
-
createSign: createSign2,
|
|
80
|
-
createVerify: createVerify2,
|
|
81
|
-
createDiffieHellman: createDiffieHellman2,
|
|
82
|
-
getDiffieHellman: getDiffieHellman2,
|
|
83
|
-
DiffieHellman: DiffieHellman2,
|
|
84
|
-
DiffieHellmanGroup: DiffieHellmanGroup2,
|
|
85
|
-
createDiffieHellmanGroup: createDiffieHellmanGroup2,
|
|
86
|
-
createECDH: createECDH2,
|
|
87
|
-
getCurves: getCurves2,
|
|
88
|
-
ecdsaSign: ecdsaSign2,
|
|
89
|
-
ecdsaVerify: ecdsaVerify2,
|
|
90
|
-
publicEncrypt: publicEncrypt2,
|
|
91
|
-
privateDecrypt: privateDecrypt2,
|
|
92
|
-
privateEncrypt: privateEncrypt2,
|
|
93
|
-
publicDecrypt: publicDecrypt2,
|
|
94
|
-
rsaPssSign: rsaPssSign2,
|
|
95
|
-
rsaPssVerify: rsaPssVerify2,
|
|
96
|
-
rsaOaepEncrypt: rsaOaepEncrypt2,
|
|
97
|
-
rsaOaepDecrypt: rsaOaepDecrypt2,
|
|
98
|
-
mgf1: mgf12,
|
|
99
|
-
KeyObject: KeyObject2,
|
|
100
|
-
createSecretKey: createSecretKey2,
|
|
101
|
-
createPublicKey: createPublicKey2,
|
|
102
|
-
createPrivateKey: createPrivateKey2,
|
|
103
|
-
X509Certificate: X509Certificate2
|
|
104
|
-
};
|
|
105
|
-
export {
|
|
106
|
-
DiffieHellman,
|
|
107
|
-
DiffieHellmanGroup,
|
|
108
|
-
Hash,
|
|
109
|
-
Hmac,
|
|
110
|
-
KeyObject,
|
|
111
|
-
Sign,
|
|
112
|
-
Verify,
|
|
113
|
-
X509Certificate,
|
|
114
|
-
constants,
|
|
115
|
-
createCipher,
|
|
116
|
-
createCipheriv,
|
|
117
|
-
createDecipher,
|
|
118
|
-
createDecipheriv,
|
|
119
|
-
createDiffieHellman,
|
|
120
|
-
createDiffieHellmanGroup,
|
|
121
|
-
createECDH,
|
|
122
|
-
createHash,
|
|
123
|
-
createHmac,
|
|
124
|
-
createPrivateKey,
|
|
125
|
-
createPublicKey,
|
|
126
|
-
createSecretKey,
|
|
127
|
-
createSign,
|
|
128
|
-
createVerify,
|
|
129
|
-
index_default as default,
|
|
130
|
-
ecdsaSign,
|
|
131
|
-
ecdsaVerify,
|
|
132
|
-
getCiphers,
|
|
133
|
-
getCurves,
|
|
134
|
-
getDiffieHellman,
|
|
135
|
-
getHashes,
|
|
136
|
-
hash,
|
|
137
|
-
hkdf,
|
|
138
|
-
hkdfSync,
|
|
139
|
-
mgf1,
|
|
140
|
-
pbkdf2,
|
|
141
|
-
pbkdf2Sync,
|
|
142
|
-
privateDecrypt,
|
|
143
|
-
privateEncrypt,
|
|
144
|
-
publicDecrypt,
|
|
145
|
-
publicEncrypt,
|
|
146
|
-
randomBytes,
|
|
147
|
-
randomFill,
|
|
148
|
-
randomFillSync,
|
|
149
|
-
randomInt,
|
|
150
|
-
randomUUID,
|
|
151
|
-
rsaOaepDecrypt,
|
|
152
|
-
rsaOaepEncrypt,
|
|
153
|
-
rsaPssSign,
|
|
154
|
-
rsaPssVerify,
|
|
155
|
-
scrypt,
|
|
156
|
-
scryptSync,
|
|
157
|
-
timingSafeEqual
|
|
30
|
+
var src_default = {
|
|
31
|
+
Hash,
|
|
32
|
+
getHashes,
|
|
33
|
+
hash,
|
|
34
|
+
Hmac,
|
|
35
|
+
randomBytes,
|
|
36
|
+
randomFill,
|
|
37
|
+
randomFillSync,
|
|
38
|
+
randomUUID,
|
|
39
|
+
randomInt,
|
|
40
|
+
timingSafeEqual,
|
|
41
|
+
constants,
|
|
42
|
+
pbkdf2,
|
|
43
|
+
pbkdf2Sync,
|
|
44
|
+
hkdf,
|
|
45
|
+
hkdfSync,
|
|
46
|
+
scrypt,
|
|
47
|
+
scryptSync,
|
|
48
|
+
createHash,
|
|
49
|
+
createHmac,
|
|
50
|
+
createCipher,
|
|
51
|
+
createCipheriv,
|
|
52
|
+
createDecipher,
|
|
53
|
+
createDecipheriv,
|
|
54
|
+
getCiphers,
|
|
55
|
+
Sign,
|
|
56
|
+
Verify,
|
|
57
|
+
createSign,
|
|
58
|
+
createVerify,
|
|
59
|
+
createDiffieHellman,
|
|
60
|
+
getDiffieHellman,
|
|
61
|
+
DiffieHellman,
|
|
62
|
+
DiffieHellmanGroup,
|
|
63
|
+
createDiffieHellmanGroup,
|
|
64
|
+
createECDH,
|
|
65
|
+
getCurves,
|
|
66
|
+
ecdsaSign,
|
|
67
|
+
ecdsaVerify,
|
|
68
|
+
publicEncrypt,
|
|
69
|
+
privateDecrypt,
|
|
70
|
+
privateEncrypt,
|
|
71
|
+
publicDecrypt,
|
|
72
|
+
rsaPssSign,
|
|
73
|
+
rsaPssVerify,
|
|
74
|
+
rsaOaepEncrypt,
|
|
75
|
+
rsaOaepDecrypt,
|
|
76
|
+
mgf1,
|
|
77
|
+
KeyObject,
|
|
78
|
+
createSecretKey,
|
|
79
|
+
createPublicKey,
|
|
80
|
+
createPrivateKey,
|
|
81
|
+
X509Certificate
|
|
158
82
|
};
|
|
83
|
+
|
|
84
|
+
//#endregion
|
|
85
|
+
export { DiffieHellman, DiffieHellmanGroup, Hash, Hmac, KeyObject, Sign, Verify, X509Certificate, constants, createCipher, createCipheriv, createDecipher, createDecipheriv, createDiffieHellman, createDiffieHellmanGroup, createECDH, createHash, createHmac, createPrivateKey, createPublicKey, createSecretKey, createSign, createVerify, src_default as default, ecdsaSign, ecdsaVerify, getCiphers, getCurves, getDiffieHellman, getHashes, hash, hkdf, hkdfSync, mgf1, pbkdf2, pbkdf2Sync, privateDecrypt, privateEncrypt, publicDecrypt, publicEncrypt, randomBytes, randomFill, randomFillSync, randomInt, randomUUID, rsaOaepDecrypt, rsaOaepEncrypt, rsaPssSign, rsaPssVerify, scrypt, scryptSync, timingSafeEqual };
|