@fireproof/core 0.7.0 → 0.7.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.
- package/dist/crypto.js +1 -1
- package/dist/encrypted-block.js +48 -0
- package/dist/src/fireproof.js +3 -0
- package/dist/src/fireproof.js.map +1 -1
- package/dist/src/fireproof.mjs +3 -0
- package/dist/src/fireproof.mjs.map +1 -1
- package/dist/storage/base.js +2 -1
- package/package.json +2 -2
- package/src/crypto.js +1 -1
- package/src/encrypted-block.js +57 -0
- package/src/storage/base.js +2 -1
package/dist/crypto.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
// @ts-nocheck
|
2
|
-
import * as codec from 'encrypted-block';
|
2
|
+
import * as codec from './encrypted-block.js';
|
3
3
|
import { create, load } from 'prolly-trees/cid-set';
|
4
4
|
import { CID } from 'multiformats';
|
5
5
|
import { encode, decode, create as mfCreate } from 'multiformats/block';
|
@@ -0,0 +1,48 @@
|
|
1
|
+
// from https://github.com/mikeal/encrypted-block
|
2
|
+
import randomBytes from 'randombytes';
|
3
|
+
import aes from 'js-crypto-aes';
|
4
|
+
import { CID } from 'multiformats';
|
5
|
+
const enc32 = value => {
|
6
|
+
value = +value;
|
7
|
+
const buff = new Uint8Array(4);
|
8
|
+
buff[3] = (value >>> 24);
|
9
|
+
buff[2] = (value >>> 16);
|
10
|
+
buff[1] = (value >>> 8);
|
11
|
+
buff[0] = (value & 0xff);
|
12
|
+
return buff;
|
13
|
+
};
|
14
|
+
const readUInt32LE = (buffer) => {
|
15
|
+
const offset = buffer.byteLength - 4;
|
16
|
+
return ((buffer[offset]) |
|
17
|
+
(buffer[offset + 1] << 8) |
|
18
|
+
(buffer[offset + 2] << 16)) +
|
19
|
+
(buffer[offset + 3] * 0x1000000);
|
20
|
+
};
|
21
|
+
const encode = ({ iv, bytes }) => concat([iv, bytes]);
|
22
|
+
const decode = bytes => {
|
23
|
+
const iv = bytes.subarray(0, 12);
|
24
|
+
bytes = bytes.slice(12);
|
25
|
+
return { iv, bytes };
|
26
|
+
};
|
27
|
+
const code = 0x300000 + 1337;
|
28
|
+
const concat = buffers => Uint8Array.from(buffers.map(b => [...b]).flat());
|
29
|
+
const decrypt = async ({ key, value }) => {
|
30
|
+
let { bytes, iv } = value;
|
31
|
+
bytes = await aes.decrypt(bytes, key, { name: 'AES-GCM', iv, tagLength: 16 });
|
32
|
+
const len = readUInt32LE(bytes.subarray(0, 4));
|
33
|
+
const cid = CID.decode(bytes.subarray(4, 4 + len));
|
34
|
+
bytes = bytes.subarray(4 + len);
|
35
|
+
return { cid, bytes };
|
36
|
+
};
|
37
|
+
const encrypt = async ({ key, cid, bytes }) => {
|
38
|
+
const len = enc32(cid.bytes.byteLength);
|
39
|
+
const iv = randomBytes(12);
|
40
|
+
const msg = concat([len, cid.bytes, bytes]);
|
41
|
+
bytes = await aes.encrypt(msg, key, { name: 'AES-GCM', iv, tagLength: 16 });
|
42
|
+
return { value: { bytes, iv } };
|
43
|
+
};
|
44
|
+
const crypto = key => {
|
45
|
+
return { encrypt: opts => encrypt({ key, ...opts }), decrypt: opts => decrypt({ key, ...opts }) };
|
46
|
+
};
|
47
|
+
const name = 'mikeal@encrypted-block:aes-gcm';
|
48
|
+
export { encode, decode, code, name, encrypt, decrypt, crypto };
|
package/dist/src/fireproof.js
CHANGED
@@ -38649,6 +38649,8 @@ aes$2.unwrapKey = unwrapKey;
|
|
38649
38649
|
|
38650
38650
|
var aes = /*@__PURE__*/getDefaultExportFromCjs(dist$1);
|
38651
38651
|
|
38652
|
+
// from https://github.com/mikeal/encrypted-block
|
38653
|
+
|
38652
38654
|
const enc32 = value => {
|
38653
38655
|
value = +value;
|
38654
38656
|
const buff = new Uint8Array(4);
|
@@ -38939,6 +38941,7 @@ class Base {
|
|
38939
38941
|
const got = await reader.get(cid);
|
38940
38942
|
let useCodec = codec;
|
38941
38943
|
if (cid.toString().indexOf('bafy') === 0) {
|
38944
|
+
// @ts-ignore
|
38942
38945
|
useCodec = codec$1; // todo this is a dirty check
|
38943
38946
|
}
|
38944
38947
|
const decoded = await decode$5({
|