@dxos/crypto 0.1.14 → 0.1.16
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.
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
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
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": "
|
|
5
|
+
"mappings": "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",
|
|
6
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
7
|
}
|
|
@@ -1 +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":
|
|
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":9496},"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":3560}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/crypto",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Basic cross-platform crypto utils.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"crypto-js": "^3.1.9-1",
|
|
21
21
|
"hypercore-crypto": "^2.3.0",
|
|
22
|
-
"@dxos/keys": "0.1.
|
|
23
|
-
"@dxos/node-std": "0.1.
|
|
22
|
+
"@dxos/keys": "0.1.16",
|
|
23
|
+
"@dxos/node-std": "0.1.16"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/crypto-js": "~4.0.2",
|