@dxos/crypto 0.6.10-main.bbdfaa4 → 0.6.10-staging.00555f6

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.
@@ -89,6 +89,7 @@ var verify = (message, signature, publicKey) => {
89
89
 
90
90
  // packages/common/crypto/src/browser/subtle.ts
91
91
  var subtleCrypto = crypto.subtle;
92
+ var webcrypto = crypto;
92
93
 
93
94
  // packages/common/crypto/src/validator.ts
94
95
  import { PublicKey as PublicKey2 } from "@dxos/keys";
@@ -113,6 +114,11 @@ var verifySignature = async (key, message, signature) => {
113
114
  hash: "SHA-256"
114
115
  }, publicKey, signature, message);
115
116
  };
117
+
118
+ // packages/common/crypto/src/uuid.ts
119
+ var randomUUID = () => {
120
+ return webcrypto.randomUUID();
121
+ };
116
122
  export {
117
123
  SIGNATURE_LENGTH,
118
124
  createId,
@@ -120,10 +126,12 @@ export {
120
126
  discoveryKey,
121
127
  getSignatureValidator,
122
128
  randomBytes,
129
+ randomUUID,
123
130
  sign,
124
131
  subtleCrypto,
125
132
  validateKeyPair,
126
133
  verify,
127
- verifySignature
134
+ verifySignature,
135
+ webcrypto
128
136
  };
129
137
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/keys.ts", "../../../src/browser/subtle.ts", "../../../src/validator.ts", "../../../src/verify.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type KeyPair, PublicKey, type PublicKeyLike, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from '@dxos/keys';\n\nimport crypto from '#hypercore-crypto';\n\nexport const SIGNATURE_LENGTH = 64;\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove.\nexport const createId = (): string => PublicKey.stringify(randomBytes(32));\n\nexport const createKeyPair = (seed?: Buffer): KeyPair => {\n if (seed) {\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);\n invariant(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 { PublicKey } from '@dxos/keys';\n\nimport { verify } from '#hypercore-crypto';\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 { type 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": ";;;;;;;;;;AAIA,SAASA,iBAAiB;AAC1B,SAAuBC,WAA+BC,mBAAmBC,yBAAyB;AAElG,OAAOC,aAAY;;AAEZ,IAAMC,mBAAmB;AAMzB,IAAMC,WAAW,MAAcL,UAAUM,UAAUC,YAAY,EAAA,CAAA;AAE/D,IAAMC,gBAAgB,CAACC,SAAAA;AAC5B,MAAIA,MAAM;AACRV,cAAUU,KAAKC,UAAU,IAAI,gDAAA;;;;;;;;;AAC7B,WAAOP,QAAOQ,QAAQF,KAAKG,MAAM,GAAG,EAAA,CAAA;EACtC;AAGA,SAAOT,QAAOQ,QAAO;AACvB;AAGO,IAAME,kBAAkB,CAACC,WAAsBC,cACpDZ,QAAOU,gBAAgB;EAAEC,WAAWA,UAAUE,SAAQ;EAAID;AAAU,CAAA;AAG/D,IAAME,eAAe,CAACC,QAC3Bf,QAAOc,aAAajB,UAAUmB,KAAKD,GAAAA,EAAKF,SAAQ,EAAGJ,MAAM,CAAA,CAAA;AAOpD,IAAML,cAAc,CAACG,SAAS,OAAeP,QAAOI,YAAYG,MAAAA;AAQhE,IAAMU,OAAO,CAACC,SAAiBN,cAAAA;AACpChB,YAAUuB,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1BtB,YAAUuB,OAAOC,SAASR,SAAAA,KAAcA,UAAUL,WAAWR,mBAAAA,QAAAA;;;;;;;;;AAE7D,SAAOC,QAAOiB,KAAKC,SAASN,SAAAA;AAC9B;AASO,IAAMS,SAAS,CAACH,SAAiBI,WAAmBX,cAAAA;AACzDf,YAAUuB,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1BtB,YAAUuB,OAAOC,SAASE,SAAAA,KAAcA,UAAUf,WAAWN,kBAAAA,QAAAA;;;;;;;;;AAC7DL,YAAUuB,OAAOC,SAAST,SAAAA,KAAcA,UAAUJ,WAAWT,mBAAAA,QAAAA;;;;;;;;;AAE7D,SAAOE,QAAOqB,OAAOH,SAASI,WAAWX,SAAAA;AAC3C;;;AC9DO,IAAMY,eAAeC,OAAOC;;;ACFnC,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,UAAAA,eAAc;AAMhB,IAAMC,wBAAwB,CAACC,cAAsB,CAACC,SAAiBC,cAC5EC,QAAOF,SAASC,WAAWE,WAAUC,UAAUL,SAAAA,CAAAA;;;ACF1C,IAAMM,kBAAkB,OAAOC,KAAgBC,SAAqBC,cAAAA;AACzE,MAAIC;AAEJ,MAAI;AACFA,gBAAY,MAAMC,aAAaC,UAC7B,OACAL,IAAIM,aAAY,GAChB;MACEC,MAAM;MACNC,YAAY;IACd,GACA,MACA;MAAC;KAAS;EAEd,QAAQ;AACN,WAAO;EACT;AAEA,SAAOJ,aAAaK,OAClB;IACEF,MAAM;IACNG,MAAM;EACR,GACAP,WACAD,WACAD,OAAAA;AAEJ;",
6
- "names": ["invariant", "PublicKey", "PUBLIC_KEY_LENGTH", "SECRET_KEY_LENGTH", "crypto", "SIGNATURE_LENGTH", "createId", "stringify", "randomBytes", "createKeyPair", "seed", "length", "keyPair", "slice", "validateKeyPair", "publicKey", "secretKey", "asBuffer", "discoveryKey", "key", "from", "sign", "message", "Buffer", "isBuffer", "verify", "signature", "subtleCrypto", "crypto", "subtle", "PublicKey", "verify", "getSignatureValidator", "publicKey", "message", "signature", "verify", "PublicKey", "bufferize", "verifySignature", "key", "message", "signature", "publicKey", "subtleCrypto", "importKey", "asUint8Array", "name", "namedCurve", "verify", "hash"]
3
+ "sources": ["../../../src/keys.ts", "../../../src/browser/subtle.ts", "../../../src/validator.ts", "../../../src/verify.ts", "../../../src/uuid.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type KeyPair, PublicKey, type PublicKeyLike, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from '@dxos/keys';\n\nimport crypto from '#hypercore-crypto';\n\nexport const SIGNATURE_LENGTH = 64;\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove.\nexport const createId = (): string => PublicKey.stringify(randomBytes(32));\n\nexport const createKeyPair = (seed?: Buffer): KeyPair => {\n if (seed) {\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);\n invariant(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\nexport const webcrypto = crypto;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { verify } from '#hypercore-crypto';\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 { type 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", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { webcrypto } from './subtle';\n\nexport const randomUUID = (): string => {\n return webcrypto.randomUUID();\n};\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,SAASA,iBAAiB;AAC1B,SAAuBC,WAA+BC,mBAAmBC,yBAAyB;AAElG,OAAOC,aAAY;;AAEZ,IAAMC,mBAAmB;AAMzB,IAAMC,WAAW,MAAcL,UAAUM,UAAUC,YAAY,EAAA,CAAA;AAE/D,IAAMC,gBAAgB,CAACC,SAAAA;AAC5B,MAAIA,MAAM;AACRV,cAAUU,KAAKC,UAAU,IAAI,gDAAA;;;;;;;;;AAC7B,WAAOP,QAAOQ,QAAQF,KAAKG,MAAM,GAAG,EAAA,CAAA;EACtC;AAGA,SAAOT,QAAOQ,QAAO;AACvB;AAGO,IAAME,kBAAkB,CAACC,WAAsBC,cACpDZ,QAAOU,gBAAgB;EAAEC,WAAWA,UAAUE,SAAQ;EAAID;AAAU,CAAA;AAG/D,IAAME,eAAe,CAACC,QAC3Bf,QAAOc,aAAajB,UAAUmB,KAAKD,GAAAA,EAAKF,SAAQ,EAAGJ,MAAM,CAAA,CAAA;AAOpD,IAAML,cAAc,CAACG,SAAS,OAAeP,QAAOI,YAAYG,MAAAA;AAQhE,IAAMU,OAAO,CAACC,SAAiBN,cAAAA;AACpChB,YAAUuB,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1BtB,YAAUuB,OAAOC,SAASR,SAAAA,KAAcA,UAAUL,WAAWR,mBAAAA,QAAAA;;;;;;;;;AAE7D,SAAOC,QAAOiB,KAAKC,SAASN,SAAAA;AAC9B;AASO,IAAMS,SAAS,CAACH,SAAiBI,WAAmBX,cAAAA;AACzDf,YAAUuB,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1BtB,YAAUuB,OAAOC,SAASE,SAAAA,KAAcA,UAAUf,WAAWN,kBAAAA,QAAAA;;;;;;;;;AAC7DL,YAAUuB,OAAOC,SAAST,SAAAA,KAAcA,UAAUJ,WAAWT,mBAAAA,QAAAA;;;;;;;;;AAE7D,SAAOE,QAAOqB,OAAOH,SAASI,WAAWX,SAAAA;AAC3C;;;AC9DO,IAAMY,eAAeC,OAAOC;AAE5B,IAAMC,YAAYF;;;ACJzB,SAASG,aAAAA,kBAAiB;AAE1B,SAASC,UAAAA,eAAc;AAMhB,IAAMC,wBAAwB,CAACC,cAAsB,CAACC,SAAiBC,cAC5EC,QAAOF,SAASC,WAAWE,WAAUC,UAAUL,SAAAA,CAAAA;;;ACF1C,IAAMM,kBAAkB,OAAOC,KAAgBC,SAAqBC,cAAAA;AACzE,MAAIC;AAEJ,MAAI;AACFA,gBAAY,MAAMC,aAAaC,UAC7B,OACAL,IAAIM,aAAY,GAChB;MACEC,MAAM;MACNC,YAAY;IACd,GACA,MACA;MAAC;KAAS;EAEd,QAAQ;AACN,WAAO;EACT;AAEA,SAAOJ,aAAaK,OAClB;IACEF,MAAM;IACNG,MAAM;EACR,GACAP,WACAD,WACAD,OAAAA;AAEJ;;;AChCO,IAAMU,aAAa,MAAA;AACxB,SAAOC,UAAUD,WAAU;AAC7B;",
6
+ "names": ["invariant", "PublicKey", "PUBLIC_KEY_LENGTH", "SECRET_KEY_LENGTH", "crypto", "SIGNATURE_LENGTH", "createId", "stringify", "randomBytes", "createKeyPair", "seed", "length", "keyPair", "slice", "validateKeyPair", "publicKey", "secretKey", "asBuffer", "discoveryKey", "key", "from", "sign", "message", "Buffer", "isBuffer", "verify", "signature", "subtleCrypto", "crypto", "subtle", "webcrypto", "PublicKey", "verify", "getSignatureValidator", "publicKey", "message", "signature", "verify", "PublicKey", "bufferize", "verifySignature", "key", "message", "signature", "publicKey", "subtleCrypto", "importKey", "asUint8Array", "name", "namedCurve", "verify", "hash", "randomUUID", "webcrypto"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/keys.ts":{"bytes":8453,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/signer.ts":{"bytes":810,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/browser/subtle.ts":{"bytes":788,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/validator.ts":{"bytes":1519,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/verify.ts":{"bytes":2511,"imports":[{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/index.ts":{"bytes":829,"imports":[{"path":"packages/common/crypto/src/keys.ts","kind":"import-statement","original":"./keys"},{"path":"packages/common/crypto/src/signer.ts","kind":"import-statement","original":"./signer"},{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"packages/common/crypto/src/validator.ts","kind":"import-statement","original":"./validator"},{"path":"packages/common/crypto/src/verify.ts","kind":"import-statement","original":"./verify"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/common/crypto/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5815},"packages/common/crypto/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"exports":["SIGNATURE_LENGTH","createId","createKeyPair","discoveryKey","getSignatureValidator","randomBytes","sign","subtleCrypto","validateKeyPair","verify","verifySignature"],"entryPoint":"packages/common/crypto/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/common/crypto/src/keys.ts":{"bytesInOutput":2241},"packages/common/crypto/src/index.ts":{"bytesInOutput":0},"packages/common/crypto/src/browser/subtle.ts":{"bytesInOutput":34},"packages/common/crypto/src/validator.ts":{"bytesInOutput":238},"packages/common/crypto/src/verify.ts":{"bytesInOutput":387}},"bytes":3443}}}
1
+ {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/keys.ts":{"bytes":8453,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/signer.ts":{"bytes":810,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/browser/subtle.ts":{"bytes":925,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/validator.ts":{"bytes":1519,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/verify.ts":{"bytes":2511,"imports":[{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/uuid.ts":{"bytes":821,"imports":[{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/index.ts":{"bytes":909,"imports":[{"path":"packages/common/crypto/src/keys.ts","kind":"import-statement","original":"./keys"},{"path":"packages/common/crypto/src/signer.ts","kind":"import-statement","original":"./signer"},{"path":"packages/common/crypto/src/browser/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"packages/common/crypto/src/validator.ts","kind":"import-statement","original":"./validator"},{"path":"packages/common/crypto/src/verify.ts","kind":"import-statement","original":"./verify"},{"path":"packages/common/crypto/src/uuid.ts","kind":"import-statement","original":"./uuid"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/common/crypto/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6150},"packages/common/crypto/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"exports":["SIGNATURE_LENGTH","createId","createKeyPair","discoveryKey","getSignatureValidator","randomBytes","randomUUID","sign","subtleCrypto","validateKeyPair","verify","verifySignature","webcrypto"],"entryPoint":"packages/common/crypto/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/common/crypto/src/keys.ts":{"bytesInOutput":2241},"packages/common/crypto/src/index.ts":{"bytesInOutput":0},"packages/common/crypto/src/browser/subtle.ts":{"bytesInOutput":58},"packages/common/crypto/src/validator.ts":{"bytesInOutput":238},"packages/common/crypto/src/verify.ts":{"bytesInOutput":387},"packages/common/crypto/src/uuid.ts":{"bytesInOutput":61}},"bytes":3594}}}
@@ -34,11 +34,13 @@ __export(node_exports, {
34
34
  discoveryKey: () => discoveryKey,
35
35
  getSignatureValidator: () => getSignatureValidator,
36
36
  randomBytes: () => randomBytes,
37
+ randomUUID: () => randomUUID,
37
38
  sign: () => sign,
38
39
  subtleCrypto: () => subtleCrypto,
39
40
  validateKeyPair: () => validateKeyPair,
40
41
  verify: () => verify,
41
- verifySignature: () => verifySignature
42
+ verifySignature: () => verifySignature,
43
+ webcrypto: () => webcrypto2
42
44
  });
43
45
  module.exports = __toCommonJS(node_exports);
44
46
  var import_invariant = require("@dxos/invariant");
@@ -123,6 +125,7 @@ var verify = (message, signature, publicKey) => {
123
125
  return import_hypercore_crypto.default.verify(message, signature, publicKey);
124
126
  };
125
127
  var subtleCrypto = nodeCrypto.webcrypto.subtle;
128
+ var webcrypto2 = nodeCrypto.webcrypto;
126
129
  var getSignatureValidator = (publicKey) => (message, signature) => (0, import_hypercore_crypto2.verify)(message, signature, import_keys2.PublicKey.bufferize(publicKey));
127
130
  var verifySignature = async (key, message, signature) => {
128
131
  let publicKey;
@@ -141,6 +144,9 @@ var verifySignature = async (key, message, signature) => {
141
144
  hash: "SHA-256"
142
145
  }, publicKey, signature, message);
143
146
  };
147
+ var randomUUID = () => {
148
+ return webcrypto2.randomUUID();
149
+ };
144
150
  // Annotate the CommonJS export names for ESM import in node:
145
151
  0 && (module.exports = {
146
152
  SIGNATURE_LENGTH,
@@ -149,10 +155,12 @@ var verifySignature = async (key, message, signature) => {
149
155
  discoveryKey,
150
156
  getSignatureValidator,
151
157
  randomBytes,
158
+ randomUUID,
152
159
  sign,
153
160
  subtleCrypto,
154
161
  validateKeyPair,
155
162
  verify,
156
- verifySignature
163
+ verifySignature,
164
+ webcrypto
157
165
  });
158
166
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/keys.ts", "../../../src/subtle.ts", "../../../src/validator.ts", "../../../src/verify.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type KeyPair, PublicKey, type PublicKeyLike, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from '@dxos/keys';\n\nimport crypto from '#hypercore-crypto';\n\nexport const SIGNATURE_LENGTH = 64;\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove.\nexport const createId = (): string => PublicKey.stringify(randomBytes(32));\n\nexport const createKeyPair = (seed?: Buffer): KeyPair => {\n if (seed) {\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);\n invariant(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 { PublicKey } from '@dxos/keys';\n\nimport { verify } from '#hypercore-crypto';\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 { type 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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAA0B;AAC1B,kBAAkG;AAElG,8BAAmB;ACHnB,iBAA4B;ACA5B,IAAAA,eAA0B;AAE1B,IAAAC,2BAAuB;;AFGhB,IAAMC,mBAAmB;AAMzB,IAAMC,WAAW,MAAcC,sBAAUC,UAAUC,YAAY,EAAA,CAAA;AAE/D,IAAMC,gBAAgB,CAACC,SAAAA;AAC5B,MAAIA,MAAM;AACRC,oCAAUD,KAAKE,UAAU,IAAI,gDAAA;;;;;;;;;AAC7B,WAAOC,wBAAAA,QAAOC,QAAQJ,KAAKK,MAAM,GAAG,EAAA,CAAA;EACtC;AAGA,SAAOF,wBAAAA,QAAOC,QAAO;AACvB;AAGO,IAAME,kBAAkB,CAACC,WAAsBC,cACpDL,wBAAAA,QAAOG,gBAAgB;EAAEC,WAAWA,UAAUE,SAAQ;EAAID;AAAU,CAAA;AAG/D,IAAME,eAAe,CAACC,QAC3BR,wBAAAA,QAAOO,aAAad,sBAAUgB,KAAKD,GAAAA,EAAKF,SAAQ,EAAGJ,MAAM,CAAA,CAAA;AAOpD,IAAMP,cAAc,CAACI,SAAS,OAAeC,wBAAAA,QAAOL,YAAYI,MAAAA;AAQhE,IAAMW,OAAO,CAACC,SAAiBN,cAAAA;AACpCP,kCAAUc,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1Bb,kCAAUc,OAAOC,SAASR,SAAAA,KAAcA,UAAUN,WAAWe,+BAAAA,QAAAA;;;;;;;;;AAE7D,SAAOd,wBAAAA,QAAOU,KAAKC,SAASN,SAAAA;AAC9B;AASO,IAAMU,SAAS,CAACJ,SAAiBK,WAAmBZ,cAAAA;AACzDN,kCAAUc,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1Bb,kCAAUc,OAAOC,SAASG,SAAAA,KAAcA,UAAUjB,WAAWR,kBAAAA,QAAAA;;;;;;;;;AAC7DO,kCAAUc,OAAOC,SAAST,SAAAA,KAAcA,UAAUL,WAAWkB,+BAAAA,QAAAA;;;;;;;;;AAE7D,SAAOjB,wBAAAA,QAAOe,OAAOJ,SAASK,WAAWZ,SAAAA;AAC3C;AC9DO,IAAMc,eAA0BC,WAAAA,UAAUC;ACM1C,IAAMC,wBAAwB,CAACjB,cAAsB,CAACO,SAAiBK,kBAC5ED,yBAAAA,QAAOJ,SAASK,WAAWvB,aAAAA,UAAU6B,UAAUlB,SAAAA,CAAAA;ACF1C,IAAMmB,kBAAkB,OAAOf,KAAgBG,SAAqBK,cAAAA;AACzE,MAAIZ;AAEJ,MAAI;AACFA,gBAAY,MAAMc,aAAaM,UAC7B,OACAhB,IAAIiB,aAAY,GAChB;MACEC,MAAM;MACNC,YAAY;IACd,GACA,MACA;MAAC;KAAS;EAEd,QAAQ;AACN,WAAO;EACT;AAEA,SAAOT,aAAaH,OAClB;IACEW,MAAM;IACNE,MAAM;EACR,GACAxB,WACAY,WACAL,OAAAA;AAEJ;",
6
- "names": ["import_keys", "import_hypercore_crypto", "SIGNATURE_LENGTH", "createId", "PublicKey", "stringify", "randomBytes", "createKeyPair", "seed", "invariant", "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", "getSignatureValidator", "bufferize", "verifySignature", "importKey", "asUint8Array", "name", "namedCurve", "hash"]
3
+ "sources": ["../../../src/keys.ts", "../../../src/subtle.ts", "../../../src/validator.ts", "../../../src/verify.ts", "../../../src/uuid.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type KeyPair, PublicKey, type PublicKeyLike, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH } from '@dxos/keys';\n\nimport crypto from '#hypercore-crypto';\n\nexport const SIGNATURE_LENGTH = 64;\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove.\nexport const createId = (): string => PublicKey.stringify(randomBytes(32));\n\nexport const createKeyPair = (seed?: Buffer): KeyPair => {\n if (seed) {\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(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 invariant(Buffer.isBuffer(message));\n invariant(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);\n invariant(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\nexport const webcrypto = nodeCrypto.webcrypto;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { verify } from '#hypercore-crypto';\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 { type 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", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { webcrypto } from './subtle';\n\nexport const randomUUID = (): string => {\n return webcrypto.randomUUID();\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAA0B;AAC1B,kBAAkG;AAElG,8BAAmB;ACHnB,iBAA4B;ACA5B,IAAAA,eAA0B;AAE1B,IAAAC,2BAAuB;;AFGhB,IAAMC,mBAAmB;AAMzB,IAAMC,WAAW,MAAcC,sBAAUC,UAAUC,YAAY,EAAA,CAAA;AAE/D,IAAMC,gBAAgB,CAACC,SAAAA;AAC5B,MAAIA,MAAM;AACRC,oCAAUD,KAAKE,UAAU,IAAI,gDAAA;;;;;;;;;AAC7B,WAAOC,wBAAAA,QAAOC,QAAQJ,KAAKK,MAAM,GAAG,EAAA,CAAA;EACtC;AAGA,SAAOF,wBAAAA,QAAOC,QAAO;AACvB;AAGO,IAAME,kBAAkB,CAACC,WAAsBC,cACpDL,wBAAAA,QAAOG,gBAAgB;EAAEC,WAAWA,UAAUE,SAAQ;EAAID;AAAU,CAAA;AAG/D,IAAME,eAAe,CAACC,QAC3BR,wBAAAA,QAAOO,aAAad,sBAAUgB,KAAKD,GAAAA,EAAKF,SAAQ,EAAGJ,MAAM,CAAA,CAAA;AAOpD,IAAMP,cAAc,CAACI,SAAS,OAAeC,wBAAAA,QAAOL,YAAYI,MAAAA;AAQhE,IAAMW,OAAO,CAACC,SAAiBN,cAAAA;AACpCP,kCAAUc,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1Bb,kCAAUc,OAAOC,SAASR,SAAAA,KAAcA,UAAUN,WAAWe,+BAAAA,QAAAA;;;;;;;;;AAE7D,SAAOd,wBAAAA,QAAOU,KAAKC,SAASN,SAAAA;AAC9B;AASO,IAAMU,SAAS,CAACJ,SAAiBK,WAAmBZ,cAAAA;AACzDN,kCAAUc,OAAOC,SAASF,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC1Bb,kCAAUc,OAAOC,SAASG,SAAAA,KAAcA,UAAUjB,WAAWR,kBAAAA,QAAAA;;;;;;;;;AAC7DO,kCAAUc,OAAOC,SAAST,SAAAA,KAAcA,UAAUL,WAAWkB,+BAAAA,QAAAA;;;;;;;;;AAE7D,SAAOjB,wBAAAA,QAAOe,OAAOJ,SAASK,WAAWZ,SAAAA;AAC3C;AC9DO,IAAMc,eAA0BC,WAAAA,UAAUC;AAE1C,IAAMD,aAAuBA,WAAAA;ACI7B,IAAME,wBAAwB,CAACjB,cAAsB,CAACO,SAAiBK,kBAC5ED,yBAAAA,QAAOJ,SAASK,WAAWvB,aAAAA,UAAU6B,UAAUlB,SAAAA,CAAAA;ACF1C,IAAMmB,kBAAkB,OAAOf,KAAgBG,SAAqBK,cAAAA;AACzE,MAAIZ;AAEJ,MAAI;AACFA,gBAAY,MAAMc,aAAaM,UAC7B,OACAhB,IAAIiB,aAAY,GAChB;MACEC,MAAM;MACNC,YAAY;IACd,GACA,MACA;MAAC;KAAS;EAEd,QAAQ;AACN,WAAO;EACT;AAEA,SAAOT,aAAaH,OAClB;IACEW,MAAM;IACNE,MAAM;EACR,GACAxB,WACAY,WACAL,OAAAA;AAEJ;AChCO,IAAMkB,aAAa,MAAA;AACxB,SAAOV,WAAUU,WAAU;AAC7B;",
6
+ "names": ["import_keys", "import_hypercore_crypto", "SIGNATURE_LENGTH", "createId", "PublicKey", "stringify", "randomBytes", "createKeyPair", "seed", "invariant", "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", "getSignatureValidator", "bufferize", "verifySignature", "importKey", "asUint8Array", "name", "namedCurve", "hash", "randomUUID"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/common/crypto/src/keys.ts":{"bytes":8453,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/signer.ts":{"bytes":810,"imports":[],"format":"esm"},"packages/common/crypto/src/subtle.ts":{"bytes":811,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/validator.ts":{"bytes":1519,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/verify.ts":{"bytes":2511,"imports":[{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement","original":"./subtle"}],"format":"esm"},"packages/common/crypto/src/index.ts":{"bytes":829,"imports":[{"path":"packages/common/crypto/src/keys.ts","kind":"import-statement","original":"./keys"},{"path":"packages/common/crypto/src/signer.ts","kind":"import-statement","original":"./signer"},{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"packages/common/crypto/src/validator.ts","kind":"import-statement","original":"./validator"},{"path":"packages/common/crypto/src/verify.ts","kind":"import-statement","original":"./verify"}],"format":"esm"}},"outputs":{"packages/common/crypto/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5827},"packages/common/crypto/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"exports":["SIGNATURE_LENGTH","createId","createKeyPair","discoveryKey","getSignatureValidator","randomBytes","sign","subtleCrypto","validateKeyPair","verify","verifySignature"],"entryPoint":"packages/common/crypto/src/index.ts","inputs":{"packages/common/crypto/src/keys.ts":{"bytesInOutput":2233},"packages/common/crypto/src/index.ts":{"bytesInOutput":0},"packages/common/crypto/src/subtle.ts":{"bytesInOutput":91},"packages/common/crypto/src/validator.ts":{"bytesInOutput":238},"packages/common/crypto/src/verify.ts":{"bytesInOutput":387}},"bytes":3336}}}
1
+ {"inputs":{"packages/common/crypto/src/keys.ts":{"bytes":8453,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/signer.ts":{"bytes":810,"imports":[],"format":"esm"},"packages/common/crypto/src/subtle.ts":{"bytes":978,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/validator.ts":{"bytes":1519,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/common/crypto/src/verify.ts":{"bytes":2511,"imports":[{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement","original":"./subtle"}],"format":"esm"},"packages/common/crypto/src/uuid.ts":{"bytes":821,"imports":[{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement","original":"./subtle"}],"format":"esm"},"packages/common/crypto/src/index.ts":{"bytes":909,"imports":[{"path":"packages/common/crypto/src/keys.ts","kind":"import-statement","original":"./keys"},{"path":"packages/common/crypto/src/signer.ts","kind":"import-statement","original":"./signer"},{"path":"packages/common/crypto/src/subtle.ts","kind":"import-statement","original":"./subtle"},{"path":"packages/common/crypto/src/validator.ts","kind":"import-statement","original":"./validator"},{"path":"packages/common/crypto/src/verify.ts","kind":"import-statement","original":"./verify"},{"path":"packages/common/crypto/src/uuid.ts","kind":"import-statement","original":"./uuid"}],"format":"esm"}},"outputs":{"packages/common/crypto/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6164},"packages/common/crypto/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"#hypercore-crypto","kind":"import-statement","external":true}],"exports":["SIGNATURE_LENGTH","createId","createKeyPair","discoveryKey","getSignatureValidator","randomBytes","randomUUID","sign","subtleCrypto","validateKeyPair","verify","verifySignature","webcrypto"],"entryPoint":"packages/common/crypto/src/index.ts","inputs":{"packages/common/crypto/src/keys.ts":{"bytesInOutput":2233},"packages/common/crypto/src/index.ts":{"bytesInOutput":0},"packages/common/crypto/src/subtle.ts":{"bytesInOutput":130},"packages/common/crypto/src/validator.ts":{"bytesInOutput":238},"packages/common/crypto/src/verify.ts":{"bytesInOutput":387},"packages/common/crypto/src/uuid.ts":{"bytesInOutput":62}},"bytes":3517}}}
@@ -1,2 +1,3 @@
1
1
  export declare const subtleCrypto: SubtleCrypto;
2
+ export declare const webcrypto: Crypto;
2
3
  //# sourceMappingURL=subtle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../../../src/browser/subtle.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,cAAgB,CAAC"}
1
+ {"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../../../src/browser/subtle.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,cAAgB,CAAC;AAE1C,eAAO,MAAM,SAAS,QAAS,CAAC"}
@@ -3,4 +3,5 @@ export * from './signer';
3
3
  export * from './subtle';
4
4
  export * from './validator';
5
5
  export * from './verify';
6
+ export * from './uuid';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import * as nodeCrypto from 'node:crypto';
2
2
  export declare const subtleCrypto: nodeCrypto.webcrypto.SubtleCrypto;
3
+ export declare const webcrypto: nodeCrypto.webcrypto.Crypto;
3
4
  //# sourceMappingURL=subtle.d.ts.map
@@ -1 +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"}
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;AAExD,eAAO,MAAM,SAAS,6BAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const randomUUID: () => string;
2
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../src/uuid.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,QAAO,MAE7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/crypto",
3
- "version": "0.6.10-main.bbdfaa4",
3
+ "version": "0.6.10-staging.00555f6",
4
4
  "description": "Basic cross-platform crypto utils.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -35,9 +35,9 @@
35
35
  ],
36
36
  "dependencies": {
37
37
  "hypercore-crypto": "^2.3.0",
38
- "@dxos/invariant": "0.6.10-main.bbdfaa4",
39
- "@dxos/keys": "0.6.10-main.bbdfaa4",
40
- "@dxos/node-std": "0.6.10-main.bbdfaa4"
38
+ "@dxos/invariant": "0.6.10-staging.00555f6",
39
+ "@dxos/node-std": "0.6.10-staging.00555f6",
40
+ "@dxos/keys": "0.6.10-staging.00555f6"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/crypto-js": "~4.0.2",
@@ -5,3 +5,5 @@
5
5
  // Replacement implementation for the browser (see package.json).
6
6
 
7
7
  export const subtleCrypto = crypto.subtle;
8
+
9
+ export const webcrypto = crypto;
package/src/index.ts CHANGED
@@ -7,3 +7,4 @@ export * from './signer';
7
7
  export * from './subtle';
8
8
  export * from './validator';
9
9
  export * from './verify';
10
+ export * from './uuid';
package/src/subtle.ts CHANGED
@@ -5,3 +5,5 @@
5
5
  import * as nodeCrypto from 'node:crypto';
6
6
 
7
7
  export const subtleCrypto = nodeCrypto.webcrypto.subtle;
8
+
9
+ export const webcrypto = nodeCrypto.webcrypto;
package/src/uuid.ts ADDED
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { webcrypto } from './subtle';
6
+
7
+ export const randomUUID = (): string => {
8
+ return webcrypto.randomUUID();
9
+ };