@dxos/crypto 0.1.13 → 0.1.14
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/lib/browser/index.mjs +108 -0
- package/dist/lib/browser/index.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -0
- package/dist/lib/node/index.cjs +159 -0
- package/dist/lib/node/index.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -0
- package/dist/{src → types/src}/browser/subtle.d.ts +0 -0
- package/dist/types/src/browser/subtle.d.ts.map +1 -0
- package/dist/{src → types/src}/encrypt.d.ts +0 -0
- package/dist/types/src/encrypt.d.ts.map +1 -0
- package/dist/{src → types/src}/encrypt.test.d.ts +0 -0
- package/dist/{src → types/src}/encrypt.test.d.ts.map +1 -1
- package/dist/{src → types/src}/hash.d.ts +0 -0
- package/dist/types/src/hash.d.ts.map +1 -0
- package/dist/{src → types/src}/hash.test.d.ts +0 -0
- package/dist/{src → types/src}/hash.test.d.ts.map +1 -1
- package/dist/{src → types/src}/index.d.ts +0 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/{src → types/src}/keys.d.ts +0 -0
- package/dist/types/src/keys.d.ts.map +1 -0
- package/dist/{src → types/src}/keys.test.d.ts +0 -0
- package/dist/{src → types/src}/keys.test.d.ts.map +1 -1
- package/dist/{src → types/src}/signer.d.ts +0 -0
- package/dist/types/src/signer.d.ts.map +1 -0
- package/dist/{src → types/src}/subtle.d.ts +0 -0
- package/dist/types/src/subtle.d.ts.map +1 -0
- package/dist/{src → types/src}/validator.d.ts +0 -0
- package/dist/types/src/validator.d.ts.map +1 -0
- package/dist/{src → types/src}/verify.d.ts +0 -0
- package/dist/types/src/verify.d.ts.map +1 -0
- package/package.json +7 -10
- package/src/encrypt.test.ts +3 -1
- package/src/hash.test.ts +6 -4
- package/src/keys.test.ts +3 -1
- package/dist/src/browser/subtle.d.ts.map +0 -1
- package/dist/src/browser/subtle.js +0 -9
- package/dist/src/browser/subtle.js.map +0 -1
- package/dist/src/encrypt.d.ts.map +0 -1
- package/dist/src/encrypt.js +0 -40
- package/dist/src/encrypt.js.map +0 -1
- package/dist/src/encrypt.test.js +0 -45
- package/dist/src/encrypt.test.js.map +0 -1
- package/dist/src/hash.d.ts.map +0 -1
- package/dist/src/hash.js +0 -46
- package/dist/src/hash.js.map +0 -1
- package/dist/src/hash.test.js +0 -26
- package/dist/src/hash.test.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -27
- package/dist/src/index.js.map +0 -1
- package/dist/src/keys.d.ts.map +0 -1
- package/dist/src/keys.js +0 -70
- package/dist/src/keys.js.map +0 -1
- package/dist/src/keys.test.js +0 -11
- package/dist/src/keys.test.js.map +0 -1
- package/dist/src/signer.d.ts.map +0 -1
- package/dist/src/signer.js +0 -6
- package/dist/src/signer.js.map +0 -1
- package/dist/src/subtle.d.ts.map +0 -1
- package/dist/src/subtle.js +0 -32
- package/dist/src/subtle.js.map +0 -1
- package/dist/src/validator.d.ts.map +0 -1
- package/dist/src/validator.js +0 -15
- package/dist/src/validator.js.map +0 -1
- package/dist/src/verify.d.ts.map +0 -1
- package/dist/src/verify.js +0 -28
- package/dist/src/verify.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// packages/common/crypto/src/encrypt.ts
|
|
2
|
+
import CryptoJS from "crypto-js";
|
|
3
|
+
import assert from "@dxos/node-std/assert";
|
|
4
|
+
var encrypt = (plaintext, passphrase, cipher = "AES") => {
|
|
5
|
+
assert(typeof passphrase === "string");
|
|
6
|
+
assert(typeof cipher === "string");
|
|
7
|
+
return CryptoJS[cipher].encrypt(plaintext, passphrase).toString();
|
|
8
|
+
};
|
|
9
|
+
var decrypt = (ciphertext, passphrase, cipher = "AES") => {
|
|
10
|
+
assert(typeof ciphertext === "string");
|
|
11
|
+
assert(typeof passphrase === "string");
|
|
12
|
+
assert(typeof cipher === "string");
|
|
13
|
+
const bytes = CryptoJS[cipher].decrypt(ciphertext, passphrase);
|
|
14
|
+
return bytes.toString(CryptoJS.enc.Utf8);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/common/crypto/src/hash.ts
|
|
18
|
+
import CryptoJS2 from "crypto-js";
|
|
19
|
+
import assert2 from "@dxos/node-std/assert";
|
|
20
|
+
var _hash = (algorithm, plaintext) => {
|
|
21
|
+
assert2(typeof algorithm === "string");
|
|
22
|
+
assert2(typeof plaintext === "string");
|
|
23
|
+
return CryptoJS2[algorithm](plaintext).toString();
|
|
24
|
+
};
|
|
25
|
+
var sha1 = (text) => _hash("SHA1", text);
|
|
26
|
+
var sha256 = (text) => _hash("SHA256", text);
|
|
27
|
+
var sha512 = (text) => _hash("SHA512", text);
|
|
28
|
+
var ripemd160 = (text) => _hash("RIPEMD160", text);
|
|
29
|
+
|
|
30
|
+
// packages/common/crypto/src/keys.ts
|
|
31
|
+
import crypto2 from "hypercore-crypto";
|
|
32
|
+
import assert3 from "@dxos/node-std/assert";
|
|
33
|
+
import { PublicKey, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from "@dxos/keys";
|
|
34
|
+
var createId = () => PublicKey.stringify(randomBytes(32));
|
|
35
|
+
var SIGNATURE_LENGTH = 64;
|
|
36
|
+
var zeroKey = () => new Uint8Array(32);
|
|
37
|
+
var createKeyPair = (seed) => {
|
|
38
|
+
if (seed) {
|
|
39
|
+
assert3(seed.length >= 32, "Seedphrase too sort. Expecting length of 32.");
|
|
40
|
+
return crypto2.keyPair(seed.slice(0, 32));
|
|
41
|
+
}
|
|
42
|
+
return crypto2.keyPair();
|
|
43
|
+
};
|
|
44
|
+
var validateKeyPair = (publicKey, secretKey) => crypto2.validateKeyPair({
|
|
45
|
+
publicKey: publicKey.asBuffer(),
|
|
46
|
+
secretKey
|
|
47
|
+
});
|
|
48
|
+
var discoveryKey = (key) => crypto2.discoveryKey(PublicKey.from(key).asBuffer().slice(1));
|
|
49
|
+
var randomBytes = (length = 32) => crypto2.randomBytes(length);
|
|
50
|
+
var sign = (message, secretKey) => {
|
|
51
|
+
assert3(Buffer.isBuffer(message));
|
|
52
|
+
assert3(Buffer.isBuffer(secretKey) && secretKey.length === SECRET_KEY_LENGTH);
|
|
53
|
+
return crypto2.sign(message, secretKey);
|
|
54
|
+
};
|
|
55
|
+
var verify = (message, signature, publicKey) => {
|
|
56
|
+
assert3(Buffer.isBuffer(message));
|
|
57
|
+
assert3(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);
|
|
58
|
+
assert3(Buffer.isBuffer(publicKey) && publicKey.length === PUBLIC_KEY_LENGTH);
|
|
59
|
+
return crypto2.verify(message, signature, publicKey);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// packages/common/crypto/src/browser/subtle.ts
|
|
63
|
+
var subtleCrypto = crypto.subtle;
|
|
64
|
+
|
|
65
|
+
// packages/common/crypto/src/validator.ts
|
|
66
|
+
import { verify as verify2 } from "hypercore-crypto";
|
|
67
|
+
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
68
|
+
var getSignatureValidator = (publicKey) => (message, signature) => verify2(message, signature, PublicKey2.bufferize(publicKey));
|
|
69
|
+
|
|
70
|
+
// packages/common/crypto/src/verify.ts
|
|
71
|
+
var verifySignature = async (key, message, signature) => {
|
|
72
|
+
let publicKey;
|
|
73
|
+
try {
|
|
74
|
+
publicKey = await subtleCrypto.importKey("raw", key.asUint8Array(), {
|
|
75
|
+
name: "ECDSA",
|
|
76
|
+
namedCurve: "P-256"
|
|
77
|
+
}, true, [
|
|
78
|
+
"verify"
|
|
79
|
+
]);
|
|
80
|
+
} catch (e) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return subtleCrypto.verify({
|
|
84
|
+
name: "ECDSA",
|
|
85
|
+
hash: "SHA-256"
|
|
86
|
+
}, publicKey, signature, message);
|
|
87
|
+
};
|
|
88
|
+
export {
|
|
89
|
+
SIGNATURE_LENGTH,
|
|
90
|
+
createId,
|
|
91
|
+
createKeyPair,
|
|
92
|
+
decrypt,
|
|
93
|
+
discoveryKey,
|
|
94
|
+
encrypt,
|
|
95
|
+
getSignatureValidator,
|
|
96
|
+
randomBytes,
|
|
97
|
+
ripemd160,
|
|
98
|
+
sha1,
|
|
99
|
+
sha256,
|
|
100
|
+
sha512,
|
|
101
|
+
sign,
|
|
102
|
+
subtleCrypto,
|
|
103
|
+
validateKeyPair,
|
|
104
|
+
verify,
|
|
105
|
+
verifySignature,
|
|
106
|
+
zeroKey
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/encrypt.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/hash.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/keys.ts", "../../../src/browser/home/runner/work/dxos/dxos/packages/common/crypto/src/browser/subtle.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/validator.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/verify.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nimport CryptoJS from 'crypto-js';\nimport assert from 'node:assert';\n\n/**\n * Encrypt string plaintext to a base64-encoded string ciphertext.\n * @param plaintext\n * @param passphrase\n * @param cipher see https://cryptojs.gitbook.io/docs/#ciphers\n * @returns ciphertext\n */\nexport const encrypt = (plaintext: string, passphrase: string, cipher = 'AES') => {\n assert(typeof passphrase === 'string');\n assert(typeof cipher === 'string');\n\n return (CryptoJS as any)[cipher].encrypt(plaintext, passphrase).toString();\n};\n\n/**\n * Decrypt from a base64-encoded string ciphertext to string plaintext.\n * @param ciphertext\n * @param passphrase\n * @param cipher see https://cryptojs.gitbook.io/docs/#ciphers\n * @returns plaintext\n */\nexport const decrypt = (ciphertext: string, passphrase: string, cipher = 'AES') => {\n assert(typeof ciphertext === 'string');\n assert(typeof passphrase === 'string');\n assert(typeof cipher === 'string');\n\n const bytes = (CryptoJS as any)[cipher].decrypt(ciphertext, passphrase);\n return bytes.toString(CryptoJS.enc.Utf8);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport CryptoJS from 'crypto-js';\nimport assert from 'node:assert';\n\n/**\n *\n * @param algorithm\n * @param plaintext\n */\nconst _hash = (algorithm: string, plaintext: string): string => {\n assert(typeof algorithm === 'string');\n assert(typeof plaintext === 'string');\n\n return (CryptoJS as any)[algorithm](plaintext).toString();\n};\n\n/**\n * Creates a SHA-1 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const sha1 = (text: string) => _hash('SHA1', text);\n\n/**\n * Creates a SHA-256 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const sha256 = (text: string) => _hash('SHA256', text);\n\n/**\n * Creates a SHA-512 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const sha512 = (text: string) => _hash('SHA512', text);\n\n/**\n * Creates a SHA-512 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const ripemd160 = (text: string) => _hash('RIPEMD160', text);\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport crypto from 'hypercore-crypto';\nimport assert from 'node:assert';\n\nimport { KeyPair, PublicKey, PublicKeyLike, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from '@dxos/keys';\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove.\nexport const createId = (): string => PublicKey.stringify(randomBytes(32));\n\nexport const SIGNATURE_LENGTH = 64;\n\nexport const zeroKey = () => new Uint8Array(32); // TODO(burdon): Remove?\n\nexport const createKeyPair = (seed?: Buffer): KeyPair => {\n if (seed) {\n assert(seed.length >= 32, 'Seedphrase too sort. Expecting length of 32.');\n return crypto.keyPair(seed.slice(0, 32));\n }\n\n // TODO(burdon): Enable seed for debugging.\n return crypto.keyPair();\n};\n\n// TODO(burdon): Buffer.\nexport const validateKeyPair = (publicKey: PublicKey, secretKey: Buffer) =>\n crypto.validateKeyPair({ publicKey: publicKey.asBuffer(), secretKey });\n\n// TODO(dmaretskyi): Slicing because webcrypto keys are too long.\nexport const discoveryKey = (key: PublicKeyLike): Buffer =>\n crypto.discoveryKey(PublicKey.from(key).asBuffer().slice(1));\n\n/**\n * Return random bytes of length.\n * @param [length=32]\n * @return {Buffer}\n */\nexport const randomBytes = (length = 32): Buffer => crypto.randomBytes(length);\n\n/**\n * Sign the contents of message with secret_key\n * @param {Buffer} message\n * @param {Buffer} secretKey\n * @returns {Buffer} signature\n */\nexport const sign = (message: Buffer, secretKey: Buffer): Buffer => {\n assert(Buffer.isBuffer(message));\n assert(Buffer.isBuffer(secretKey) && secretKey.length === SECRET_KEY_LENGTH);\n\n return crypto.sign(message, secretKey);\n};\n\n/**\n * Verifies the signature against the message and public_key.\n * @param {Buffer} message\n * @param {Buffer} publicKey\n * @param {Buffer} signature\n * @return {boolean}\n */\nexport const verify = (message: Buffer, signature: Buffer, publicKey: Buffer): boolean => {\n assert(Buffer.isBuffer(message));\n assert(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);\n assert(Buffer.isBuffer(publicKey) && publicKey.length === PUBLIC_KEY_LENGTH);\n\n return crypto.verify(message, signature, publicKey);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\n// Replacement implementation for the browser (see package.json).\n\nexport const subtleCrypto = crypto.subtle;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { verify } from 'hypercore-crypto';\n\nimport { PublicKey } from '@dxos/keys';\n\n/**\n * Generator for signature validation function.\n * @param {String} publicKey\n */\nexport const getSignatureValidator = (publicKey: string) => (message: Buffer, signature: Buffer) =>\n verify(message, signature, PublicKey.bufferize(publicKey));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { subtleCrypto } from './subtle';\n\n/**\n * Verify a signature with the given key.\n */\nexport const verifySignature = async (key: PublicKey, message: Uint8Array, signature: Uint8Array): Promise<boolean> => {\n let publicKey!: CryptoKey;\n\n try {\n publicKey = await subtleCrypto.importKey(\n 'raw',\n key.asUint8Array(),\n {\n name: 'ECDSA',\n namedCurve: 'P-256'\n },\n true,\n ['verify']\n );\n } catch {\n return false;\n }\n\n return subtleCrypto.verify(\n {\n name: 'ECDSA',\n hash: 'SHA-256'\n },\n publicKey,\n signature,\n message\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CryptoJS", "assert", "encrypt", "plaintext", "passphrase", "cipher", "toString", "decrypt", "ciphertext", "bytes", "enc", "Utf8", "CryptoJS", "assert", "_hash", "algorithm", "plaintext", "toString", "sha1", "text", "sha256", "sha512", "ripemd160", "crypto", "assert", "PublicKey", "PUBLIC_KEY_LENGTH", "SECRET_KEY_LENGTH", "createId", "stringify", "randomBytes", "SIGNATURE_LENGTH", "zeroKey", "Uint8Array", "createKeyPair", "seed", "length", "keyPair", "slice", "validateKeyPair", "publicKey", "secretKey", "asBuffer", "discoveryKey", "key", "from", "sign", "message", "Buffer", "isBuffer", "verify", "signature", "subtleCrypto", "crypto", "subtle", "verify", "PublicKey", "getSignatureValidator", "publicKey", "message", "signature", "bufferize", "verifySignature", "key", "message", "signature", "publicKey", "subtleCrypto", "importKey", "asUint8Array", "name", "namedCurve", "verify", "hash"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"packages/common/crypto/src/encrypt.ts":{"bytes":3657,"imports":[]},"packages/common/crypto/src/hash.ts":{"bytes":3446,"imports":[]},"packages/common/crypto/src/keys.ts":{"bytes":7332,"imports":[]},"packages/common/crypto/src/signer.ts":{"bytes":728,"imports":[]},"packages/common/crypto/src/browser/subtle.ts":{"bytes":745,"imports":[]},"packages/common/crypto/src/validator.ts":{"bytes":1460,"imports":[]},"packages/common/crypto/src/verify.ts":{"bytes":2448,"imports":[{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement"}]},"packages/common/crypto/src/index.ts":{"bytes":946,"imports":[{"path":"packages/common/crypto/src/encrypt.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/hash.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/keys.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/signer.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/validator.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/verify.ts","kind":"import-statement"}]}},"outputs":{"packages/common/crypto/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9494},"packages/common/crypto/dist/lib/browser/index.mjs":{"imports":[],"exports":["SIGNATURE_LENGTH","createId","createKeyPair","decrypt","discoveryKey","encrypt","getSignatureValidator","randomBytes","ripemd160","sha1","sha256","sha512","sign","subtleCrypto","validateKeyPair","verify","verifySignature","zeroKey"],"entryPoint":"packages/common/crypto/src/index.ts","inputs":{"packages/common/crypto/src/encrypt.ts":{"bytesInOutput":584},"packages/common/crypto/src/index.ts":{"bytesInOutput":0},"packages/common/crypto/src/hash.ts":{"bytesInOutput":446},"packages/common/crypto/src/keys.ts":{"bytesInOutput":1285},"packages/common/crypto/src/browser/subtle.ts":{"bytesInOutput":34},"packages/common/crypto/src/validator.ts":{"bytesInOutput":237},"packages/common/crypto/src/verify.ts":{"bytesInOutput":391}},"bytes":3527}}}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
|
|
26
|
+
// packages/common/crypto/src/index.ts
|
|
27
|
+
var src_exports = {};
|
|
28
|
+
__export(src_exports, {
|
|
29
|
+
SIGNATURE_LENGTH: () => SIGNATURE_LENGTH,
|
|
30
|
+
createId: () => createId,
|
|
31
|
+
createKeyPair: () => createKeyPair,
|
|
32
|
+
decrypt: () => decrypt,
|
|
33
|
+
discoveryKey: () => discoveryKey,
|
|
34
|
+
encrypt: () => encrypt,
|
|
35
|
+
getSignatureValidator: () => getSignatureValidator,
|
|
36
|
+
randomBytes: () => randomBytes,
|
|
37
|
+
ripemd160: () => ripemd160,
|
|
38
|
+
sha1: () => sha1,
|
|
39
|
+
sha256: () => sha256,
|
|
40
|
+
sha512: () => sha512,
|
|
41
|
+
sign: () => sign,
|
|
42
|
+
subtleCrypto: () => subtleCrypto,
|
|
43
|
+
validateKeyPair: () => validateKeyPair,
|
|
44
|
+
verify: () => verify,
|
|
45
|
+
verifySignature: () => verifySignature,
|
|
46
|
+
zeroKey: () => zeroKey
|
|
47
|
+
});
|
|
48
|
+
module.exports = __toCommonJS(src_exports);
|
|
49
|
+
|
|
50
|
+
// packages/common/crypto/src/encrypt.ts
|
|
51
|
+
var import_crypto_js = __toESM(require("crypto-js"));
|
|
52
|
+
var import_node_assert = __toESM(require("node:assert"));
|
|
53
|
+
var encrypt = (plaintext, passphrase, cipher = "AES") => {
|
|
54
|
+
(0, import_node_assert.default)(typeof passphrase === "string");
|
|
55
|
+
(0, import_node_assert.default)(typeof cipher === "string");
|
|
56
|
+
return import_crypto_js.default[cipher].encrypt(plaintext, passphrase).toString();
|
|
57
|
+
};
|
|
58
|
+
var decrypt = (ciphertext, passphrase, cipher = "AES") => {
|
|
59
|
+
(0, import_node_assert.default)(typeof ciphertext === "string");
|
|
60
|
+
(0, import_node_assert.default)(typeof passphrase === "string");
|
|
61
|
+
(0, import_node_assert.default)(typeof cipher === "string");
|
|
62
|
+
const bytes = import_crypto_js.default[cipher].decrypt(ciphertext, passphrase);
|
|
63
|
+
return bytes.toString(import_crypto_js.default.enc.Utf8);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// packages/common/crypto/src/hash.ts
|
|
67
|
+
var import_crypto_js2 = __toESM(require("crypto-js"));
|
|
68
|
+
var import_node_assert2 = __toESM(require("node:assert"));
|
|
69
|
+
var _hash = (algorithm, plaintext) => {
|
|
70
|
+
(0, import_node_assert2.default)(typeof algorithm === "string");
|
|
71
|
+
(0, import_node_assert2.default)(typeof plaintext === "string");
|
|
72
|
+
return import_crypto_js2.default[algorithm](plaintext).toString();
|
|
73
|
+
};
|
|
74
|
+
var sha1 = (text) => _hash("SHA1", text);
|
|
75
|
+
var sha256 = (text) => _hash("SHA256", text);
|
|
76
|
+
var sha512 = (text) => _hash("SHA512", text);
|
|
77
|
+
var ripemd160 = (text) => _hash("RIPEMD160", text);
|
|
78
|
+
|
|
79
|
+
// packages/common/crypto/src/keys.ts
|
|
80
|
+
var import_hypercore_crypto = __toESM(require("hypercore-crypto"));
|
|
81
|
+
var import_node_assert3 = __toESM(require("node:assert"));
|
|
82
|
+
var import_keys = require("@dxos/keys");
|
|
83
|
+
var createId = () => import_keys.PublicKey.stringify(randomBytes(32));
|
|
84
|
+
var SIGNATURE_LENGTH = 64;
|
|
85
|
+
var zeroKey = () => new Uint8Array(32);
|
|
86
|
+
var createKeyPair = (seed) => {
|
|
87
|
+
if (seed) {
|
|
88
|
+
(0, import_node_assert3.default)(seed.length >= 32, "Seedphrase too sort. Expecting length of 32.");
|
|
89
|
+
return import_hypercore_crypto.default.keyPair(seed.slice(0, 32));
|
|
90
|
+
}
|
|
91
|
+
return import_hypercore_crypto.default.keyPair();
|
|
92
|
+
};
|
|
93
|
+
var validateKeyPair = (publicKey, secretKey) => import_hypercore_crypto.default.validateKeyPair({
|
|
94
|
+
publicKey: publicKey.asBuffer(),
|
|
95
|
+
secretKey
|
|
96
|
+
});
|
|
97
|
+
var discoveryKey = (key) => import_hypercore_crypto.default.discoveryKey(import_keys.PublicKey.from(key).asBuffer().slice(1));
|
|
98
|
+
var randomBytes = (length = 32) => import_hypercore_crypto.default.randomBytes(length);
|
|
99
|
+
var sign = (message, secretKey) => {
|
|
100
|
+
(0, import_node_assert3.default)(Buffer.isBuffer(message));
|
|
101
|
+
(0, import_node_assert3.default)(Buffer.isBuffer(secretKey) && secretKey.length === import_keys.SECRET_KEY_LENGTH);
|
|
102
|
+
return import_hypercore_crypto.default.sign(message, secretKey);
|
|
103
|
+
};
|
|
104
|
+
var verify = (message, signature, publicKey) => {
|
|
105
|
+
(0, import_node_assert3.default)(Buffer.isBuffer(message));
|
|
106
|
+
(0, import_node_assert3.default)(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);
|
|
107
|
+
(0, import_node_assert3.default)(Buffer.isBuffer(publicKey) && publicKey.length === import_keys.PUBLIC_KEY_LENGTH);
|
|
108
|
+
return import_hypercore_crypto.default.verify(message, signature, publicKey);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// packages/common/crypto/src/subtle.ts
|
|
112
|
+
var nodeCrypto = __toESM(require("node:crypto"));
|
|
113
|
+
var subtleCrypto = nodeCrypto.webcrypto.subtle;
|
|
114
|
+
|
|
115
|
+
// packages/common/crypto/src/validator.ts
|
|
116
|
+
var import_hypercore_crypto2 = require("hypercore-crypto");
|
|
117
|
+
var import_keys2 = require("@dxos/keys");
|
|
118
|
+
var getSignatureValidator = (publicKey) => (message, signature) => (0, import_hypercore_crypto2.verify)(message, signature, import_keys2.PublicKey.bufferize(publicKey));
|
|
119
|
+
|
|
120
|
+
// packages/common/crypto/src/verify.ts
|
|
121
|
+
var verifySignature = async (key, message, signature) => {
|
|
122
|
+
let publicKey;
|
|
123
|
+
try {
|
|
124
|
+
publicKey = await subtleCrypto.importKey("raw", key.asUint8Array(), {
|
|
125
|
+
name: "ECDSA",
|
|
126
|
+
namedCurve: "P-256"
|
|
127
|
+
}, true, [
|
|
128
|
+
"verify"
|
|
129
|
+
]);
|
|
130
|
+
} catch (e) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
return subtleCrypto.verify({
|
|
134
|
+
name: "ECDSA",
|
|
135
|
+
hash: "SHA-256"
|
|
136
|
+
}, publicKey, signature, message);
|
|
137
|
+
};
|
|
138
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
139
|
+
0 && (module.exports = {
|
|
140
|
+
SIGNATURE_LENGTH,
|
|
141
|
+
createId,
|
|
142
|
+
createKeyPair,
|
|
143
|
+
decrypt,
|
|
144
|
+
discoveryKey,
|
|
145
|
+
encrypt,
|
|
146
|
+
getSignatureValidator,
|
|
147
|
+
randomBytes,
|
|
148
|
+
ripemd160,
|
|
149
|
+
sha1,
|
|
150
|
+
sha256,
|
|
151
|
+
sha512,
|
|
152
|
+
sign,
|
|
153
|
+
subtleCrypto,
|
|
154
|
+
validateKeyPair,
|
|
155
|
+
verify,
|
|
156
|
+
verifySignature,
|
|
157
|
+
zeroKey
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/index.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/encrypt.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/hash.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/keys.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/subtle.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/validator.ts", "../../../src/home/runner/work/dxos/dxos/packages/common/crypto/src/verify.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from './encrypt';\nexport * from './hash';\nexport * from './keys';\nexport * from './signer';\nexport * from './subtle';\nexport * from './validator';\nexport * from './verify';\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport CryptoJS from 'crypto-js';\nimport assert from 'node:assert';\n\n/**\n * Encrypt string plaintext to a base64-encoded string ciphertext.\n * @param plaintext\n * @param passphrase\n * @param cipher see https://cryptojs.gitbook.io/docs/#ciphers\n * @returns ciphertext\n */\nexport const encrypt = (plaintext: string, passphrase: string, cipher = 'AES') => {\n assert(typeof passphrase === 'string');\n assert(typeof cipher === 'string');\n\n return (CryptoJS as any)[cipher].encrypt(plaintext, passphrase).toString();\n};\n\n/**\n * Decrypt from a base64-encoded string ciphertext to string plaintext.\n * @param ciphertext\n * @param passphrase\n * @param cipher see https://cryptojs.gitbook.io/docs/#ciphers\n * @returns plaintext\n */\nexport const decrypt = (ciphertext: string, passphrase: string, cipher = 'AES') => {\n assert(typeof ciphertext === 'string');\n assert(typeof passphrase === 'string');\n assert(typeof cipher === 'string');\n\n const bytes = (CryptoJS as any)[cipher].decrypt(ciphertext, passphrase);\n return bytes.toString(CryptoJS.enc.Utf8);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport CryptoJS from 'crypto-js';\nimport assert from 'node:assert';\n\n/**\n *\n * @param algorithm\n * @param plaintext\n */\nconst _hash = (algorithm: string, plaintext: string): string => {\n assert(typeof algorithm === 'string');\n assert(typeof plaintext === 'string');\n\n return (CryptoJS as any)[algorithm](plaintext).toString();\n};\n\n/**\n * Creates a SHA-1 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const sha1 = (text: string) => _hash('SHA1', text);\n\n/**\n * Creates a SHA-256 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const sha256 = (text: string) => _hash('SHA256', text);\n\n/**\n * Creates a SHA-512 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const sha512 = (text: string) => _hash('SHA512', text);\n\n/**\n * Creates a SHA-512 hash of the supplied string, returned as a hexadecimal string.\n * @param text\n */\nexport const ripemd160 = (text: string) => _hash('RIPEMD160', text);\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport crypto from 'hypercore-crypto';\nimport assert from 'node:assert';\n\nimport { KeyPair, PublicKey, PublicKeyLike, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from '@dxos/keys';\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove.\nexport const createId = (): string => PublicKey.stringify(randomBytes(32));\n\nexport const SIGNATURE_LENGTH = 64;\n\nexport const zeroKey = () => new Uint8Array(32); // TODO(burdon): Remove?\n\nexport const createKeyPair = (seed?: Buffer): KeyPair => {\n if (seed) {\n assert(seed.length >= 32, 'Seedphrase too sort. Expecting length of 32.');\n return crypto.keyPair(seed.slice(0, 32));\n }\n\n // TODO(burdon): Enable seed for debugging.\n return crypto.keyPair();\n};\n\n// TODO(burdon): Buffer.\nexport const validateKeyPair = (publicKey: PublicKey, secretKey: Buffer) =>\n crypto.validateKeyPair({ publicKey: publicKey.asBuffer(), secretKey });\n\n// TODO(dmaretskyi): Slicing because webcrypto keys are too long.\nexport const discoveryKey = (key: PublicKeyLike): Buffer =>\n crypto.discoveryKey(PublicKey.from(key).asBuffer().slice(1));\n\n/**\n * Return random bytes of length.\n * @param [length=32]\n * @return {Buffer}\n */\nexport const randomBytes = (length = 32): Buffer => crypto.randomBytes(length);\n\n/**\n * Sign the contents of message with secret_key\n * @param {Buffer} message\n * @param {Buffer} secretKey\n * @returns {Buffer} signature\n */\nexport const sign = (message: Buffer, secretKey: Buffer): Buffer => {\n assert(Buffer.isBuffer(message));\n assert(Buffer.isBuffer(secretKey) && secretKey.length === SECRET_KEY_LENGTH);\n\n return crypto.sign(message, secretKey);\n};\n\n/**\n * Verifies the signature against the message and public_key.\n * @param {Buffer} message\n * @param {Buffer} publicKey\n * @param {Buffer} signature\n * @return {boolean}\n */\nexport const verify = (message: Buffer, signature: Buffer, publicKey: Buffer): boolean => {\n assert(Buffer.isBuffer(message));\n assert(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);\n assert(Buffer.isBuffer(publicKey) && publicKey.length === PUBLIC_KEY_LENGTH);\n\n return crypto.verify(message, signature, publicKey);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport * as nodeCrypto from 'node:crypto';\n\nexport const subtleCrypto = nodeCrypto.webcrypto.subtle;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { verify } from 'hypercore-crypto';\n\nimport { PublicKey } from '@dxos/keys';\n\n/**\n * Generator for signature validation function.\n * @param {String} publicKey\n */\nexport const getSignatureValidator = (publicKey: string) => (message: Buffer, signature: Buffer) =>\n verify(message, signature, PublicKey.bufferize(publicKey));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { subtleCrypto } from './subtle';\n\n/**\n * Verify a signature with the given key.\n */\nexport const verifySignature = async (key: PublicKey, message: Uint8Array, signature: Uint8Array): Promise<boolean> => {\n let publicKey!: CryptoKey;\n\n try {\n publicKey = await subtleCrypto.importKey(\n 'raw',\n key.asUint8Array(),\n {\n name: 'ECDSA',\n namedCurve: 'P-256'\n },\n true,\n ['verify']\n );\n } catch {\n return false;\n }\n\n return subtleCrypto.verify(\n {\n name: 'ECDSA',\n hash: 'SHA-256'\n },\n publicKey,\n signature,\n message\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["encrypt", "plaintext", "passphrase", "cipher", "assert", "CryptoJS", "toString", "decrypt", "ciphertext", "bytes", "enc", "Utf8", "import_crypto_js", "import_node_assert", "_hash", "algorithm", "plaintext", "assert", "CryptoJS", "toString", "sha1", "text", "sha256", "sha512", "ripemd160", "import_node_assert", "createId", "PublicKey", "stringify", "randomBytes", "SIGNATURE_LENGTH", "zeroKey", "Uint8Array", "createKeyPair", "seed", "assert", "length", "crypto", "keyPair", "slice", "validateKeyPair", "publicKey", "secretKey", "asBuffer", "discoveryKey", "key", "from", "sign", "message", "Buffer", "isBuffer", "SECRET_KEY_LENGTH", "verify", "signature", "PUBLIC_KEY_LENGTH", "subtleCrypto", "webcrypto", "subtle", "import_hypercore_crypto", "import_keys", "getSignatureValidator", "publicKey", "message", "signature", "verify", "PublicKey", "bufferize", "verifySignature", "key", "message", "signature", "publicKey", "subtleCrypto", "importKey", "asUint8Array", "name", "namedCurve", "verify", "hash"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"packages/common/crypto/src/encrypt.ts":{"bytes":3657,"imports":[]},"packages/common/crypto/src/hash.ts":{"bytes":3446,"imports":[]},"packages/common/crypto/src/keys.ts":{"bytes":7332,"imports":[]},"packages/common/crypto/src/signer.ts":{"bytes":728,"imports":[]},"packages/common/crypto/src/subtle.ts":{"bytes":764,"imports":[]},"packages/common/crypto/src/validator.ts":{"bytes":1460,"imports":[]},"packages/common/crypto/src/verify.ts":{"bytes":2448,"imports":[{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement"}]},"packages/common/crypto/src/index.ts":{"bytes":946,"imports":[{"path":"packages/common/crypto/src/encrypt.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/hash.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/keys.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/signer.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/validator.ts","kind":"import-statement"},{"path":"packages/common/crypto/src/verify.ts","kind":"import-statement"}]}},"outputs":{"packages/common/crypto/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10030},"packages/common/crypto/dist/lib/node/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/common/crypto/src/index.ts","inputs":{"packages/common/crypto/src/index.ts":{"bytesInOutput":667},"packages/common/crypto/src/encrypt.ts":{"bytesInOutput":791},"packages/common/crypto/src/hash.ts":{"bytesInOutput":546},"packages/common/crypto/src/keys.ts":{"bytesInOutput":1656},"packages/common/crypto/src/subtle.ts":{"bytesInOutput":98},"packages/common/crypto/src/validator.ts":{"bytesInOutput":272},"packages/common/crypto/src/verify.ts":{"bytesInOutput":391}},"bytes":6193}}}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../../../src/browser/subtle.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,cAAgB,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/encrypt.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,cAAe,MAAM,cAAc,MAAM,yBAK5D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,eAAgB,MAAM,cAAc,MAAM,yBAO7D,CAAC"}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encrypt.test.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"encrypt.test.d.ts","sourceRoot":"","sources":["../../../src/encrypt.test.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/hash.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,WAAwB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAU,MAAM,WAA0B,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAU,MAAM,WAA0B,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,MAAM,WAA6B,CAAC"}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.test.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"hash.test.d.ts","sourceRoot":"","sources":["../../../src/hash.test.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/keys.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAwC,MAAM,YAAY,CAAC;AAErG;;GAEG;AAEH,eAAO,MAAM,QAAQ,QAAO,MAA8C,CAAC;AAE3E,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,eAAO,MAAM,OAAO,kBAA2B,CAAC;AAEhD,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,OAQ7C,CAAC;AAGF,eAAO,MAAM,eAAe,cAAe,SAAS,aAAa,MAAM,YACC,CAAC;AAGzE,eAAO,MAAM,YAAY,QAAS,aAAa,KAAG,MACY,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,WAAW,uBAAkB,MAAoC,CAAC;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,IAAI,YAAa,MAAM,aAAa,MAAM,KAAG,MAKzD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,YAAa,MAAM,aAAa,MAAM,aAAa,MAAM,KAAG,OAM9E,CAAC"}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.test.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"keys.test.d.ts","sourceRoot":"","sources":["../../../src/keys.test.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/signer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACpE"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../../src/subtle.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,YAAY,mCAA8B,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/validator.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,cAAe,MAAM,eAAe,MAAM,aAAa,MAAM,YACnC,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/verify.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC;;GAEG;AACH,eAAO,MAAM,eAAe,QAAe,SAAS,WAAW,UAAU,aAAa,UAAU,KAAG,QAAQ,OAAO,CA2BjH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/crypto",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Basic cross-platform crypto utils.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "DXOS.org",
|
|
9
|
-
"main": "dist/
|
|
9
|
+
"main": "dist/lib/node/index.cjs",
|
|
10
10
|
"browser": {
|
|
11
|
-
"
|
|
12
|
-
"./dist/
|
|
11
|
+
"./src/subtle.ts": "./src/browser/subtle.ts",
|
|
12
|
+
"./dist/lib/node/index.cjs": "./dist/lib/browser/index.mjs"
|
|
13
13
|
},
|
|
14
|
-
"types": "dist/src/index.d.ts",
|
|
14
|
+
"types": "dist/types/src/index.d.ts",
|
|
15
15
|
"files": [
|
|
16
16
|
"dist",
|
|
17
17
|
"src"
|
|
18
18
|
],
|
|
19
|
-
"browserslist": [
|
|
20
|
-
"> 5%"
|
|
21
|
-
],
|
|
22
19
|
"dependencies": {
|
|
23
|
-
"assert": "^2.0.0",
|
|
24
20
|
"crypto-js": "^3.1.9-1",
|
|
25
21
|
"hypercore-crypto": "^2.3.0",
|
|
26
|
-
"@dxos/keys": "0.1.
|
|
22
|
+
"@dxos/keys": "0.1.14",
|
|
23
|
+
"@dxos/node-std": "0.1.14"
|
|
27
24
|
},
|
|
28
25
|
"devDependencies": {
|
|
29
26
|
"@types/crypto-js": "~4.0.2",
|
package/src/encrypt.test.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import { expect } from 'chai';
|
|
6
6
|
|
|
7
|
+
import { test } from '@dxos/test';
|
|
8
|
+
|
|
7
9
|
import { decrypt, encrypt } from './encrypt';
|
|
8
10
|
|
|
9
11
|
// Using JSON test data due to its popularity. Any text should work.
|
|
@@ -38,7 +40,7 @@ Key":"4f5e87626c62c5f61873d1e7c995c1b7e7e66e7600b454fa370a93d18f4a9a6f","secretK
|
|
|
38
40
|
8c13d81376b61fb252db32d1002bba4f5e87626c62c5f61873d1e7c995c1b7e7e66e7600b454fa370a93d18f4a9a6f","trusted":true,"type":"
|
|
39
41
|
UNKNOWN"}]}';`;
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
test('Bulk encryption/decryption', () => {
|
|
42
44
|
const original = testJsonData;
|
|
43
45
|
|
|
44
46
|
const origCrypt = encrypt(original, 'secret12');
|
package/src/hash.test.ts
CHANGED
|
@@ -6,19 +6,21 @@
|
|
|
6
6
|
|
|
7
7
|
import { expect } from 'chai';
|
|
8
8
|
|
|
9
|
+
import { test } from '@dxos/test';
|
|
10
|
+
|
|
9
11
|
import { ripemd160, sha1, sha256, sha512 } from './hash';
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
test('SHA1', () => {
|
|
12
14
|
const hashed = sha1('Test message');
|
|
13
15
|
expect(hashed).to.equal('8de39b4722207f2da2a831e8734f02e740c15738');
|
|
14
16
|
});
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
test('SHA256', () => {
|
|
17
19
|
const hashed = sha256('Test message');
|
|
18
20
|
expect(hashed).to.equal('c0719e9a8d5d838d861dc6f675c899d2b309a3a65bb9fe6b11e5afcbf9a2c0b1');
|
|
19
21
|
});
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
test('SHA512', () => {
|
|
22
24
|
const hashed = sha512('Test message');
|
|
23
25
|
expect(hashed).to.equal(
|
|
24
26
|
'48418241a4d779508a6b98e623328a68f7f0bf27fd101bb2c89384827bfc0740' +
|
|
@@ -26,7 +28,7 @@ it('SHA512', function () {
|
|
|
26
28
|
);
|
|
27
29
|
});
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
test('RIPEMD160', () => {
|
|
30
32
|
const hashed = ripemd160('Test message');
|
|
31
33
|
expect(hashed).to.equal('24b83e2457880c95d2e3c3c6b98e24ab170b1e11');
|
|
32
34
|
});
|
package/src/keys.test.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../../src/browser/subtle.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,cAAgB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2022 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.subtleCrypto = void 0;
|
|
7
|
-
// Replacement implementation for the browser (see package.json).
|
|
8
|
-
exports.subtleCrypto = crypto.subtle;
|
|
9
|
-
//# sourceMappingURL=subtle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subtle.js","sourceRoot":"","sources":["../../../src/browser/subtle.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,iEAAiE;AAEpD,QAAA,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../src/encrypt.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,cAAe,MAAM,cAAc,MAAM,yBAK5D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,eAAgB,MAAM,cAAc,MAAM,yBAO7D,CAAC"}
|
package/dist/src/encrypt.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.decrypt = exports.encrypt = void 0;
|
|
10
|
-
const crypto_js_1 = __importDefault(require("crypto-js"));
|
|
11
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
12
|
-
/**
|
|
13
|
-
* Encrypt string plaintext to a base64-encoded string ciphertext.
|
|
14
|
-
* @param plaintext
|
|
15
|
-
* @param passphrase
|
|
16
|
-
* @param cipher see https://cryptojs.gitbook.io/docs/#ciphers
|
|
17
|
-
* @returns ciphertext
|
|
18
|
-
*/
|
|
19
|
-
const encrypt = (plaintext, passphrase, cipher = 'AES') => {
|
|
20
|
-
(0, node_assert_1.default)(typeof passphrase === 'string');
|
|
21
|
-
(0, node_assert_1.default)(typeof cipher === 'string');
|
|
22
|
-
return crypto_js_1.default[cipher].encrypt(plaintext, passphrase).toString();
|
|
23
|
-
};
|
|
24
|
-
exports.encrypt = encrypt;
|
|
25
|
-
/**
|
|
26
|
-
* Decrypt from a base64-encoded string ciphertext to string plaintext.
|
|
27
|
-
* @param ciphertext
|
|
28
|
-
* @param passphrase
|
|
29
|
-
* @param cipher see https://cryptojs.gitbook.io/docs/#ciphers
|
|
30
|
-
* @returns plaintext
|
|
31
|
-
*/
|
|
32
|
-
const decrypt = (ciphertext, passphrase, cipher = 'AES') => {
|
|
33
|
-
(0, node_assert_1.default)(typeof ciphertext === 'string');
|
|
34
|
-
(0, node_assert_1.default)(typeof passphrase === 'string');
|
|
35
|
-
(0, node_assert_1.default)(typeof cipher === 'string');
|
|
36
|
-
const bytes = crypto_js_1.default[cipher].decrypt(ciphertext, passphrase);
|
|
37
|
-
return bytes.toString(crypto_js_1.default.enc.Utf8);
|
|
38
|
-
};
|
|
39
|
-
exports.decrypt = decrypt;
|
|
40
|
-
//# sourceMappingURL=encrypt.js.map
|
package/dist/src/encrypt.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../src/encrypt.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,0DAAiC;AACjC,8DAAiC;AAEjC;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,UAAkB,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE;IAC/E,IAAA,qBAAM,EAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC;IACvC,IAAA,qBAAM,EAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC;IAEnC,OAAQ,mBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC7E,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB;AAEF;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE;IAChF,IAAA,qBAAM,EAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC;IACvC,IAAA,qBAAM,EAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC;IACvC,IAAA,qBAAM,EAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAI,mBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC,QAAQ,CAAC,mBAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB"}
|
package/dist/src/encrypt.test.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = require("chai");
|
|
7
|
-
const encrypt_1 = require("./encrypt");
|
|
8
|
-
// Using JSON test data due to its popularity. Any text should work.
|
|
9
|
-
const testJsonData = `{"keys":[{"added":"2020-02-04T22:22:37-07:00","created":"2020-02-04T22:22:37-07:00","hint":false,
|
|
10
|
-
"key":"9d902af1d1d6f42e2c6736cea4191b05368f1df77181bc8d798d8db946c48cd4","own":true,"publicKey":"9d902af1d1d6f42e2c6736
|
|
11
|
-
cea4191b05368f1df77181bc8d798d8db946c48cd4","secretKey":"1fb50514ae9edb4cadc448a60f345f69459616f3ad5e9d74d5a8c920b8b5f7
|
|
12
|
-
409d902af1d1d6f42e2c6736cea4191b05368f1df77181bc8d798d8db946c48cd4","trusted":true,"type":"IDENTITY"},{"added":"2020-02
|
|
13
|
-
-04T22:22:37-07:00","created":"2020-02-04T22:22:37-07:00","hint":false,"key":"1a9cd591afb12920546c2e35ebc341dd54f30c261
|
|
14
|
-
90118998596991f3fd1af5c","own":true,"publicKey":"1a9cd591afb12920546c2e35ebc341dd54f30c26190118998596991f3fd1af5c","sec
|
|
15
|
-
retKey":"51885b933a7fc50f7e8e94b34336497b1030d7e5b112ad6c7721bc1f34766a4a1a9cd591afb12920546c2e35ebc341dd54f30c26190118
|
|
16
|
-
998596991f3fd1af5c","trusted":true,"type":"PSEUDONYM"},{"added":"2020-02-04T22:22:37-07:00","created":"2020-02-04T22:22
|
|
17
|
-
:37-07:00","hint":false,"key":"6047e56f37dfd50a24590acb861dd5095955fedbd87d133f06b576146a3305ab","own":true,"publicKey"
|
|
18
|
-
:"6047e56f37dfd50a24590acb861dd5095955fedbd87d133f06b576146a3305ab","secretKey":"6737bec794cc8547dc5062afe70c01522b94c0
|
|
19
|
-
d945729ff8cf9e9669d09366436047e56f37dfd50a24590acb861dd5095955fedbd87d133f06b576146a3305ab","trusted":true,"type":"DEVI
|
|
20
|
-
CE"},{"added":"2020-02-04T22:22:37-07:00","created":"2020-02-04T22:22:37-07:00","hint":false,"key":"2dd57ada7744cf5db66
|
|
21
|
-
d8183505086e9b3e1853e7af79857e443299abe103b58","own":true,"publicKey":"2dd57ada7744cf5db66d8183505086e9b3e1853e7af79857
|
|
22
|
-
e443299abe103b58","secretKey":"4c5c53e97267bcf295bb91eaaf83d69b619a3df195ec085b4ca7e41cbf88f2e12dd57ada7744cf5db66d8183
|
|
23
|
-
505086e9b3e1853e7af79857e443299abe103b58","trusted":true,"type":"DEVICE_IDENTITY"},{"added":"2020-02-04T22:22:37-07:00"
|
|
24
|
-
,"created":"2020-02-04T22:22:37-07:00","hint":false,"key":"6fbe6aacfd25e7324b7420f3d38b93316eed6097d58d261f6f802d33903b
|
|
25
|
-
b7c9","own":true,"publicKey":"6fbe6aacfd25e7324b7420f3d38b93316eed6097d58d261f6f802d33903bb7c9","secretKey":"67aeedd8fc
|
|
26
|
-
d0555d455097daafc777103697f96e3697847d30ea802057d4795f6fbe6aacfd25e7324b7420f3d38b93316eed6097d58d261f6f802d33903bb7c9"
|
|
27
|
-
,"trusted":true,"type":"DEVICE_PSEUDONYM"},{"added":"2020-02-04T22:22:37-07:00","created":"2020-02-04T22:22:37-07:00","
|
|
28
|
-
hint":false,"key":"0d7a22f56bc1e398a5611f592d6a41fcc0f93cf233437d5f3a7f760de2b2bc75","own":true,"publicKey":"0d7a22f56b
|
|
29
|
-
c1e398a5611f592d6a41fcc0f93cf233437d5f3a7f760de2b2bc75","secretKey":"279e5ee1ec0b45d3505ab8a3fc79f1b2d9f71667ac311e36e4
|
|
30
|
-
d237bca84e68920d7a22f56bc1e398a5611f592d6a41fcc0f93cf233437d5f3a7f760de2b2bc75","trusted":true,"type":"SPACE"},{"added"
|
|
31
|
-
:"2020-02-04T22:22:37-07:00","created":"2020-02-04T22:22:37-07:00","hint":false,"key":"c8e865ae089f4cb5add830b67fa676dd
|
|
32
|
-
c0e813f5333272633b305b359115a6b6","own":true,"publicKey":"c8e865ae089f4cb5add830b67fa676ddc0e813f5333272633b305b359115a
|
|
33
|
-
6b6","secretKey":"1a211268f48fe9fc4d6a294b320bc1f92a592631d0bbdb5c94a8a8626a150a2dc8e865ae089f4cb5add830b67fa676ddc0e81
|
|
34
|
-
3f5333272633b305b359115a6b6","trusted":true,"type":"FEED"},{"added":"2020-02-04T22:22:37-07:00","created":"2020-02-04T2
|
|
35
|
-
2:22:37-07:00","hint":false,"key":"4f5e87626c62c5f61873d1e7c995c1b7e7e66e7600b454fa370a93d18f4a9a6f","own":true,"public
|
|
36
|
-
Key":"4f5e87626c62c5f61873d1e7c995c1b7e7e66e7600b454fa370a93d18f4a9a6f","secretKey":"94a4ce17823895e25fa637ce6aa9ef9bcd
|
|
37
|
-
8c13d81376b61fb252db32d1002bba4f5e87626c62c5f61873d1e7c995c1b7e7e66e7600b454fa370a93d18f4a9a6f","trusted":true,"type":"
|
|
38
|
-
UNKNOWN"}]}';`;
|
|
39
|
-
it('Bulk encryption/decryption', function () {
|
|
40
|
-
const original = testJsonData;
|
|
41
|
-
const origCrypt = (0, encrypt_1.encrypt)(original, 'secret12');
|
|
42
|
-
const copy = (0, encrypt_1.decrypt)(origCrypt, 'secret12');
|
|
43
|
-
(0, chai_1.expect)(original).to.equal(copy);
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=encrypt.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encrypt.test.js","sourceRoot":"","sources":["../../src/encrypt.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;AAEF,+BAA8B;AAE9B,uCAA6C;AAE7C,oEAAoE;AACpE,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6BP,CAAC;AAEf,EAAE,CAAC,4BAA4B,EAAE;IAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAA,iBAAO,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAA,iBAAO,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAE5C,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
|
package/dist/src/hash.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/hash.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,WAAwB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAU,MAAM,WAA0B,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAU,MAAM,WAA0B,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,MAAM,WAA6B,CAAC"}
|
package/dist/src/hash.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.ripemd160 = exports.sha512 = exports.sha256 = exports.sha1 = void 0;
|
|
10
|
-
const crypto_js_1 = __importDefault(require("crypto-js"));
|
|
11
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @param algorithm
|
|
15
|
-
* @param plaintext
|
|
16
|
-
*/
|
|
17
|
-
const _hash = (algorithm, plaintext) => {
|
|
18
|
-
(0, node_assert_1.default)(typeof algorithm === 'string');
|
|
19
|
-
(0, node_assert_1.default)(typeof plaintext === 'string');
|
|
20
|
-
return crypto_js_1.default[algorithm](plaintext).toString();
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Creates a SHA-1 hash of the supplied string, returned as a hexadecimal string.
|
|
24
|
-
* @param text
|
|
25
|
-
*/
|
|
26
|
-
const sha1 = (text) => _hash('SHA1', text);
|
|
27
|
-
exports.sha1 = sha1;
|
|
28
|
-
/**
|
|
29
|
-
* Creates a SHA-256 hash of the supplied string, returned as a hexadecimal string.
|
|
30
|
-
* @param text
|
|
31
|
-
*/
|
|
32
|
-
const sha256 = (text) => _hash('SHA256', text);
|
|
33
|
-
exports.sha256 = sha256;
|
|
34
|
-
/**
|
|
35
|
-
* Creates a SHA-512 hash of the supplied string, returned as a hexadecimal string.
|
|
36
|
-
* @param text
|
|
37
|
-
*/
|
|
38
|
-
const sha512 = (text) => _hash('SHA512', text);
|
|
39
|
-
exports.sha512 = sha512;
|
|
40
|
-
/**
|
|
41
|
-
* Creates a SHA-512 hash of the supplied string, returned as a hexadecimal string.
|
|
42
|
-
* @param text
|
|
43
|
-
*/
|
|
44
|
-
const ripemd160 = (text) => _hash('RIPEMD160', text);
|
|
45
|
-
exports.ripemd160 = ripemd160;
|
|
46
|
-
//# sourceMappingURL=hash.js.map
|
package/dist/src/hash.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/hash.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,0DAAiC;AACjC,8DAAiC;AAEjC;;;;GAIG;AACH,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAU,EAAE;IAC7D,IAAA,qBAAM,EAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC;IACtC,IAAA,qBAAM,EAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC;IAEtC,OAAQ,mBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAA7C,QAAA,IAAI,QAAyC;AAE1D;;;GAGG;AACI,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAAjD,QAAA,MAAM,UAA2C;AAE9D;;;GAGG;AACI,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAAjD,QAAA,MAAM,UAA2C;AAE9D;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAAvD,QAAA,SAAS,aAA8C"}
|
package/dist/src/hash.test.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// DXOS testing browser.
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
//
|
|
5
|
-
// Copyright 2020 DXOS.org
|
|
6
|
-
//
|
|
7
|
-
const chai_1 = require("chai");
|
|
8
|
-
const hash_1 = require("./hash");
|
|
9
|
-
it('SHA1', function () {
|
|
10
|
-
const hashed = (0, hash_1.sha1)('Test message');
|
|
11
|
-
(0, chai_1.expect)(hashed).to.equal('8de39b4722207f2da2a831e8734f02e740c15738');
|
|
12
|
-
});
|
|
13
|
-
it('SHA256', function () {
|
|
14
|
-
const hashed = (0, hash_1.sha256)('Test message');
|
|
15
|
-
(0, chai_1.expect)(hashed).to.equal('c0719e9a8d5d838d861dc6f675c899d2b309a3a65bb9fe6b11e5afcbf9a2c0b1');
|
|
16
|
-
});
|
|
17
|
-
it('SHA512', function () {
|
|
18
|
-
const hashed = (0, hash_1.sha512)('Test message');
|
|
19
|
-
(0, chai_1.expect)(hashed).to.equal('48418241a4d779508a6b98e623328a68f7f0bf27fd101bb2c89384827bfc0740' +
|
|
20
|
-
'3fefd5855576f1824fcd7acd233541514240c2bcf0fa9732ebb8f166a7c38bdf');
|
|
21
|
-
});
|
|
22
|
-
it('RIPEMD160', function () {
|
|
23
|
-
const hashed = (0, hash_1.ripemd160)('Test message');
|
|
24
|
-
(0, chai_1.expect)(hashed).to.equal('24b83e2457880c95d2e3c3c6b98e24ab170b1e11');
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=hash.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../../src/hash.test.ts"],"names":[],"mappings":";AAAA,wBAAwB;;AAExB,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,+BAA8B;AAE9B,iCAAyD;AAEzD,EAAE,CAAC,MAAM,EAAE;IACT,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,cAAc,CAAC,CAAC;IACpC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,QAAQ,EAAE;IACX,MAAM,MAAM,GAAG,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC;IACtC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,QAAQ,EAAE;IACX,MAAM,MAAM,GAAG,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC;IACtC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CACrB,kEAAkE;QAChE,kEAAkE,CACrE,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,WAAW,EAAE;IACd,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,cAAc,CAAC,CAAC;IACzC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC"}
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
package/dist/src/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
__exportStar(require("./encrypt"), exports);
|
|
21
|
-
__exportStar(require("./hash"), exports);
|
|
22
|
-
__exportStar(require("./keys"), exports);
|
|
23
|
-
__exportStar(require("./signer"), exports);
|
|
24
|
-
__exportStar(require("./subtle"), exports);
|
|
25
|
-
__exportStar(require("./validator"), exports);
|
|
26
|
-
__exportStar(require("./verify"), exports);
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,4CAA0B;AAC1B,yCAAuB;AACvB,yCAAuB;AACvB,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB"}
|
package/dist/src/keys.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAwC,MAAM,YAAY,CAAC;AAErG;;GAEG;AAEH,eAAO,MAAM,QAAQ,QAAO,MAA8C,CAAC;AAE3E,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,eAAO,MAAM,OAAO,kBAA2B,CAAC;AAEhD,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,OAQ7C,CAAC;AAGF,eAAO,MAAM,eAAe,cAAe,SAAS,aAAa,MAAM,YACC,CAAC;AAGzE,eAAO,MAAM,YAAY,QAAS,aAAa,KAAG,MACY,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,WAAW,uBAAkB,MAAoC,CAAC;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,IAAI,YAAa,MAAM,aAAa,MAAM,KAAG,MAKzD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,YAAa,MAAM,aAAa,MAAM,aAAa,MAAM,KAAG,OAM9E,CAAC"}
|
package/dist/src/keys.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.verify = exports.sign = exports.randomBytes = exports.discoveryKey = exports.validateKeyPair = exports.createKeyPair = exports.zeroKey = exports.SIGNATURE_LENGTH = exports.createId = void 0;
|
|
10
|
-
const hypercore_crypto_1 = __importDefault(require("hypercore-crypto"));
|
|
11
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
12
|
-
const keys_1 = require("@dxos/keys");
|
|
13
|
-
/**
|
|
14
|
-
* @deprecated
|
|
15
|
-
*/
|
|
16
|
-
// TODO(burdon): Remove.
|
|
17
|
-
const createId = () => keys_1.PublicKey.stringify((0, exports.randomBytes)(32));
|
|
18
|
-
exports.createId = createId;
|
|
19
|
-
exports.SIGNATURE_LENGTH = 64;
|
|
20
|
-
const zeroKey = () => new Uint8Array(32); // TODO(burdon): Remove?
|
|
21
|
-
exports.zeroKey = zeroKey;
|
|
22
|
-
const createKeyPair = (seed) => {
|
|
23
|
-
if (seed) {
|
|
24
|
-
(0, node_assert_1.default)(seed.length >= 32, 'Seedphrase too sort. Expecting length of 32.');
|
|
25
|
-
return hypercore_crypto_1.default.keyPair(seed.slice(0, 32));
|
|
26
|
-
}
|
|
27
|
-
// TODO(burdon): Enable seed for debugging.
|
|
28
|
-
return hypercore_crypto_1.default.keyPair();
|
|
29
|
-
};
|
|
30
|
-
exports.createKeyPair = createKeyPair;
|
|
31
|
-
// TODO(burdon): Buffer.
|
|
32
|
-
const validateKeyPair = (publicKey, secretKey) => hypercore_crypto_1.default.validateKeyPair({ publicKey: publicKey.asBuffer(), secretKey });
|
|
33
|
-
exports.validateKeyPair = validateKeyPair;
|
|
34
|
-
// TODO(dmaretskyi): Slicing because webcrypto keys are too long.
|
|
35
|
-
const discoveryKey = (key) => hypercore_crypto_1.default.discoveryKey(keys_1.PublicKey.from(key).asBuffer().slice(1));
|
|
36
|
-
exports.discoveryKey = discoveryKey;
|
|
37
|
-
/**
|
|
38
|
-
* Return random bytes of length.
|
|
39
|
-
* @param [length=32]
|
|
40
|
-
* @return {Buffer}
|
|
41
|
-
*/
|
|
42
|
-
const randomBytes = (length = 32) => hypercore_crypto_1.default.randomBytes(length);
|
|
43
|
-
exports.randomBytes = randomBytes;
|
|
44
|
-
/**
|
|
45
|
-
* Sign the contents of message with secret_key
|
|
46
|
-
* @param {Buffer} message
|
|
47
|
-
* @param {Buffer} secretKey
|
|
48
|
-
* @returns {Buffer} signature
|
|
49
|
-
*/
|
|
50
|
-
const sign = (message, secretKey) => {
|
|
51
|
-
(0, node_assert_1.default)(Buffer.isBuffer(message));
|
|
52
|
-
(0, node_assert_1.default)(Buffer.isBuffer(secretKey) && secretKey.length === keys_1.SECRET_KEY_LENGTH);
|
|
53
|
-
return hypercore_crypto_1.default.sign(message, secretKey);
|
|
54
|
-
};
|
|
55
|
-
exports.sign = sign;
|
|
56
|
-
/**
|
|
57
|
-
* Verifies the signature against the message and public_key.
|
|
58
|
-
* @param {Buffer} message
|
|
59
|
-
* @param {Buffer} publicKey
|
|
60
|
-
* @param {Buffer} signature
|
|
61
|
-
* @return {boolean}
|
|
62
|
-
*/
|
|
63
|
-
const verify = (message, signature, publicKey) => {
|
|
64
|
-
(0, node_assert_1.default)(Buffer.isBuffer(message));
|
|
65
|
-
(0, node_assert_1.default)(Buffer.isBuffer(signature) && signature.length === exports.SIGNATURE_LENGTH);
|
|
66
|
-
(0, node_assert_1.default)(Buffer.isBuffer(publicKey) && publicKey.length === keys_1.PUBLIC_KEY_LENGTH);
|
|
67
|
-
return hypercore_crypto_1.default.verify(message, signature, publicKey);
|
|
68
|
-
};
|
|
69
|
-
exports.verify = verify;
|
|
70
|
-
//# sourceMappingURL=keys.js.map
|
package/dist/src/keys.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,wEAAsC;AACtC,8DAAiC;AAEjC,qCAAqG;AAErG;;GAEG;AACH,wBAAwB;AACjB,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,gBAAS,CAAC,SAAS,CAAC,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC,CAAC;AAA9D,QAAA,QAAQ,YAAsD;AAE9D,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;AAA5D,QAAA,OAAO,WAA4B;AAEzC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAW,EAAE;IACtD,IAAI,IAAI,EAAE;QACR,IAAA,qBAAM,EAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,8CAA8C,CAAC,CAAC;QAC1E,OAAO,0BAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAC1C;IAED,2CAA2C;IAC3C,OAAO,0BAAM,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;AAEF,wBAAwB;AACjB,MAAM,eAAe,GAAG,CAAC,SAAoB,EAAE,SAAiB,EAAE,EAAE,CACzE,0BAAM,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAD5D,QAAA,eAAe,mBAC6C;AAEzE,iEAAiE;AAC1D,MAAM,YAAY,GAAG,CAAC,GAAkB,EAAU,EAAE,CACzD,0BAAM,CAAC,YAAY,CAAC,gBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AADlD,QAAA,YAAY,gBACsC;AAE/D;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,EAAU,EAAE,CAAC,0BAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAAlE,QAAA,WAAW,eAAuD;AAE/E;;;;;GAKG;AACI,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAU,EAAE;IACjE,IAAA,qBAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,IAAA,qBAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,wBAAiB,CAAC,CAAC;IAE7E,OAAO,0BAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC,CAAC;AALW,QAAA,IAAI,QAKf;AAEF;;;;;;GAMG;AACI,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,SAAiB,EAAW,EAAE;IACvF,IAAA,qBAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,IAAA,qBAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,wBAAgB,CAAC,CAAC;IAC5E,IAAA,qBAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,wBAAiB,CAAC,CAAC;IAE7E,OAAO,0BAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC,CAAC;AANW,QAAA,MAAM,UAMjB"}
|
package/dist/src/keys.test.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = require("chai");
|
|
7
|
-
const keys_1 = require("./keys");
|
|
8
|
-
it('Create id is unique', function () {
|
|
9
|
-
(0, chai_1.expect)((0, keys_1.createId)()).not.to.equal((0, keys_1.createId)());
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=keys.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keys.test.js","sourceRoot":"","sources":["../../src/keys.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;AAEF,+BAA8B;AAE9B,iCAAkC;AAElC,EAAE,CAAC,qBAAqB,EAAE;IACxB,IAAA,aAAM,EAAC,IAAA,eAAQ,GAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAA,eAAQ,GAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
|
package/dist/src/signer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACpE"}
|
package/dist/src/signer.js
DELETED
package/dist/src/signer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE"}
|
package/dist/src/subtle.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../src/subtle.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,YAAY,mCAA8B,CAAC"}
|
package/dist/src/subtle.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2022 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.subtleCrypto = void 0;
|
|
30
|
-
const nodeCrypto = __importStar(require("node:crypto"));
|
|
31
|
-
exports.subtleCrypto = nodeCrypto.webcrypto.subtle;
|
|
32
|
-
//# sourceMappingURL=subtle.js.map
|
package/dist/src/subtle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subtle.js","sourceRoot":"","sources":["../../src/subtle.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,wDAA0C;AAE7B,QAAA,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,cAAe,MAAM,eAAe,MAAM,aAAa,MAAM,YACnC,CAAC"}
|
package/dist/src/validator.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2020 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getSignatureValidator = void 0;
|
|
7
|
-
const hypercore_crypto_1 = require("hypercore-crypto");
|
|
8
|
-
const keys_1 = require("@dxos/keys");
|
|
9
|
-
/**
|
|
10
|
-
* Generator for signature validation function.
|
|
11
|
-
* @param {String} publicKey
|
|
12
|
-
*/
|
|
13
|
-
const getSignatureValidator = (publicKey) => (message, signature) => (0, hypercore_crypto_1.verify)(message, signature, keys_1.PublicKey.bufferize(publicKey));
|
|
14
|
-
exports.getSignatureValidator = getSignatureValidator;
|
|
15
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,uDAA0C;AAE1C,qCAAuC;AAEvC;;;GAGG;AACI,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,OAAe,EAAE,SAAiB,EAAE,EAAE,CACjG,IAAA,yBAAM,EAAC,OAAO,EAAE,SAAS,EAAE,gBAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AADhD,QAAA,qBAAqB,yBAC2B"}
|
package/dist/src/verify.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC;;GAEG;AACH,eAAO,MAAM,eAAe,QAAe,SAAS,WAAW,UAAU,aAAa,UAAU,KAAG,QAAQ,OAAO,CA2BjH,CAAC"}
|
package/dist/src/verify.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2022 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.verifySignature = void 0;
|
|
7
|
-
const subtle_1 = require("./subtle");
|
|
8
|
-
/**
|
|
9
|
-
* Verify a signature with the given key.
|
|
10
|
-
*/
|
|
11
|
-
const verifySignature = async (key, message, signature) => {
|
|
12
|
-
let publicKey;
|
|
13
|
-
try {
|
|
14
|
-
publicKey = await subtle_1.subtleCrypto.importKey('raw', key.asUint8Array(), {
|
|
15
|
-
name: 'ECDSA',
|
|
16
|
-
namedCurve: 'P-256'
|
|
17
|
-
}, true, ['verify']);
|
|
18
|
-
}
|
|
19
|
-
catch (_a) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
return subtle_1.subtleCrypto.verify({
|
|
23
|
-
name: 'ECDSA',
|
|
24
|
-
hash: 'SHA-256'
|
|
25
|
-
}, publicKey, signature, message);
|
|
26
|
-
};
|
|
27
|
-
exports.verifySignature = verifySignature;
|
|
28
|
-
//# sourceMappingURL=verify.js.map
|
package/dist/src/verify.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAIF,qCAAwC;AAExC;;GAEG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,GAAc,EAAE,OAAmB,EAAE,SAAqB,EAAoB,EAAE;IACpH,IAAI,SAAqB,CAAC;IAE1B,IAAI;QACF,SAAS,GAAG,MAAM,qBAAY,CAAC,SAAS,CACtC,KAAK,EACL,GAAG,CAAC,YAAY,EAAE,EAClB;YACE,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;SACpB,EACD,IAAI,EACJ,CAAC,QAAQ,CAAC,CACX,CAAC;KACH;IAAC,WAAM;QACN,OAAO,KAAK,CAAC;KACd;IAED,OAAO,qBAAY,CAAC,MAAM,CACxB;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS;KAChB,EACD,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,eAAe,mBA2B1B"}
|