lib0 0.2.64 → 0.2.66
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/coverage/tmp/coverage-29418-1678525324823-0.json +1 -0
- package/crypto/aes-gcm.d.ts +10 -0
- package/crypto/aes-gcm.d.ts.map +1 -0
- package/crypto/aes-gcm.js +124 -0
- package/crypto/ecdsa.d.ts +13 -0
- package/crypto/ecdsa.d.ts.map +1 -0
- package/crypto/ecdsa.js +93 -0
- package/crypto/rsa-oaep.d.ts +13 -0
- package/crypto/rsa-oaep.d.ts.map +1 -0
- package/crypto/rsa-oaep.js +84 -0
- package/crypto.test.d.ts +2 -0
- package/crypto.test.d.ts.map +1 -1
- package/dist/crypto/aes-gcm.d.ts +10 -0
- package/dist/crypto/aes-gcm.d.ts.map +1 -0
- package/dist/crypto/ecdsa.d.ts +13 -0
- package/dist/crypto/ecdsa.d.ts.map +1 -0
- package/dist/crypto/rsa-oaep.d.ts +13 -0
- package/dist/crypto/rsa-oaep.d.ts.map +1 -0
- package/dist/crypto.test.d.ts +2 -0
- package/dist/crypto.test.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/{indexeddb-1f25af34.cjs → indexeddb-38ee46bd.cjs} +1 -4
- package/dist/indexeddb-38ee46bd.cjs.map +1 -0
- package/dist/indexeddb.cjs +1 -1
- package/dist/indexeddb.d.ts.map +1 -1
- package/dist/indexeddb.test.d.ts +1 -0
- package/dist/indexeddb.test.d.ts.map +1 -1
- package/dist/testing.cjs +15 -0
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.ts +1 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.test.d.ts.map +1 -1
- package/indexeddb.d.ts.map +1 -1
- package/indexeddb.js +0 -3
- package/indexeddb.test.d.ts +1 -0
- package/indexeddb.test.d.ts.map +1 -1
- package/package.json +18 -6
- package/test.html +3 -1
- package/testing.d.ts +1 -0
- package/testing.d.ts.map +1 -1
- package/testing.js +14 -0
- package/testing.test.d.ts.map +1 -1
- package/coverage/tmp/coverage-17397-1678220559587-0.json +0 -1
- package/crypto.d.ts +0 -22
- package/crypto.d.ts.map +0 -1
- package/crypto.js +0 -186
- package/dist/crypto.cjs +0 -232
- package/dist/crypto.cjs.map +0 -1
- package/dist/crypto.d.ts +0 -22
- package/dist/crypto.d.ts.map +0 -1
- package/dist/indexeddb-1f25af34.cjs.map +0 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function encrypt(key: CryptoKey, data: Uint8Array): Promise<Uint8Array>;
|
|
2
|
+
export function decrypt(key: CryptoKey, data: Uint8Array): PromiseLike<Uint8Array>;
|
|
3
|
+
export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
4
|
+
export function importKey(jwk: any, usages?: Usages | undefined, extractable?: boolean | undefined): Promise<CryptoKey>;
|
|
5
|
+
export function deriveKey(secret: Uint8Array | string, salt: Uint8Array | string, { extractable, usages }?: {
|
|
6
|
+
extractable?: boolean | undefined;
|
|
7
|
+
usages?: Usages | undefined;
|
|
8
|
+
}): Promise<CryptoKey>;
|
|
9
|
+
export type Usages = Array<'encrypt' | 'decrypt'>;
|
|
10
|
+
//# sourceMappingURL=aes-gcm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["aes-gcm.js"],"names":[],"mappings":"AAsBO,6BAHI,SAAS,QACT,UAAU,uBAkBpB;AAWM,6BAJI,SAAS,QACT,UAAU,GACT,YAAY,UAAU,CAAC,CAclC;AAKM,+BAFI,SAAS,uBAGoB;AAOjC,+BAJI,GAAG,sFAUb;AAmBM,kCANI,UAAU,GAAC,MAAM,QACjB,UAAU,GAAC,MAAM;IAEF,WAAW;IACZ,MAAM;uBA0B9B;qBAjHY,MAAM,SAAS,GAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AES-GCM is a symmetric key for encryption
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as encoding from '../encoding.js'
|
|
6
|
+
import * as decoding from '../decoding.js'
|
|
7
|
+
import * as webcrypto from 'lib0/webcrypto'
|
|
8
|
+
import * as string from '../string.js'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {Array<'encrypt'|'decrypt'>} Usages
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @type {Usages}
|
|
16
|
+
*/
|
|
17
|
+
const defaultUsages = ['encrypt', 'decrypt']
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @param {CryptoKey} key
|
|
21
|
+
* @param {Uint8Array} data
|
|
22
|
+
*/
|
|
23
|
+
export const encrypt = (key, data) => {
|
|
24
|
+
const iv = webcrypto.getRandomValues(new Uint8Array(16)) // 92bit is enough. 128bit is recommended if space is not an issue.
|
|
25
|
+
return webcrypto.subtle.encrypt(
|
|
26
|
+
{
|
|
27
|
+
name: 'AES-GCM',
|
|
28
|
+
iv
|
|
29
|
+
},
|
|
30
|
+
key,
|
|
31
|
+
data
|
|
32
|
+
).then(cipher => {
|
|
33
|
+
const encryptedDataEncoder = encoding.createEncoder()
|
|
34
|
+
// iv may be sent in the clear to the other peers
|
|
35
|
+
encoding.writeUint8Array(encryptedDataEncoder, iv)
|
|
36
|
+
encoding.writeVarUint8Array(encryptedDataEncoder, new Uint8Array(cipher))
|
|
37
|
+
return encoding.toUint8Array(encryptedDataEncoder)
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @experimental The API is not final!
|
|
43
|
+
*
|
|
44
|
+
* Decrypt some data using AES-GCM method.
|
|
45
|
+
*
|
|
46
|
+
* @param {CryptoKey} key
|
|
47
|
+
* @param {Uint8Array} data
|
|
48
|
+
* @return {PromiseLike<Uint8Array>} decrypted buffer
|
|
49
|
+
*/
|
|
50
|
+
export const decrypt = (key, data) => {
|
|
51
|
+
const dataDecoder = decoding.createDecoder(data)
|
|
52
|
+
const iv = decoding.readUint8Array(dataDecoder, 16)
|
|
53
|
+
const cipher = decoding.readVarUint8Array(dataDecoder)
|
|
54
|
+
return webcrypto.subtle.decrypt(
|
|
55
|
+
{
|
|
56
|
+
name: 'AES-GCM',
|
|
57
|
+
iv
|
|
58
|
+
},
|
|
59
|
+
key,
|
|
60
|
+
cipher
|
|
61
|
+
).then(data => new Uint8Array(data))
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @param {CryptoKey} key
|
|
66
|
+
*/
|
|
67
|
+
export const exportKey = key =>
|
|
68
|
+
webcrypto.subtle.exportKey('jwk', key)
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @param {any} jwk
|
|
72
|
+
* @param {Usages} [usages]
|
|
73
|
+
* @param {boolean} [extractable]
|
|
74
|
+
*/
|
|
75
|
+
export const importKey = (jwk, usages, extractable = false) => {
|
|
76
|
+
if (usages == null) {
|
|
77
|
+
/* c8 ignore next */
|
|
78
|
+
usages = jwk.key_ops || defaultUsages
|
|
79
|
+
}
|
|
80
|
+
return webcrypto.subtle.importKey('jwk', jwk, 'AES-GCM', extractable, /** @type {Usages} */ (usages))
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @param {Uint8Array | string} data
|
|
85
|
+
*/
|
|
86
|
+
/* c8 ignore next */
|
|
87
|
+
const toBinary = data => typeof data === 'string' ? string.encodeUtf8(data) : data
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @experimental The API is not final!
|
|
91
|
+
*
|
|
92
|
+
* Derive an symmetric key using the Password-Based-Key-Derivation-Function-2.
|
|
93
|
+
*
|
|
94
|
+
* @param {Uint8Array|string} secret
|
|
95
|
+
* @param {Uint8Array|string} salt
|
|
96
|
+
* @param {Object} opts
|
|
97
|
+
* @param {boolean} [opts.extractable]
|
|
98
|
+
* @param {Usages} [opts.usages]
|
|
99
|
+
*/
|
|
100
|
+
export const deriveKey = (secret, salt, { extractable = false, usages = defaultUsages } = {}) => {
|
|
101
|
+
return webcrypto.subtle.importKey(
|
|
102
|
+
'raw',
|
|
103
|
+
toBinary(secret),
|
|
104
|
+
'PBKDF2',
|
|
105
|
+
false,
|
|
106
|
+
['deriveKey']
|
|
107
|
+
).then(keyMaterial =>
|
|
108
|
+
webcrypto.subtle.deriveKey(
|
|
109
|
+
{
|
|
110
|
+
name: 'PBKDF2',
|
|
111
|
+
salt: toBinary(salt), // NIST recommends at least 64 bits
|
|
112
|
+
iterations: 600000, // OWASP recommends 600k iterations
|
|
113
|
+
hash: 'SHA-256'
|
|
114
|
+
},
|
|
115
|
+
keyMaterial,
|
|
116
|
+
{
|
|
117
|
+
name: 'AES-GCM',
|
|
118
|
+
length: 256
|
|
119
|
+
},
|
|
120
|
+
extractable,
|
|
121
|
+
usages
|
|
122
|
+
)
|
|
123
|
+
)
|
|
124
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
2
|
+
export function sign(key: CryptoKey, data: Uint8Array): PromiseLike<Uint8Array>;
|
|
3
|
+
export function verify(key: CryptoKey, signature: Uint8Array, data: Uint8Array): PromiseLike<boolean>;
|
|
4
|
+
export function generateKeyPair({ extractable, usages }?: {
|
|
5
|
+
extractable?: boolean | undefined;
|
|
6
|
+
usages?: Usages | undefined;
|
|
7
|
+
}): Promise<CryptoKeyPair>;
|
|
8
|
+
export function importKey(jwk: any, { extractable, usages }?: {
|
|
9
|
+
extractable?: boolean | undefined;
|
|
10
|
+
usages?: Usages | undefined;
|
|
11
|
+
}): Promise<CryptoKey>;
|
|
12
|
+
export type Usages = Array<'sign' | 'verify'>;
|
|
13
|
+
//# sourceMappingURL=ecdsa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["ecdsa.js"],"names":[],"mappings":"AAkBO,+BAFI,SAAS,uBAInB;AAWM,0BAJI,SAAS,QACT,UAAU,GACT,YAAY,UAAU,CAAC,CAWlC;AAYM,4BALI,SAAS,aACT,UAAU,QACV,UAAU,GACT,YAAY,OAAO,CAAC,CAY/B;AAQM;IAHmB,WAAW;IACZ,MAAM;2BAU5B;AAQI,+BALI,GAAG;IAEY,WAAW;IACZ,MAAM;uBAQ9B;qBArFY,MAAM,MAAM,GAAC,QAAQ,CAAC"}
|
package/crypto/ecdsa.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ECDSA is an asymmetric key for signing
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as webcrypto from 'lib0/webcrypto'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {Array<'sign'|'verify'>} Usages
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {Usages}
|
|
13
|
+
*/
|
|
14
|
+
const defaultUsages = ['sign', 'verify']
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @param {CryptoKey} key
|
|
18
|
+
*/
|
|
19
|
+
export const exportKey = key => {
|
|
20
|
+
return webcrypto.subtle.exportKey('jwk', key)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @experimental The API is not final!
|
|
25
|
+
*
|
|
26
|
+
* Sign a message
|
|
27
|
+
*
|
|
28
|
+
* @param {CryptoKey} key
|
|
29
|
+
* @param {Uint8Array} data
|
|
30
|
+
* @return {PromiseLike<Uint8Array>} signature
|
|
31
|
+
*/
|
|
32
|
+
export const sign = (key, data) => {
|
|
33
|
+
return webcrypto.subtle.sign(
|
|
34
|
+
{
|
|
35
|
+
name: 'ECDSA',
|
|
36
|
+
hash: { name: 'SHA-384' }
|
|
37
|
+
},
|
|
38
|
+
key,
|
|
39
|
+
data
|
|
40
|
+
).then(signature => new Uint8Array(signature))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @experimental The API is not final!
|
|
45
|
+
*
|
|
46
|
+
* Sign a message
|
|
47
|
+
*
|
|
48
|
+
* @param {CryptoKey} key
|
|
49
|
+
* @param {Uint8Array} signature
|
|
50
|
+
* @param {Uint8Array} data
|
|
51
|
+
* @return {PromiseLike<boolean>} signature
|
|
52
|
+
*/
|
|
53
|
+
export const verify = (key, signature, data) => {
|
|
54
|
+
return webcrypto.subtle.verify(
|
|
55
|
+
{
|
|
56
|
+
name: 'ECDSA',
|
|
57
|
+
hash: { name: 'SHA-384' }
|
|
58
|
+
},
|
|
59
|
+
key,
|
|
60
|
+
signature,
|
|
61
|
+
data
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* c8 ignore next */
|
|
66
|
+
/**
|
|
67
|
+
* @param {Object} opts
|
|
68
|
+
* @param {boolean} [opts.extractable]
|
|
69
|
+
* @param {Usages} [opts.usages]
|
|
70
|
+
*/
|
|
71
|
+
export const generateKeyPair = ({ extractable = false, usages = defaultUsages } = {}) =>
|
|
72
|
+
webcrypto.subtle.generateKey(
|
|
73
|
+
{
|
|
74
|
+
name: 'ECDSA',
|
|
75
|
+
namedCurve: 'P-384'
|
|
76
|
+
},
|
|
77
|
+
extractable,
|
|
78
|
+
usages
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @param {any} jwk
|
|
83
|
+
* @param {Object} opts
|
|
84
|
+
* @param {boolean} [opts.extractable]
|
|
85
|
+
* @param {Usages} [opts.usages]
|
|
86
|
+
*/
|
|
87
|
+
export const importKey = (jwk, { extractable = false, usages } = {}) => {
|
|
88
|
+
if (usages == null) {
|
|
89
|
+
/* c8 ignore next */
|
|
90
|
+
usages = jwk.key_ops || defaultUsages
|
|
91
|
+
}
|
|
92
|
+
return webcrypto.subtle.importKey('jwk', jwk, { name: 'ECDSA', namedCurve: 'P-384' }, extractable, /** @type {Usages} */ (usages))
|
|
93
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function encrypt(key: CryptoKey, data: Uint8Array): Promise<any>;
|
|
2
|
+
export function decrypt(key: CryptoKey, data: Uint8Array): PromiseLike<Uint8Array>;
|
|
3
|
+
export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
4
|
+
export function generateKey({ extractable, usages }?: {
|
|
5
|
+
extractable?: boolean | undefined;
|
|
6
|
+
usages?: Usages | undefined;
|
|
7
|
+
}): Promise<CryptoKeyPair>;
|
|
8
|
+
export function importKey(jwk: any, { extractable, usages }?: {
|
|
9
|
+
extractable?: boolean | undefined;
|
|
10
|
+
usages?: Usages | undefined;
|
|
11
|
+
}): Promise<CryptoKey>;
|
|
12
|
+
export type Usages = Array<'encrypt' | 'decrypt'>;
|
|
13
|
+
//# sourceMappingURL=rsa-oaep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsa-oaep.d.ts","sourceRoot":"","sources":["rsa-oaep.js"],"names":[],"mappings":"AAqBO,6BAHI,SAAS,QACT,UAAU,gBASlB;AAWI,6BAJI,SAAS,QACT,UAAU,GACT,YAAY,UAAU,CAAC,CASG;AAK/B,+BAFI,SAAS,uBAGoB;AAOjC;IAHmB,WAAW;IACZ,MAAM;2BAY5B;AAQI,+BALI,GAAG;IAEY,WAAW;IACZ,MAAM;uBAQ9B;qBA5EY,MAAM,SAAS,GAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RSA-OAEP is an asymmetric keypair used for encryption
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as webcrypto from 'lib0/webcrypto'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {Array<'encrypt'|'decrypt'>} Usages
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {Usages}
|
|
13
|
+
*/
|
|
14
|
+
const defaultUsages = ['encrypt', 'decrypt']
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Note that the max data size is limited by the size of the RSA key.
|
|
18
|
+
*
|
|
19
|
+
* @param {CryptoKey} key
|
|
20
|
+
* @param {Uint8Array} data
|
|
21
|
+
*/
|
|
22
|
+
export const encrypt = (key, data) =>
|
|
23
|
+
webcrypto.subtle.encrypt(
|
|
24
|
+
{
|
|
25
|
+
name: 'RSA-OAEP'
|
|
26
|
+
},
|
|
27
|
+
key,
|
|
28
|
+
data
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @experimental The API is not final!
|
|
33
|
+
*
|
|
34
|
+
* Decrypt some data using AES-GCM method.
|
|
35
|
+
*
|
|
36
|
+
* @param {CryptoKey} key
|
|
37
|
+
* @param {Uint8Array} data
|
|
38
|
+
* @return {PromiseLike<Uint8Array>} decrypted buffer
|
|
39
|
+
*/
|
|
40
|
+
export const decrypt = (key, data) =>
|
|
41
|
+
webcrypto.subtle.decrypt(
|
|
42
|
+
{
|
|
43
|
+
name: 'RSA-OAEP'
|
|
44
|
+
},
|
|
45
|
+
key,
|
|
46
|
+
data
|
|
47
|
+
).then(data => new Uint8Array(data))
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @param {CryptoKey} key
|
|
51
|
+
*/
|
|
52
|
+
export const exportKey = key =>
|
|
53
|
+
webcrypto.subtle.exportKey('jwk', key)
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param {Object} opts
|
|
57
|
+
* @param {boolean} [opts.extractable]
|
|
58
|
+
* @param {Usages} [opts.usages]
|
|
59
|
+
*/
|
|
60
|
+
export const generateKey = ({ extractable = false, usages = defaultUsages } = {}) =>
|
|
61
|
+
webcrypto.subtle.generateKey(
|
|
62
|
+
{
|
|
63
|
+
name: 'RSA-OAEP',
|
|
64
|
+
modulusLength: 4096,
|
|
65
|
+
publicExponent: new Uint8Array([1, 0, 1]),
|
|
66
|
+
hash: 'SHA-256'
|
|
67
|
+
},
|
|
68
|
+
extractable,
|
|
69
|
+
usages
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @param {any} jwk
|
|
74
|
+
* @param {Object} opts
|
|
75
|
+
* @param {boolean} [opts.extractable]
|
|
76
|
+
* @param {Usages} [opts.usages]
|
|
77
|
+
*/
|
|
78
|
+
export const importKey = (jwk, { extractable = false, usages } = {}) => {
|
|
79
|
+
if (usages == null) {
|
|
80
|
+
/* c8 ignore next */
|
|
81
|
+
usages = jwk.key_ops || defaultUsages
|
|
82
|
+
}
|
|
83
|
+
return webcrypto.subtle.importKey('jwk', jwk, { name: 'RSA-OAEP', hash: 'SHA-256' }, extractable, /** @type {Usages} */ (usages))
|
|
84
|
+
}
|
package/crypto.test.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export function testEncryption(tc: t.TestCase): Promise<void>;
|
|
1
2
|
export function testReapeatEncryption(tc: t.TestCase): Promise<void>;
|
|
3
|
+
export function testImportExport(tc: t.TestCase): Promise<void>;
|
|
2
4
|
export function testEncryptionPerformance(tc: t.TestCase): Promise<void>;
|
|
3
5
|
export function testConsistentKeyGeneration(_tc: t.TestCase): Promise<void>;
|
|
4
6
|
export function testSigning(tc: t.TestCase): Promise<void>;
|
package/crypto.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["crypto.test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["crypto.test.js"],"names":[],"mappings":"AAUO,mCAFI,EAAE,QAAQ,iBAoCpB;AAKM,0CAFI,EAAE,QAAQ,iBA8BpB;AAKM,qCAFI,EAAE,QAAQ,iBAkCpB;AAKM,8CAFI,EAAE,QAAQ,iBAsCpB;AAKM,iDAFI,EAAE,QAAQ,iBA0EpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function encrypt(key: CryptoKey, data: Uint8Array): Promise<Uint8Array>;
|
|
2
|
+
export function decrypt(key: CryptoKey, data: Uint8Array): PromiseLike<Uint8Array>;
|
|
3
|
+
export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
4
|
+
export function importKey(jwk: any, usages?: Usages | undefined, extractable?: boolean | undefined): Promise<CryptoKey>;
|
|
5
|
+
export function deriveKey(secret: Uint8Array | string, salt: Uint8Array | string, { extractable, usages }?: {
|
|
6
|
+
extractable?: boolean | undefined;
|
|
7
|
+
usages?: Usages | undefined;
|
|
8
|
+
}): Promise<CryptoKey>;
|
|
9
|
+
export type Usages = Array<'encrypt' | 'decrypt'>;
|
|
10
|
+
//# sourceMappingURL=aes-gcm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../crypto/aes-gcm.js"],"names":[],"mappings":"AAsBO,6BAHI,SAAS,QACT,UAAU,uBAkBpB;AAWM,6BAJI,SAAS,QACT,UAAU,GACT,YAAY,UAAU,CAAC,CAclC;AAKM,+BAFI,SAAS,uBAGoB;AAOjC,+BAJI,GAAG,sFAUb;AAmBM,kCANI,UAAU,GAAC,MAAM,QACjB,UAAU,GAAC,MAAM;IAEF,WAAW;IACZ,MAAM;uBA0B9B;qBAjHY,MAAM,SAAS,GAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
2
|
+
export function sign(key: CryptoKey, data: Uint8Array): PromiseLike<Uint8Array>;
|
|
3
|
+
export function verify(key: CryptoKey, signature: Uint8Array, data: Uint8Array): PromiseLike<boolean>;
|
|
4
|
+
export function generateKeyPair({ extractable, usages }?: {
|
|
5
|
+
extractable?: boolean | undefined;
|
|
6
|
+
usages?: Usages | undefined;
|
|
7
|
+
}): Promise<CryptoKeyPair>;
|
|
8
|
+
export function importKey(jwk: any, { extractable, usages }?: {
|
|
9
|
+
extractable?: boolean | undefined;
|
|
10
|
+
usages?: Usages | undefined;
|
|
11
|
+
}): Promise<CryptoKey>;
|
|
12
|
+
export type Usages = Array<'sign' | 'verify'>;
|
|
13
|
+
//# sourceMappingURL=ecdsa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../crypto/ecdsa.js"],"names":[],"mappings":"AAkBO,+BAFI,SAAS,uBAInB;AAWM,0BAJI,SAAS,QACT,UAAU,GACT,YAAY,UAAU,CAAC,CAWlC;AAYM,4BALI,SAAS,aACT,UAAU,QACV,UAAU,GACT,YAAY,OAAO,CAAC,CAY/B;AAQM;IAHmB,WAAW;IACZ,MAAM;2BAU5B;AAQI,+BALI,GAAG;IAEY,WAAW;IACZ,MAAM;uBAQ9B;qBArFY,MAAM,MAAM,GAAC,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function encrypt(key: CryptoKey, data: Uint8Array): Promise<any>;
|
|
2
|
+
export function decrypt(key: CryptoKey, data: Uint8Array): PromiseLike<Uint8Array>;
|
|
3
|
+
export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
4
|
+
export function generateKey({ extractable, usages }?: {
|
|
5
|
+
extractable?: boolean | undefined;
|
|
6
|
+
usages?: Usages | undefined;
|
|
7
|
+
}): Promise<CryptoKeyPair>;
|
|
8
|
+
export function importKey(jwk: any, { extractable, usages }?: {
|
|
9
|
+
extractable?: boolean | undefined;
|
|
10
|
+
usages?: Usages | undefined;
|
|
11
|
+
}): Promise<CryptoKey>;
|
|
12
|
+
export type Usages = Array<'encrypt' | 'decrypt'>;
|
|
13
|
+
//# sourceMappingURL=rsa-oaep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsa-oaep.d.ts","sourceRoot":"","sources":["../../crypto/rsa-oaep.js"],"names":[],"mappings":"AAqBO,6BAHI,SAAS,QACT,UAAU,gBASlB;AAWI,6BAJI,SAAS,QACT,UAAU,GACT,YAAY,UAAU,CAAC,CASG;AAK/B,+BAFI,SAAS,uBAGoB;AAOjC;IAHmB,WAAW;IACZ,MAAM;2BAY5B;AAQI,+BALI,GAAG;IAEY,WAAW;IACZ,MAAM;uBAQ9B;qBA5EY,MAAM,SAAS,GAAC,SAAS,CAAC"}
|
package/dist/crypto.test.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export function testEncryption(tc: t.TestCase): Promise<void>;
|
|
1
2
|
export function testReapeatEncryption(tc: t.TestCase): Promise<void>;
|
|
3
|
+
export function testImportExport(tc: t.TestCase): Promise<void>;
|
|
2
4
|
export function testEncryptionPerformance(tc: t.TestCase): Promise<void>;
|
|
3
5
|
export function testConsistentKeyGeneration(_tc: t.TestCase): Promise<void>;
|
|
4
6
|
export function testSigning(tc: t.TestCase): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["../crypto.test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["../crypto.test.js"],"names":[],"mappings":"AAUO,mCAFI,EAAE,QAAQ,iBAoCpB;AAKM,0CAFI,EAAE,QAAQ,iBA8BpB;AAKM,qCAFI,EAAE,QAAQ,iBAkCpB;AAKM,8CAFI,EAAE,QAAQ,iBAsCpB;AAKM,iDAFI,EAAE,QAAQ,iBA0EpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB"}
|
package/dist/index.cjs
CHANGED
|
@@ -13,7 +13,7 @@ var environment = require('./environment-01c0e75b.cjs');
|
|
|
13
13
|
var error = require('./error-8582d695.cjs');
|
|
14
14
|
var eventloop = require('./eventloop-d0571621.cjs');
|
|
15
15
|
var _function = require('./function-35e8ddea.cjs');
|
|
16
|
-
var indexeddb = require('./indexeddb-
|
|
16
|
+
var indexeddb = require('./indexeddb-38ee46bd.cjs');
|
|
17
17
|
var iterator = require('./iterator-9fc627c1.cjs');
|
|
18
18
|
var json = require('./json-092190a1.cjs');
|
|
19
19
|
var logging = require('./logging-641c32f4.cjs');
|
|
@@ -17,8 +17,6 @@ const rtop = request => promise.create((resolve, reject) => {
|
|
|
17
17
|
// @ts-ignore
|
|
18
18
|
request.onerror = event => reject(new Error(event.target.error));
|
|
19
19
|
// @ts-ignore
|
|
20
|
-
request.onblocked = () => location.reload();
|
|
21
|
-
// @ts-ignore
|
|
22
20
|
request.onsuccess = event => resolve(event.target.result);
|
|
23
21
|
});
|
|
24
22
|
|
|
@@ -37,7 +35,6 @@ const openDB = (name, initDB) => promise.create((resolve, reject) => {
|
|
|
37
35
|
* @param {any} event
|
|
38
36
|
*/
|
|
39
37
|
request.onerror = event => reject(error.create(event.target.error));
|
|
40
|
-
request.onblocked = () => location.reload();
|
|
41
38
|
/**
|
|
42
39
|
* @param {any} event
|
|
43
40
|
*/
|
|
@@ -314,4 +311,4 @@ exports.put = put;
|
|
|
314
311
|
exports.queryFirst = queryFirst;
|
|
315
312
|
exports.rtop = rtop;
|
|
316
313
|
exports.transact = transact;
|
|
317
|
-
//# sourceMappingURL=indexeddb-
|
|
314
|
+
//# sourceMappingURL=indexeddb-38ee46bd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb-38ee46bd.cjs","sources":["../indexeddb.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Helpers to work with IndexedDB.\n *\n * @module indexeddb\n */\n\nimport * as promise from './promise.js'\nimport * as error from './error.js'\n\n/* c8 ignore start */\n\n/**\n * IDB Request to Promise transformer\n *\n * @param {IDBRequest} request\n * @return {Promise<any>}\n */\nexport const rtop = request => promise.create((resolve, reject) => {\n // @ts-ignore\n request.onerror = event => reject(new Error(event.target.error))\n // @ts-ignore\n request.onsuccess = event => resolve(event.target.result)\n})\n\n/**\n * @param {string} name\n * @param {function(IDBDatabase):any} initDB Called when the database is first created\n * @return {Promise<IDBDatabase>}\n */\nexport const openDB = (name, initDB) => promise.create((resolve, reject) => {\n const request = indexedDB.open(name)\n /**\n * @param {any} event\n */\n request.onupgradeneeded = event => initDB(event.target.result)\n /**\n * @param {any} event\n */\n request.onerror = event => reject(error.create(event.target.error))\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n /**\n * @type {IDBDatabase}\n */\n const db = event.target.result\n db.onversionchange = () => { db.close() }\n if (typeof addEventListener !== 'undefined') {\n addEventListener('unload', () => db.close())\n }\n resolve(db)\n }\n})\n\n/**\n * @param {string} name\n */\nexport const deleteDB = name => rtop(indexedDB.deleteDatabase(name))\n\n/**\n * @param {IDBDatabase} db\n * @param {Array<Array<string>|Array<string|IDBObjectStoreParameters|undefined>>} definitions\n */\nexport const createStores = (db, definitions) => definitions.forEach(d =>\n // @ts-ignore\n db.createObjectStore.apply(db, d)\n)\n\n/**\n * @param {IDBDatabase} db\n * @param {Array<string>} stores\n * @param {\"readwrite\"|\"readonly\"} [access]\n * @return {Array<IDBObjectStore>}\n */\nexport const transact = (db, stores, access = 'readwrite') => {\n const transaction = db.transaction(stores, access)\n return stores.map(store => getStore(transaction, store))\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<number>}\n */\nexport const count = (store, range) =>\n rtop(store.count(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | Array<any> } key\n * @return {Promise<String | number | ArrayBuffer | Date | Array<any>>}\n */\nexport const get = (store, key) =>\n rtop(store.get(key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array<any> } key\n */\nexport const del = (store, key) =>\n rtop(store.delete(key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} [key]\n */\nexport const put = (store, item, key) =>\n rtop(store.put(item, key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} key\n * @return {Promise<any>}\n */\nexport const add = (store, item, key) =>\n rtop(store.add(item, key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date} item\n * @return {Promise<number>} Returns the generated key\n */\nexport const addAutoKey = (store, item) =>\n rtop(store.add(item))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @param {number} [limit]\n * @return {Promise<Array<any>>}\n */\nexport const getAll = (store, range, limit) =>\n rtop(store.getAll(range, limit))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @param {number} [limit]\n * @return {Promise<Array<any>>}\n */\nexport const getAllKeys = (store, range, limit) =>\n rtop(store.getAllKeys(range, limit))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} query\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n * @return {Promise<any>}\n */\nexport const queryFirst = (store, query, direction) => {\n /**\n * @type {any}\n */\n let first = null\n return iterateKeys(store, query, key => {\n first = key\n return false\n }, direction).then(() => first)\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise<any>}\n */\nexport const getLastKey = (store, range = null) => queryFirst(store, range, 'prev')\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise<any>}\n */\nexport const getFirstKey = (store, range = null) => queryFirst(store, range, 'next')\n\n/**\n * @typedef KeyValuePair\n * @type {Object}\n * @property {any} k key\n * @property {any} v Value\n */\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @param {number} [limit]\n * @return {Promise<Array<KeyValuePair>>}\n */\nexport const getAllKeysValues = (store, range, limit) =>\n // @ts-ignore\n promise.all([getAllKeys(store, range, limit), getAll(store, range, limit)]).then(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] })))\n\n/**\n * @param {any} request\n * @param {function(IDBCursorWithValue):void|boolean|Promise<void|boolean>} f\n * @return {Promise<void>}\n */\nconst iterateOnRequest = (request, f) => promise.create((resolve, reject) => {\n request.onerror = reject\n /**\n * @param {any} event\n */\n request.onsuccess = async event => {\n const cursor = event.target.result\n if (cursor === null || (await f(cursor)) === false) {\n return resolve()\n }\n cursor.continue()\n }\n})\n\n/**\n * Iterate on keys and values\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any,any):void|boolean|Promise<void|boolean>} f Callback that receives (value, key)\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterate = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key))\n\n/**\n * Iterate on the keys (no values)\n *\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any):void|boolean|Promise<void|boolean>} f callback that receives the key\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterateKeys = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openKeyCursor(keyrange, direction), cursor => f(cursor.key))\n\n/**\n * Open store from transaction\n * @param {IDBTransaction} t\n * @param {String} store\n * @returns {IDBObjectStore}\n */\nexport const getStore = (t, store) => t.objectStore(store)\n\n/**\n * @param {any} lower\n * @param {any} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n\n/**\n * @param {any} upper\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen)\n\n/**\n * @param {any} lower\n * @param {boolean} lowerOpen\n */\nexport const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen)\n\n/* c8 ignore stop */\n"],"names":["promise.create","error.create","promise.all"],"mappings":"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"}
|
package/dist/indexeddb.cjs
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
require('./promise-a4f32c85.cjs');
|
|
6
6
|
require('./error-8582d695.cjs');
|
|
7
|
-
var indexeddb = require('./indexeddb-
|
|
7
|
+
var indexeddb = require('./indexeddb-38ee46bd.cjs');
|
|
8
8
|
require('./time-bc2081b9.cjs');
|
|
9
9
|
require('./metric.cjs');
|
|
10
10
|
require('./math-08e068f9.cjs');
|
package/dist/indexeddb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../indexeddb.js"],"names":[],"mappings":"AAmBO,8BAHI,UAAU,GACT,QAAQ,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../indexeddb.js"],"names":[],"mappings":"AAmBO,8BAHI,UAAU,GACT,QAAQ,GAAG,CAAC,CAOtB;AAOK,6BAJI,MAAM,iBACG,WAAW,KAAE,GAAG,GACxB,QAAQ,WAAW,CAAC,CA0B9B;AAKK,+BAFI,MAAM,gBAEmD;AAM7D,iCAHI,WAAW,eACX,MAAM,MAAM,MAAM,CAAC,GAAC,MAAM,MAAM,GAAC,wBAAwB,GAAC,SAAS,CAAC,CAAC,QAK/E;AAQM,6BALI,WAAW,UACX,MAAM,MAAM,CAAC,kDAEZ,MAAM,cAAc,CAAC,CAKhC;AAOM,6BAJI,cAAc,oCAEb,QAAQ,MAAM,CAAC,CAGD;AAOnB,2BAJI,cAAc,OACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAChD,QAAQ,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAGhD;AAMf,2BAHI,cAAc,OACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,MAAM,GAAG,CAAC,gBAGjD;AAOlB,2BAJI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,gFAI7B;AAQrB,2BALI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,OAC9C,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAChD,QAAQ,GAAG,CAAC,CAGI;AAOrB,kCAJI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GACnC,QAAQ,MAAM,CAAC,CAGJ;AAQhB,8BALI,cAAc,gEAGb,QAAQ,MAAM,GAAG,CAAC,CAAC,CAGG;AAQ3B,kCALI,cAAc,gEAGb,QAAQ,MAAM,GAAG,CAAC,CAAC,CAGO;AAQ/B,kCALI,cAAc,SACd,WAAW,GAAC,IAAI,aAChB,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,GACtC,QAAQ,GAAG,CAAC,CAWvB;AAOM,kCAJI,cAAc,2CAEb,QAAQ,GAAG,CAAC,CAE2D;AAO5E,mCAJI,cAAc,2CAEb,QAAQ,GAAG,CAAC,CAE4D;AAe7E,wCALI,cAAc,gEAGb,QAAQ,MAAM,YAAY,CAAC,CAAC,CAI6F;AA4B9H,+BALI,cAAc,YACd,WAAW,GAAC,IAAI,YACP,GAAG,QAAC,GAAG,KAAE,IAAI,GAAC,OAAO,GAAC,QAAQ,IAAI,GAAC,OAAO,CAAC,cACpD,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,iBAG8C;AAUzF,mCALI,cAAc,YACd,WAAW,GAAC,IAAI,YACP,GAAG,KAAE,IAAI,GAAC,OAAO,GAAC,QAAQ,IAAI,GAAC,OAAO,CAAC,cAChD,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,iBAGmC;AAQ9E,4BAJI,cAAc,kBAEZ,cAAc,CAE+B;AAQnD,8CALI,GAAG,SACH,GAAG,aACH,OAAO,aACP,OAAO,eAEiH;AAM5H,mDAHI,GAAG,aACH,OAAO,eAEuF;AAMlG,mDAHI,GAAG,aACH,OAAO,eAEuF;;;;;OAhF3F,GAAG;;;;OACH,GAAG"}
|
package/dist/indexeddb.test.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb.test.d.ts","sourceRoot":"","sources":["../indexeddb.test.js"],"names":[],"mappings":"AAyBO,sDAoEN"}
|
|
1
|
+
{"version":3,"file":"indexeddb.test.d.ts","sourceRoot":"","sources":["../indexeddb.test.js"],"names":[],"mappings":"AAyBO,sDAoEN;AAGM,6CAWN"}
|
package/dist/testing.cjs
CHANGED
|
@@ -561,6 +561,20 @@ const fails = f => {
|
|
|
561
561
|
fail('Expected this to fail');
|
|
562
562
|
};
|
|
563
563
|
|
|
564
|
+
/**
|
|
565
|
+
* @param {function():Promise<any>} f
|
|
566
|
+
* @throws {TestError}
|
|
567
|
+
*/
|
|
568
|
+
const failsAsync = async f => {
|
|
569
|
+
try {
|
|
570
|
+
await f();
|
|
571
|
+
} catch (_err) {
|
|
572
|
+
logging.print(logging.GREEN, '⇖ This Error was expected');
|
|
573
|
+
return
|
|
574
|
+
}
|
|
575
|
+
fail('Expected this to fail');
|
|
576
|
+
};
|
|
577
|
+
|
|
564
578
|
/**
|
|
565
579
|
* @param {Object<string, Object<string, function(TestCase):void|Promise<any>>>} tests
|
|
566
580
|
*/
|
|
@@ -645,6 +659,7 @@ exports.envSeed = envSeed;
|
|
|
645
659
|
exports.extensive = extensive;
|
|
646
660
|
exports.fail = fail;
|
|
647
661
|
exports.fails = fails;
|
|
662
|
+
exports.failsAsync = failsAsync;
|
|
648
663
|
exports.group = group;
|
|
649
664
|
exports.groupAsync = groupAsync;
|
|
650
665
|
exports.info = info;
|