@dynamic-labs-wallet/forward-mpc-shared 0.1.0-alpha.6
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/LICENSE.md +21 -0
- package/README.md +52 -0
- package/dist/attestation/index.d.ts +1 -0
- package/dist/attestation/index.d.ts.map +1 -0
- package/dist/attestation/index.js +4 -0
- package/dist/attestation/index.js.map +1 -0
- package/dist/codecs/DomainCodec.d.ts +11 -0
- package/dist/codecs/DomainCodec.d.ts.map +1 -0
- package/dist/codecs/DomainCodec.js +25 -0
- package/dist/codecs/DomainCodec.js.map +1 -0
- package/dist/codecs/EncryptedKeyshareCodec.d.ts +11 -0
- package/dist/codecs/EncryptedKeyshareCodec.d.ts.map +1 -0
- package/dist/codecs/EncryptedKeyshareCodec.js +11 -0
- package/dist/codecs/EncryptedKeyshareCodec.js.map +1 -0
- package/dist/codecs/Uint32ArrayCodec.d.ts +3 -0
- package/dist/codecs/Uint32ArrayCodec.d.ts.map +1 -0
- package/dist/codecs/Uint32ArrayCodec.js +37 -0
- package/dist/codecs/Uint32ArrayCodec.js.map +1 -0
- package/dist/codecs/Uint8ArrayCodec.d.ts +3 -0
- package/dist/codecs/Uint8ArrayCodec.d.ts.map +1 -0
- package/dist/codecs/Uint8ArrayCodec.js +26 -0
- package/dist/codecs/Uint8ArrayCodec.js.map +1 -0
- package/dist/codecs/Uint8ArrayOrHexCodec.d.ts +3 -0
- package/dist/codecs/Uint8ArrayOrHexCodec.d.ts.map +1 -0
- package/dist/codecs/Uint8ArrayOrHexCodec.js +35 -0
- package/dist/codecs/Uint8ArrayOrHexCodec.js.map +1 -0
- package/dist/codecs/WebSocketErrorCodec.d.ts +15 -0
- package/dist/codecs/WebSocketErrorCodec.d.ts.map +1 -0
- package/dist/codecs/WebSocketErrorCodec.js +14 -0
- package/dist/codecs/WebSocketErrorCodec.js.map +1 -0
- package/dist/codecs/index.d.ts +4 -0
- package/dist/codecs/index.d.ts.map +1 -0
- package/dist/codecs/index.js +4 -0
- package/dist/codecs/index.js.map +1 -0
- package/dist/constants/algorithms.d.ts +56 -0
- package/dist/constants/algorithms.d.ts.map +1 -0
- package/dist/constants/algorithms.js +60 -0
- package/dist/constants/algorithms.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/crypto/decapsulate.d.ts +2 -0
- package/dist/crypto/decapsulate.d.ts.map +1 -0
- package/dist/crypto/decapsulate.js +5 -0
- package/dist/crypto/decapsulate.js.map +1 -0
- package/dist/crypto/encapsulate.d.ts +5 -0
- package/dist/crypto/encapsulate.d.ts.map +1 -0
- package/dist/crypto/encapsulate.js +5 -0
- package/dist/crypto/encapsulate.js.map +1 -0
- package/dist/crypto/generateKeypair.d.ts +5 -0
- package/dist/crypto/generateKeypair.d.ts.map +1 -0
- package/dist/crypto/generateKeypair.js +17 -0
- package/dist/crypto/generateKeypair.js.map +1 -0
- package/dist/crypto/index.d.ts +6 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +6 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/keyDerivation.d.ts +14 -0
- package/dist/crypto/keyDerivation.d.ts.map +1 -0
- package/dist/crypto/keyDerivation.js +21 -0
- package/dist/crypto/keyDerivation.js.map +1 -0
- package/dist/crypto/keyshareEncryption.d.ts +13 -0
- package/dist/crypto/keyshareEncryption.d.ts.map +1 -0
- package/dist/crypto/keyshareEncryption.js +39 -0
- package/dist/crypto/keyshareEncryption.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/messages/ConnectionAckV1Request.d.ts +43 -0
- package/dist/messages/ConnectionAckV1Request.d.ts.map +1 -0
- package/dist/messages/ConnectionAckV1Request.js +17 -0
- package/dist/messages/ConnectionAckV1Request.js.map +1 -0
- package/dist/messages/ConnectionAckV1Response.d.ts +45 -0
- package/dist/messages/ConnectionAckV1Response.d.ts.map +1 -0
- package/dist/messages/ConnectionAckV1Response.js +18 -0
- package/dist/messages/ConnectionAckV1Response.js.map +1 -0
- package/dist/messages/HandshakeV1Request.d.ts +45 -0
- package/dist/messages/HandshakeV1Request.d.ts.map +1 -0
- package/dist/messages/HandshakeV1Request.js +28 -0
- package/dist/messages/HandshakeV1Request.js.map +1 -0
- package/dist/messages/HandshakeV1Response.d.ts +47 -0
- package/dist/messages/HandshakeV1Response.d.ts.map +1 -0
- package/dist/messages/HandshakeV1Response.js +20 -0
- package/dist/messages/HandshakeV1Response.js.map +1 -0
- package/dist/messages/SignMessageV1Request.d.ts +63 -0
- package/dist/messages/SignMessageV1Request.d.ts.map +1 -0
- package/dist/messages/SignMessageV1Request.js +42 -0
- package/dist/messages/SignMessageV1Request.js.map +1 -0
- package/dist/messages/SignMessageV1Response.d.ts +47 -0
- package/dist/messages/SignMessageV1Response.d.ts.map +1 -0
- package/dist/messages/SignMessageV1Response.js +28 -0
- package/dist/messages/SignMessageV1Response.js.map +1 -0
- package/dist/messages/allMessages.d.ts +259 -0
- package/dist/messages/allMessages.d.ts.map +1 -0
- package/dist/messages/allMessages.js +57 -0
- package/dist/messages/allMessages.js.map +1 -0
- package/dist/messages/base.d.ts +27 -0
- package/dist/messages/base.d.ts.map +1 -0
- package/dist/messages/base.js +12 -0
- package/dist/messages/base.js.map +1 -0
- package/dist/messages/index.d.ts +11 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +14 -0
- package/dist/messages/index.js.map +1 -0
- package/dist/messages/registry.d.ts +136 -0
- package/dist/messages/registry.d.ts.map +1 -0
- package/dist/messages/registry.js +67 -0
- package/dist/messages/registry.js.map +1 -0
- package/dist/messages/utils/StandardMessage.d.ts +97 -0
- package/dist/messages/utils/StandardMessage.d.ts.map +1 -0
- package/dist/messages/utils/StandardMessage.js +98 -0
- package/dist/messages/utils/StandardMessage.js.map +1 -0
- package/dist/messages/utils/encodingHelpers.d.ts +20 -0
- package/dist/messages/utils/encodingHelpers.d.ts.map +1 -0
- package/dist/messages/utils/encodingHelpers.js +50 -0
- package/dist/messages/utils/encodingHelpers.js.map +1 -0
- package/dist/messages/utils/index.d.ts +4 -0
- package/dist/messages/utils/index.d.ts.map +1 -0
- package/dist/messages/utils/index.js +5 -0
- package/dist/messages/utils/index.js.map +1 -0
- package/dist/messages/utils/schemaBuilder.d.ts +19 -0
- package/dist/messages/utils/schemaBuilder.d.ts.map +1 -0
- package/dist/messages/utils/schemaBuilder.js +31 -0
- package/dist/messages/utils/schemaBuilder.js.map +1 -0
- package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts +20 -0
- package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts.map +1 -0
- package/dist/signing/algorithms/BIP340SigningAlgorithm.js +35 -0
- package/dist/signing/algorithms/BIP340SigningAlgorithm.js.map +1 -0
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts +20 -0
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts.map +1 -0
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.js +43 -0
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.js.map +1 -0
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts +18 -0
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts.map +1 -0
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.js +34 -0
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.js.map +1 -0
- package/dist/signing/allAlgorithms.d.ts +50 -0
- package/dist/signing/allAlgorithms.d.ts.map +1 -0
- package/dist/signing/allAlgorithms.js +59 -0
- package/dist/signing/allAlgorithms.js.map +1 -0
- package/dist/signing/base.d.ts +42 -0
- package/dist/signing/base.d.ts.map +1 -0
- package/dist/signing/base.js +6 -0
- package/dist/signing/base.js.map +1 -0
- package/dist/signing/index.d.ts +7 -0
- package/dist/signing/index.d.ts.map +1 -0
- package/dist/signing/index.js +9 -0
- package/dist/signing/index.js.map +1 -0
- package/dist/signing/registry.d.ts +26 -0
- package/dist/signing/registry.d.ts.map +1 -0
- package/dist/signing/registry.js +36 -0
- package/dist/signing/registry.js.map +1 -0
- package/dist/types.d.ts +42 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/assertDefined.d.ts +16 -0
- package/dist/utils/assertDefined.d.ts.map +1 -0
- package/dist/utils/assertDefined.js +27 -0
- package/dist/utils/assertDefined.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { generateMlKem768Keypair } from './generateKeypair';
|
|
2
|
+
export { encapsulateMlKem768 } from './encapsulate';
|
|
3
|
+
export { decapsulateMlKem768 } from './decapsulate';
|
|
4
|
+
export * from './keyDerivation';
|
|
5
|
+
export * from './keyshareEncryption';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { generateMlKem768Keypair } from './generateKeypair';
|
|
2
|
+
export { encapsulateMlKem768 } from './encapsulate';
|
|
3
|
+
export { decapsulateMlKem768 } from './decapsulate';
|
|
4
|
+
export * from './keyDerivation';
|
|
5
|
+
export * from './keyshareEncryption';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC","sourcesContent":["export { generateMlKem768Keypair } from './generateKeypair';\nexport { encapsulateMlKem768 } from './encapsulate';\nexport { decapsulateMlKem768 } from './decapsulate';\nexport * from './keyDerivation';\nexport * from './keyshareEncryption';\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const AES_256_GCM_KEY_SIZE = 32;
|
|
2
|
+
export declare const AES_256_GCM_NONCE_SIZE = 12;
|
|
3
|
+
export declare const AES_256_GCM_TAG_SIZE = 16;
|
|
4
|
+
export declare const HKDF_SALT_SIZE = 32;
|
|
5
|
+
/**
|
|
6
|
+
* Derive AES-256 key from ML-KEM shared secret using HKDF
|
|
7
|
+
* Following NIST SP 800-56C recommendations
|
|
8
|
+
*/
|
|
9
|
+
export declare function deriveAESKey(sharedSecret: Uint8Array, salt: Uint8Array, info: string): Uint8Array;
|
|
10
|
+
/**
|
|
11
|
+
* Create standardized context info for HKDF
|
|
12
|
+
*/
|
|
13
|
+
export declare function createKeyDerivationInfo(purpose: 'keyshare' | 'hmac', connectionId: string, version?: number): string;
|
|
14
|
+
//# sourceMappingURL=keyDerivation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyDerivation.d.ts","sourceRoot":"","sources":["../../src/crypto/keyDerivation.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,UAAU,EACxB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACX,UAAU,CAGZ;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,UAAU,GAAG,MAAM,EAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,MAAU,GAClB,MAAM,CAER"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { hkdf } from '@noble/hashes/hkdf.js';
|
|
2
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
3
|
+
export const AES_256_GCM_KEY_SIZE = 32; // 256 bits
|
|
4
|
+
export const AES_256_GCM_NONCE_SIZE = 12; // 96 bits
|
|
5
|
+
export const AES_256_GCM_TAG_SIZE = 16; // 128 bits
|
|
6
|
+
export const HKDF_SALT_SIZE = 32; // 256 bits
|
|
7
|
+
/**
|
|
8
|
+
* Derive AES-256 key from ML-KEM shared secret using HKDF
|
|
9
|
+
* Following NIST SP 800-56C recommendations
|
|
10
|
+
*/
|
|
11
|
+
export function deriveAESKey(sharedSecret, salt, info) {
|
|
12
|
+
const infoBytes = new TextEncoder().encode(info);
|
|
13
|
+
return hkdf(sha256, sharedSecret, salt, infoBytes, AES_256_GCM_KEY_SIZE);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create standardized context info for HKDF
|
|
17
|
+
*/
|
|
18
|
+
export function createKeyDerivationInfo(purpose, connectionId, version = 1) {
|
|
19
|
+
return `forward-mpc-${purpose}-v${version}-${connectionId}`;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=keyDerivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyDerivation.js","sourceRoot":"","sources":["../../src/crypto/keyDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,WAAW;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC,CAAC,UAAU;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,WAAW;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,WAAW;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,YAAwB,EACxB,IAAgB,EAChB,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA4B,EAC5B,YAAoB,EACpB,UAAkB,CAAC;IAEnB,OAAO,eAAe,OAAO,KAAK,OAAO,IAAI,YAAY,EAAE,CAAC;AAC9D,CAAC","sourcesContent":["import { hkdf } from '@noble/hashes/hkdf.js';\nimport { sha256 } from '@noble/hashes/sha2.js';\n\nexport const AES_256_GCM_KEY_SIZE = 32; // 256 bits\nexport const AES_256_GCM_NONCE_SIZE = 12; // 96 bits\nexport const AES_256_GCM_TAG_SIZE = 16; // 128 bits\nexport const HKDF_SALT_SIZE = 32; // 256 bits\n\n/**\n * Derive AES-256 key from ML-KEM shared secret using HKDF\n * Following NIST SP 800-56C recommendations\n */\nexport function deriveAESKey(\n sharedSecret: Uint8Array,\n salt: Uint8Array,\n info: string\n): Uint8Array {\n const infoBytes = new TextEncoder().encode(info);\n return hkdf(sha256, sharedSecret, salt, infoBytes, AES_256_GCM_KEY_SIZE);\n}\n\n/**\n * Create standardized context info for HKDF\n */\nexport function createKeyDerivationInfo(\n purpose: 'keyshare' | 'hmac',\n connectionId: string,\n version: number = 1\n): string {\n return `forward-mpc-${purpose}-v${version}-${connectionId}`;\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EncryptedKeyshare } from '../codecs/EncryptedKeyshareCodec';
|
|
2
|
+
import type { SigningAlgorithmName } from '../signing/allAlgorithms';
|
|
3
|
+
/**
|
|
4
|
+
* Encrypt keyshare using AES-256-GCM with ML-KEM derived key
|
|
5
|
+
*
|
|
6
|
+
* @param keyshare - The keyshare object from Dynamic Wallet SDK
|
|
7
|
+
* @param sharedSecret - ML-KEM shared secret from handshake
|
|
8
|
+
* @param connectionId - Unique connection identifier
|
|
9
|
+
* @param signingAlgorithm - Algorithm name for context
|
|
10
|
+
* @returns Encrypted keyshare with salt and encrypted payload
|
|
11
|
+
*/
|
|
12
|
+
export declare function encryptKeyshare(keyshare: any, sharedSecret: Uint8Array, connectionId: string, signingAlgorithm: SigningAlgorithmName): Promise<EncryptedKeyshare>;
|
|
13
|
+
//# sourceMappingURL=keyshareEncryption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyshareEncryption.d.ts","sourceRoot":"","sources":["../../src/crypto/keyshareEncryption.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,iBAAiB,CAAC,CA+B5B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { gcm } from '@noble/ciphers/aes';
|
|
2
|
+
import { bytesToHex, randomBytes } from '@noble/hashes/utils.js';
|
|
3
|
+
import { deriveAESKey, createKeyDerivationInfo } from './keyDerivation';
|
|
4
|
+
/**
|
|
5
|
+
* Encrypt keyshare using AES-256-GCM with ML-KEM derived key
|
|
6
|
+
*
|
|
7
|
+
* @param keyshare - The keyshare object from Dynamic Wallet SDK
|
|
8
|
+
* @param sharedSecret - ML-KEM shared secret from handshake
|
|
9
|
+
* @param connectionId - Unique connection identifier
|
|
10
|
+
* @param signingAlgorithm - Algorithm name for context
|
|
11
|
+
* @returns Encrypted keyshare with salt and encrypted payload
|
|
12
|
+
*/
|
|
13
|
+
export async function encryptKeyshare(keyshare, sharedSecret, connectionId, signingAlgorithm) {
|
|
14
|
+
// Generate random salt for HKDF
|
|
15
|
+
const salt = randomBytes(32);
|
|
16
|
+
// Derive AES key using HKDF with connection-specific context
|
|
17
|
+
const keyshareInfo = createKeyDerivationInfo('keyshare', connectionId);
|
|
18
|
+
const aesKey = deriveAESKey(sharedSecret, salt, keyshareInfo);
|
|
19
|
+
// Prepare keyshare data for encryption
|
|
20
|
+
const keyshareData = {
|
|
21
|
+
keyshare,
|
|
22
|
+
signingAlgorithm,
|
|
23
|
+
timestamp: Date.now(),
|
|
24
|
+
nonce: bytesToHex(randomBytes(16)),
|
|
25
|
+
};
|
|
26
|
+
// Encrypt with AES-256-GCM
|
|
27
|
+
const nonce = randomBytes(12);
|
|
28
|
+
const aes256Gcm = gcm(aesKey, nonce);
|
|
29
|
+
const plaintext = new TextEncoder().encode(JSON.stringify(keyshareData));
|
|
30
|
+
const ciphertext = aes256Gcm.encrypt(plaintext);
|
|
31
|
+
// Combine nonce + ciphertext for single payload
|
|
32
|
+
const encryptedPayload = new Uint8Array(nonce.length + ciphertext.length);
|
|
33
|
+
encryptedPayload.set(nonce, 0);
|
|
34
|
+
encryptedPayload.set(ciphertext, nonce.length);
|
|
35
|
+
// Clear sensitive data from memory
|
|
36
|
+
aesKey.fill(0);
|
|
37
|
+
return { salt, encryptedPayload };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=keyshareEncryption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyshareEncryption.js","sourceRoot":"","sources":["../../src/crypto/keyshareEncryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAIxE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAa,EACb,YAAwB,EACxB,YAAoB,EACpB,gBAAsC;IAEtC,gCAAgC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAE7B,6DAA6D;IAC7D,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAE9D,uCAAuC;IACvC,MAAM,YAAY,GAAG;QACnB,QAAQ;QACR,gBAAgB;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACnC,CAAC;IAEF,2BAA2B;IAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhD,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1E,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/C,mCAAmC;IACnC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEf,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACpC,CAAC","sourcesContent":["import { gcm } from '@noble/ciphers/aes';\nimport { bytesToHex, randomBytes } from '@noble/hashes/utils.js';\nimport { deriveAESKey, createKeyDerivationInfo } from './keyDerivation';\nimport type { EncryptedKeyshare } from '../codecs/EncryptedKeyshareCodec';\nimport type { SigningAlgorithmName } from '../signing/allAlgorithms';\n\n/**\n * Encrypt keyshare using AES-256-GCM with ML-KEM derived key\n *\n * @param keyshare - The keyshare object from Dynamic Wallet SDK\n * @param sharedSecret - ML-KEM shared secret from handshake\n * @param connectionId - Unique connection identifier\n * @param signingAlgorithm - Algorithm name for context\n * @returns Encrypted keyshare with salt and encrypted payload\n */\nexport async function encryptKeyshare(\n keyshare: any,\n sharedSecret: Uint8Array,\n connectionId: string,\n signingAlgorithm: SigningAlgorithmName\n): Promise<EncryptedKeyshare> {\n // Generate random salt for HKDF\n const salt = randomBytes(32);\n\n // Derive AES key using HKDF with connection-specific context\n const keyshareInfo = createKeyDerivationInfo('keyshare', connectionId);\n const aesKey = deriveAESKey(sharedSecret, salt, keyshareInfo);\n\n // Prepare keyshare data for encryption\n const keyshareData = {\n keyshare,\n signingAlgorithm,\n timestamp: Date.now(),\n nonce: bytesToHex(randomBytes(16)),\n };\n\n // Encrypt with AES-256-GCM\n const nonce = randomBytes(12);\n const aes256Gcm = gcm(aesKey, nonce);\n const plaintext = new TextEncoder().encode(JSON.stringify(keyshareData));\n const ciphertext = aes256Gcm.encrypt(plaintext);\n\n // Combine nonce + ciphertext for single payload\n const encryptedPayload = new Uint8Array(nonce.length + ciphertext.length);\n encryptedPayload.set(nonce, 0);\n encryptedPayload.set(ciphertext, nonce.length);\n\n // Clear sensitive data from memory\n aesKey.fill(0);\n\n return { salt, encryptedPayload };\n}\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './messages';
|
|
3
|
+
export * from './codecs';
|
|
4
|
+
export * from './crypto';
|
|
5
|
+
export * from './utils/assertDefined';
|
|
6
|
+
export * from './constants';
|
|
7
|
+
export * from './signing';
|
|
8
|
+
export { toDynamicSigningAlgorithm, fromDynamicSigningAlgorithm, } from './constants/algorithms';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,uBAAuB,CAAC;AAGtC,cAAc,aAAa,CAAC;AAG5B,cAAc,WAAW,CAAC;AAK1B,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Export types
|
|
2
|
+
export * from './types';
|
|
3
|
+
// Export all message schemas, types, and classes
|
|
4
|
+
export * from './messages';
|
|
5
|
+
// Export codecs
|
|
6
|
+
export * from './codecs';
|
|
7
|
+
// Export crypto functions
|
|
8
|
+
export * from './crypto';
|
|
9
|
+
// Export utilities
|
|
10
|
+
export * from './utils/assertDefined';
|
|
11
|
+
// Export constants
|
|
12
|
+
export * from './constants';
|
|
13
|
+
// Export signing algorithms (Ultra-DRY)
|
|
14
|
+
export * from './signing';
|
|
15
|
+
// Attestation verification has been moved to the client package
|
|
16
|
+
// Export algorithm conversion utilities
|
|
17
|
+
export { toDynamicSigningAlgorithm, fromDynamicSigningAlgorithm, } from './constants/algorithms';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,iDAAiD;AACjD,cAAc,YAAY,CAAC;AAE3B,gBAAgB;AAChB,cAAc,UAAU,CAAC;AAEzB,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,mBAAmB;AACnB,cAAc,uBAAuB,CAAC;AAEtC,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAE5B,wCAAwC;AACxC,cAAc,WAAW,CAAC;AAE1B,gEAAgE;AAEhE,wCAAwC;AACxC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC","sourcesContent":["// Export types\nexport * from './types';\n\n// Export all message schemas, types, and classes\nexport * from './messages';\n\n// Export codecs\nexport * from './codecs';\n\n// Export crypto functions\nexport * from './crypto';\n\n// Export utilities\nexport * from './utils/assertDefined';\n\n// Export constants\nexport * from './constants';\n\n// Export signing algorithms (Ultra-DRY)\nexport * from './signing';\n\n// Attestation verification has been moved to the client package\n\n// Export algorithm conversion utilities\nexport {\n toDynamicSigningAlgorithm,\n fromDynamicSigningAlgorithm,\n} from './constants/algorithms';\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { TypeOf } from 'io-ts';
|
|
2
|
+
/**
|
|
3
|
+
* Connection Acknowledgment Request Runtime Data
|
|
4
|
+
*/
|
|
5
|
+
export interface ConnectionAckRequestData {
|
|
6
|
+
connectionId?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Connection Acknowledgment Request Wire Format
|
|
10
|
+
*/
|
|
11
|
+
export interface ConnectionAckRequestWire {
|
|
12
|
+
type: 'connection_ack';
|
|
13
|
+
version: 1;
|
|
14
|
+
connectionId?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Connection Acknowledgment Request Schema (built using Ultra-DRY utilities)
|
|
18
|
+
*/
|
|
19
|
+
export declare const ConnectionAckRequestSchema: import("io-ts").Type<any, any, unknown>;
|
|
20
|
+
export type ConnectionAckRequest = TypeOf<typeof ConnectionAckRequestSchema>;
|
|
21
|
+
/**
|
|
22
|
+
* Connection Acknowledgment V1 Request Message Class (Ultra-DRY implementation)
|
|
23
|
+
*/
|
|
24
|
+
export declare const ConnectionAckV1RequestMessage: {
|
|
25
|
+
new (data: ConnectionAckRequestData): {
|
|
26
|
+
readonly type: "connection_ack";
|
|
27
|
+
readonly version: 1;
|
|
28
|
+
encode(): any;
|
|
29
|
+
readonly data: ConnectionAckRequestData;
|
|
30
|
+
getData(): ConnectionAckRequestData;
|
|
31
|
+
};
|
|
32
|
+
readonly MESSAGE_TYPE: "connection_ack";
|
|
33
|
+
readonly MESSAGE_VERSION: 1;
|
|
34
|
+
readonly schema: import("io-ts").Type<any, any, unknown>;
|
|
35
|
+
decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
|
|
36
|
+
readonly type: "connection_ack";
|
|
37
|
+
readonly version: 1;
|
|
38
|
+
encode(): any;
|
|
39
|
+
readonly data: ConnectionAckRequestData;
|
|
40
|
+
getData(): ConnectionAckRequestData;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=ConnectionAckV1Request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionAckV1Request.d.ts","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,MAAM,EAAE,MAAM,OAAO,CAAC;AAG1E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,yCAMtC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;CAQxC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { union, string, undefined as undefinedType } from 'io-ts';
|
|
2
|
+
import { buildMessageSchema, createSimpleMessage } from './utils';
|
|
3
|
+
/**
|
|
4
|
+
* Connection Acknowledgment Request Schema (built using Ultra-DRY utilities)
|
|
5
|
+
*/
|
|
6
|
+
export const ConnectionAckRequestSchema = buildMessageSchema('connection_ack', 1, {
|
|
7
|
+
connectionId: union([string, undefinedType]), // Optional string connectionId
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* Connection Acknowledgment V1 Request Message Class (Ultra-DRY implementation)
|
|
11
|
+
*/
|
|
12
|
+
export const ConnectionAckV1RequestMessage = createSimpleMessage({
|
|
13
|
+
messageType: 'connection_ack',
|
|
14
|
+
version: 1,
|
|
15
|
+
schema: ConnectionAckRequestSchema,
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=ConnectionAckV1Request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionAckV1Request.js","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,aAAa,EAAU,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkBlE;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAC1D,gBAAgB,EAChB,CAAC,EACD;IACE,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,+BAA+B;CAC9E,CACF,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAI9D;IACA,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,0BAA0B;CACnC,CAAC,CAAC","sourcesContent":["import { union, string, undefined as undefinedType, TypeOf } from 'io-ts';\nimport { buildMessageSchema, createSimpleMessage } from './utils';\n\n/**\n * Connection Acknowledgment Request Runtime Data\n */\nexport interface ConnectionAckRequestData {\n connectionId?: string;\n}\n\n/**\n * Connection Acknowledgment Request Wire Format\n */\nexport interface ConnectionAckRequestWire {\n type: 'connection_ack';\n version: 1;\n connectionId?: string;\n}\n\n/**\n * Connection Acknowledgment Request Schema (built using Ultra-DRY utilities)\n */\nexport const ConnectionAckRequestSchema = buildMessageSchema(\n 'connection_ack',\n 1,\n {\n connectionId: union([string, undefinedType]), // Optional string connectionId\n }\n);\n\nexport type ConnectionAckRequest = TypeOf<typeof ConnectionAckRequestSchema>;\n\n/**\n * Connection Acknowledgment V1 Request Message Class (Ultra-DRY implementation)\n */\nexport const ConnectionAckV1RequestMessage = createSimpleMessage<\n ConnectionAckRequestData,\n 'connection_ack',\n 1\n>({\n messageType: 'connection_ack',\n version: 1,\n schema: ConnectionAckRequestSchema,\n});\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TypeOf } from 'io-ts';
|
|
2
|
+
/**
|
|
3
|
+
* Connection Acknowledgment Response Runtime Data
|
|
4
|
+
*/
|
|
5
|
+
export interface ConnectionAckResponseData {
|
|
6
|
+
status: 'acknowledged';
|
|
7
|
+
timestamp: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Connection Acknowledgment Response Wire Format
|
|
11
|
+
*/
|
|
12
|
+
export interface ConnectionAckResponseWire {
|
|
13
|
+
type: 'connection_ack_response';
|
|
14
|
+
version: 1;
|
|
15
|
+
status: 'acknowledged';
|
|
16
|
+
timestamp: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Connection Acknowledgment Response Schema (built using Ultra-DRY utilities)
|
|
20
|
+
*/
|
|
21
|
+
export declare const ConnectionAckResponseSchema: import("io-ts").Type<any, any, unknown>;
|
|
22
|
+
export type ConnectionAckResponse = TypeOf<typeof ConnectionAckResponseSchema>;
|
|
23
|
+
/**
|
|
24
|
+
* Connection Acknowledgment V1 Response Message Class (Ultra-DRY implementation)
|
|
25
|
+
*/
|
|
26
|
+
export declare const ConnectionAckV1ResponseMessage: {
|
|
27
|
+
new (data: ConnectionAckResponseData): {
|
|
28
|
+
readonly type: "connection_ack_response";
|
|
29
|
+
readonly version: 1;
|
|
30
|
+
encode(): any;
|
|
31
|
+
readonly data: ConnectionAckResponseData;
|
|
32
|
+
getData(): ConnectionAckResponseData;
|
|
33
|
+
};
|
|
34
|
+
readonly MESSAGE_TYPE: "connection_ack_response";
|
|
35
|
+
readonly MESSAGE_VERSION: 1;
|
|
36
|
+
readonly schema: import("io-ts").Type<any, any, unknown>;
|
|
37
|
+
decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
|
|
38
|
+
readonly type: "connection_ack_response";
|
|
39
|
+
readonly version: 1;
|
|
40
|
+
encode(): any;
|
|
41
|
+
readonly data: ConnectionAckResponseData;
|
|
42
|
+
getData(): ConnectionAckResponseData;
|
|
43
|
+
}>;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=ConnectionAckV1Response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionAckV1Response.d.ts","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,OAAO,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,yCAOvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;CAQzC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { literal, string } from 'io-ts';
|
|
2
|
+
import { buildMessageSchema, createSimpleMessage } from './utils';
|
|
3
|
+
/**
|
|
4
|
+
* Connection Acknowledgment Response Schema (built using Ultra-DRY utilities)
|
|
5
|
+
*/
|
|
6
|
+
export const ConnectionAckResponseSchema = buildMessageSchema('connection_ack_response', 1, {
|
|
7
|
+
status: literal('acknowledged'),
|
|
8
|
+
timestamp: string, // ISO timestamp string
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Connection Acknowledgment V1 Response Message Class (Ultra-DRY implementation)
|
|
12
|
+
*/
|
|
13
|
+
export const ConnectionAckV1ResponseMessage = createSimpleMessage({
|
|
14
|
+
messageType: 'connection_ack_response',
|
|
15
|
+
version: 1,
|
|
16
|
+
schema: ConnectionAckResponseSchema,
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=ConnectionAckV1Response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionAckV1Response.js","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAU,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAoBlE;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAC3D,yBAAyB,EACzB,CAAC,EACD;IACE,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,uBAAuB;CAC3C,CACF,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,mBAAmB,CAI/D;IACA,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,2BAA2B;CACpC,CAAC,CAAC","sourcesContent":["import { literal, string, TypeOf } from 'io-ts';\nimport { buildMessageSchema, createSimpleMessage } from './utils';\n\n/**\n * Connection Acknowledgment Response Runtime Data\n */\nexport interface ConnectionAckResponseData {\n status: 'acknowledged';\n timestamp: string;\n}\n\n/**\n * Connection Acknowledgment Response Wire Format\n */\nexport interface ConnectionAckResponseWire {\n type: 'connection_ack_response';\n version: 1;\n status: 'acknowledged';\n timestamp: string;\n}\n\n/**\n * Connection Acknowledgment Response Schema (built using Ultra-DRY utilities)\n */\nexport const ConnectionAckResponseSchema = buildMessageSchema(\n 'connection_ack_response',\n 1,\n {\n status: literal('acknowledged'),\n timestamp: string, // ISO timestamp string\n }\n);\n\nexport type ConnectionAckResponse = TypeOf<typeof ConnectionAckResponseSchema>;\n\n/**\n * Connection Acknowledgment V1 Response Message Class (Ultra-DRY implementation)\n */\nexport const ConnectionAckV1ResponseMessage = createSimpleMessage<\n ConnectionAckResponseData,\n 'connection_ack_response',\n 1\n>({\n messageType: 'connection_ack_response',\n version: 1,\n schema: ConnectionAckResponseSchema,\n});\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TypeOf } from 'io-ts';
|
|
2
|
+
/**
|
|
3
|
+
* Handshake Request Runtime Data
|
|
4
|
+
*/
|
|
5
|
+
export interface HandshakeRequestData {
|
|
6
|
+
challenge: Uint8Array;
|
|
7
|
+
nonce: Uint8Array;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Handshake Request Wire Format
|
|
11
|
+
*/
|
|
12
|
+
export interface HandshakeRequestWire {
|
|
13
|
+
type: 'handshake';
|
|
14
|
+
version: 1;
|
|
15
|
+
challenge: string;
|
|
16
|
+
nonce: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Handshake Request Schema (built using Ultra-DRY utilities)
|
|
20
|
+
*/
|
|
21
|
+
export declare const HandshakeRequestSchema: import("io-ts").Type<any, any, unknown>;
|
|
22
|
+
export type HandshakeRequest = TypeOf<typeof HandshakeRequestSchema>;
|
|
23
|
+
/**
|
|
24
|
+
* Handshake V1 Request Message Class (Ultra-DRY implementation)
|
|
25
|
+
*/
|
|
26
|
+
export declare const HandshakeV1RequestMessage: {
|
|
27
|
+
new (data: HandshakeRequestData): {
|
|
28
|
+
readonly type: "handshake";
|
|
29
|
+
readonly version: 1;
|
|
30
|
+
encode(): HandshakeRequestWire;
|
|
31
|
+
readonly data: HandshakeRequestData;
|
|
32
|
+
getData(): HandshakeRequestData;
|
|
33
|
+
};
|
|
34
|
+
readonly MESSAGE_TYPE: "handshake";
|
|
35
|
+
readonly MESSAGE_VERSION: 1;
|
|
36
|
+
readonly schema: import("io-ts").Type<any, any, unknown>;
|
|
37
|
+
decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
|
|
38
|
+
readonly type: "handshake";
|
|
39
|
+
readonly version: 1;
|
|
40
|
+
encode(): HandshakeRequestWire;
|
|
41
|
+
readonly data: HandshakeRequestData;
|
|
42
|
+
getData(): HandshakeRequestData;
|
|
43
|
+
}>;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=HandshakeV1Request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HandshakeV1Request.d.ts","sourceRoot":"","sources":["../../src/messages/HandshakeV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQ/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,yCAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;CAepC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Uint8ArrayCodec } from '../codecs';
|
|
2
|
+
import { buildMessageSchema, createStandardMessage, createStandardDecoder, } from './utils';
|
|
3
|
+
/**
|
|
4
|
+
* Handshake Request Schema (built using Ultra-DRY utilities)
|
|
5
|
+
*/
|
|
6
|
+
export const HandshakeRequestSchema = buildMessageSchema('handshake', 1, {
|
|
7
|
+
challenge: Uint8ArrayCodec,
|
|
8
|
+
nonce: Uint8ArrayCodec,
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Handshake V1 Request Message Class (Ultra-DRY implementation)
|
|
12
|
+
*/
|
|
13
|
+
export const HandshakeV1RequestMessage = createStandardMessage({
|
|
14
|
+
messageType: 'handshake',
|
|
15
|
+
version: 1,
|
|
16
|
+
schema: HandshakeRequestSchema,
|
|
17
|
+
encodeData: (data) => HandshakeRequestSchema.encode({
|
|
18
|
+
type: 'handshake',
|
|
19
|
+
version: 1,
|
|
20
|
+
challenge: data.challenge,
|
|
21
|
+
nonce: data.nonce,
|
|
22
|
+
}),
|
|
23
|
+
decodeData: createStandardDecoder((decoded) => ({
|
|
24
|
+
challenge: decoded.challenge,
|
|
25
|
+
nonce: decoded.nonce,
|
|
26
|
+
})),
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=HandshakeV1Request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HandshakeV1Request.js","sourceRoot":"","sources":["../../src/messages/HandshakeV1Request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAoBjB;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC,EAAE;IACvE,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,eAAe;CACvB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;IAC7D,WAAW,EAAE,WAAoB;IACjC,OAAO,EAAE,CAAU;IACnB,MAAM,EAAE,sBAAsB;IAC9B,UAAU,EAAE,CAAC,IAA0B,EAAwB,EAAE,CAC/D,sBAAsB,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;IACJ,UAAU,EAAE,qBAAqB,CAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { TypeOf } from 'io-ts';\nimport { Uint8ArrayCodec } from '../codecs';\nimport {\n buildMessageSchema,\n createStandardMessage,\n createStandardDecoder,\n} from './utils';\n\n/**\n * Handshake Request Runtime Data\n */\nexport interface HandshakeRequestData {\n challenge: Uint8Array;\n nonce: Uint8Array;\n}\n\n/**\n * Handshake Request Wire Format\n */\nexport interface HandshakeRequestWire {\n type: 'handshake';\n version: 1;\n challenge: string; // hex string\n nonce: string; // hex string\n}\n\n/**\n * Handshake Request Schema (built using Ultra-DRY utilities)\n */\nexport const HandshakeRequestSchema = buildMessageSchema('handshake', 1, {\n challenge: Uint8ArrayCodec,\n nonce: Uint8ArrayCodec,\n});\n\nexport type HandshakeRequest = TypeOf<typeof HandshakeRequestSchema>;\n\n/**\n * Handshake V1 Request Message Class (Ultra-DRY implementation)\n */\nexport const HandshakeV1RequestMessage = createStandardMessage({\n messageType: 'handshake' as const,\n version: 1 as const,\n schema: HandshakeRequestSchema,\n encodeData: (data: HandshakeRequestData): HandshakeRequestWire =>\n HandshakeRequestSchema.encode({\n type: 'handshake',\n version: 1,\n challenge: data.challenge,\n nonce: data.nonce,\n }),\n decodeData: createStandardDecoder<HandshakeRequestData>((decoded) => ({\n challenge: decoded.challenge,\n nonce: decoded.nonce,\n })),\n});\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { TypeOf } from 'io-ts';
|
|
2
|
+
/**
|
|
3
|
+
* Handshake Response Runtime Data
|
|
4
|
+
*/
|
|
5
|
+
export interface HandshakeResponseData {
|
|
6
|
+
encapsulatedSharedSecret: string;
|
|
7
|
+
attestationDoc: string;
|
|
8
|
+
connectionId: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Handshake Response Wire Format
|
|
12
|
+
*/
|
|
13
|
+
export interface HandshakeResponseWire {
|
|
14
|
+
type: 'handshake_response';
|
|
15
|
+
version: 1;
|
|
16
|
+
encapsulatedSharedSecret: string;
|
|
17
|
+
attestationDoc: string;
|
|
18
|
+
connectionId: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Handshake Response Schema (built using Ultra-DRY utilities)
|
|
22
|
+
*/
|
|
23
|
+
export declare const HandshakeResponseSchema: import("io-ts").Type<any, any, unknown>;
|
|
24
|
+
export type HandshakeResponse = TypeOf<typeof HandshakeResponseSchema>;
|
|
25
|
+
/**
|
|
26
|
+
* Handshake V1 Response Message Class (Ultra-DRY implementation)
|
|
27
|
+
*/
|
|
28
|
+
export declare const HandshakeV1ResponseMessage: {
|
|
29
|
+
new (data: HandshakeResponseData): {
|
|
30
|
+
readonly type: "handshake_response";
|
|
31
|
+
readonly version: 1;
|
|
32
|
+
encode(): any;
|
|
33
|
+
readonly data: HandshakeResponseData;
|
|
34
|
+
getData(): HandshakeResponseData;
|
|
35
|
+
};
|
|
36
|
+
readonly MESSAGE_TYPE: "handshake_response";
|
|
37
|
+
readonly MESSAGE_VERSION: 1;
|
|
38
|
+
readonly schema: import("io-ts").Type<any, any, unknown>;
|
|
39
|
+
decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
|
|
40
|
+
readonly type: "handshake_response";
|
|
41
|
+
readonly version: 1;
|
|
42
|
+
encode(): any;
|
|
43
|
+
readonly data: HandshakeResponseData;
|
|
44
|
+
getData(): HandshakeResponseData;
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=HandshakeV1Response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HandshakeV1Response.d.ts","sourceRoot":"","sources":["../../src/messages/HandshakeV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,OAAO,CAAC;AAGvC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,yCAQnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;CAQrC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { string } from 'io-ts';
|
|
2
|
+
import { buildMessageSchema, createSimpleMessage } from './utils';
|
|
3
|
+
/**
|
|
4
|
+
* Handshake Response Schema (built using Ultra-DRY utilities)
|
|
5
|
+
*/
|
|
6
|
+
export const HandshakeResponseSchema = buildMessageSchema('handshake_response', 1, {
|
|
7
|
+
encapsulatedSharedSecret: string,
|
|
8
|
+
attestationDoc: string,
|
|
9
|
+
connectionId: string,
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Handshake V1 Response Message Class (Ultra-DRY implementation)
|
|
13
|
+
*/
|
|
14
|
+
export const HandshakeV1ResponseMessage = createSimpleMessage({
|
|
15
|
+
messageType: 'handshake_response',
|
|
16
|
+
version: 1,
|
|
17
|
+
schema: HandshakeResponseSchema,
|
|
18
|
+
});
|
|
19
|
+
// HandshakeResponse naturally implements IMessageConstructor through its static properties
|
|
20
|
+
//# sourceMappingURL=HandshakeV1Response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HandshakeV1Response.js","sourceRoot":"","sources":["../../src/messages/HandshakeV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAsBlE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CACvD,oBAAoB,EACpB,CAAC,EACD;IACE,wBAAwB,EAAE,MAAM;IAChC,cAAc,EAAE,MAAM;IACtB,YAAY,EAAE,MAAM;CACrB,CACF,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,mBAAmB,CAI3D;IACA,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,uBAAuB;CAChC,CAAC,CAAC;AAEH,2FAA2F","sourcesContent":["import { string, TypeOf } from 'io-ts';\nimport { buildMessageSchema, createSimpleMessage } from './utils';\n\n/**\n * Handshake Response Runtime Data\n */\nexport interface HandshakeResponseData {\n encapsulatedSharedSecret: string; // hex-encoded\n attestationDoc: string; // hex-encoded\n connectionId: string; // Server's connection ID for key derivation\n}\n\n/**\n * Handshake Response Wire Format\n */\nexport interface HandshakeResponseWire {\n type: 'handshake_response';\n version: 1;\n encapsulatedSharedSecret: string; // hex-encoded\n attestationDoc: string; // base64-encoded\n connectionId: string; // Server's connection ID for key derivation\n}\n\n/**\n * Handshake Response Schema (built using Ultra-DRY utilities)\n */\nexport const HandshakeResponseSchema = buildMessageSchema(\n 'handshake_response',\n 1,\n {\n encapsulatedSharedSecret: string,\n attestationDoc: string,\n connectionId: string,\n }\n);\n\nexport type HandshakeResponse = TypeOf<typeof HandshakeResponseSchema>;\n\n/**\n * Handshake V1 Response Message Class (Ultra-DRY implementation)\n */\nexport const HandshakeV1ResponseMessage = createSimpleMessage<\n HandshakeResponseData,\n 'handshake_response',\n 1\n>({\n messageType: 'handshake_response',\n version: 1,\n schema: HandshakeResponseSchema,\n});\n\n// HandshakeResponse naturally implements IMessageConstructor through its static properties\n"]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { TypeOf } from 'io-ts';
|
|
2
|
+
import { HashAlgorithm } from '../constants';
|
|
3
|
+
import { type EncryptedKeyshare } from '../codecs/EncryptedKeyshareCodec';
|
|
4
|
+
import { SigningAlgorithm } from '@dynamic-labs-wallet/core';
|
|
5
|
+
/**
|
|
6
|
+
* Sign Message Request Runtime Data
|
|
7
|
+
*/
|
|
8
|
+
export interface SignMessageRequestData {
|
|
9
|
+
relayDomain: string;
|
|
10
|
+
signingAlgo: SigningAlgorithm;
|
|
11
|
+
hashAlgo?: HashAlgorithm;
|
|
12
|
+
derivationPath?: Uint32Array;
|
|
13
|
+
tweak?: Uint8Array;
|
|
14
|
+
keyshare: EncryptedKeyshare;
|
|
15
|
+
message: Uint8Array | string;
|
|
16
|
+
roomUuid: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sign Message Request Wire Format
|
|
20
|
+
*/
|
|
21
|
+
export interface SignMessageRequestWire {
|
|
22
|
+
type: 'signMessage';
|
|
23
|
+
version: 1;
|
|
24
|
+
relayDomain: string;
|
|
25
|
+
signingAlgo: SigningAlgorithm;
|
|
26
|
+
hashAlgo?: HashAlgorithm;
|
|
27
|
+
derivationPath?: string;
|
|
28
|
+
tweak?: string;
|
|
29
|
+
keyshare: {
|
|
30
|
+
salt: string;
|
|
31
|
+
encryptedPayload: string;
|
|
32
|
+
};
|
|
33
|
+
message: string;
|
|
34
|
+
roomUuid: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Sign Message Request Schema - uses codecs that handle both formats automatically
|
|
38
|
+
*/
|
|
39
|
+
export declare const SignMessageRequestSchema: import("io-ts").Type<any, any, unknown>;
|
|
40
|
+
export type SignMessageRequest = TypeOf<typeof SignMessageRequestSchema>;
|
|
41
|
+
/**
|
|
42
|
+
* Sign Message V1 Request Message Class - Clean implementation using createComplexEncoder
|
|
43
|
+
*/
|
|
44
|
+
export declare const SignMessageV1RequestMessage: {
|
|
45
|
+
new (data: SignMessageRequestData): {
|
|
46
|
+
readonly type: "signMessage";
|
|
47
|
+
readonly version: 1;
|
|
48
|
+
encode(): unknown;
|
|
49
|
+
readonly data: SignMessageRequestData;
|
|
50
|
+
getData(): SignMessageRequestData;
|
|
51
|
+
};
|
|
52
|
+
readonly MESSAGE_TYPE: "signMessage";
|
|
53
|
+
readonly MESSAGE_VERSION: 1;
|
|
54
|
+
readonly schema: import("io-ts").Type<any, any, unknown>;
|
|
55
|
+
decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
|
|
56
|
+
readonly type: "signMessage";
|
|
57
|
+
readonly version: 1;
|
|
58
|
+
encode(): unknown;
|
|
59
|
+
readonly data: SignMessageRequestData;
|
|
60
|
+
getData(): SignMessageRequestData;
|
|
61
|
+
}>;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=SignMessageV1Request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignMessageV1Request.d.ts","sourceRoot":"","sources":["../../src/messages/SignMessageV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EACL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,yCAUpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;CAuBtC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { string } from 'io-ts';
|
|
2
|
+
import { Uint32ArrayCodec, Uint8ArrayCodec } from '../codecs';
|
|
3
|
+
import { SignatureAlgoSchema, fromDynamicSigningAlgorithm, } from '../constants';
|
|
4
|
+
import { DomainCodec } from '../codecs/DomainCodec';
|
|
5
|
+
import { EncryptedKeyshareCodec, } from '../codecs/EncryptedKeyshareCodec';
|
|
6
|
+
import { buildMessageSchema, createStandardMessage, createStandardDecoder, createComplexEncoder, } from './utils';
|
|
7
|
+
import { Uint8ArrayOrHexCodec } from '../codecs/Uint8ArrayOrHexCodec';
|
|
8
|
+
/**
|
|
9
|
+
* Sign Message Request Schema - uses codecs that handle both formats automatically
|
|
10
|
+
*/
|
|
11
|
+
export const SignMessageRequestSchema = buildMessageSchema('signMessage', 1, {
|
|
12
|
+
relayDomain: DomainCodec,
|
|
13
|
+
keyshare: EncryptedKeyshareCodec,
|
|
14
|
+
message: Uint8ArrayOrHexCodec,
|
|
15
|
+
roomUuid: string,
|
|
16
|
+
}, SignatureAlgoSchema);
|
|
17
|
+
/**
|
|
18
|
+
* Sign Message V1 Request Message Class - Clean implementation using createComplexEncoder
|
|
19
|
+
*/
|
|
20
|
+
export const SignMessageV1RequestMessage = createStandardMessage({
|
|
21
|
+
messageType: 'signMessage',
|
|
22
|
+
version: 1,
|
|
23
|
+
schema: SignMessageRequestSchema,
|
|
24
|
+
encodeData: createComplexEncoder('signMessage', 1, {
|
|
25
|
+
signingAlgo: (value) => fromDynamicSigningAlgorithm(value),
|
|
26
|
+
derivationPath: (value) => Uint32ArrayCodec.encode(value),
|
|
27
|
+
tweak: (value) => Uint8ArrayCodec.encode(value),
|
|
28
|
+
keyshare: (value) => EncryptedKeyshareCodec.encode(value),
|
|
29
|
+
message: (value) => Uint8ArrayOrHexCodec.encode(value),
|
|
30
|
+
}),
|
|
31
|
+
decodeData: createStandardDecoder((decoded) => ({
|
|
32
|
+
relayDomain: decoded.relayDomain,
|
|
33
|
+
signingAlgo: decoded.signingAlgo,
|
|
34
|
+
hashAlgo: decoded.hashAlgo,
|
|
35
|
+
derivationPath: decoded.derivationPath,
|
|
36
|
+
tweak: decoded.tweak,
|
|
37
|
+
keyshare: decoded.keyshare,
|
|
38
|
+
message: decoded.message,
|
|
39
|
+
roomUuid: decoded.roomUuid,
|
|
40
|
+
})),
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=SignMessageV1Request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignMessageV1Request.js","sourceRoot":"","sources":["../../src/messages/SignMessageV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAEL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,sBAAsB,GAEvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAoCtE;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CACxD,aAAa,EACb,CAAC,EACD;IACE,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,MAAM;CACjB,EACD,mBAAmB,CACpB,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;IAC/D,WAAW,EAAE,aAAsB;IACnC,OAAO,EAAE,CAAU;IACnB,MAAM,EAAE,wBAAwB;IAChC,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,CAAC,EAAE;QACjD,WAAW,EAAE,CAAC,KAAuB,EAAE,EAAE,CACvC,2BAA2B,CAAC,KAAK,CAAC;QACpC,cAAc,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;QACtE,KAAK,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3D,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE,CACrC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC,KAA0B,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;KAC5E,CAAC;IACF,UAAU,EAAE,qBAAqB,CAAyB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { string, TypeOf } from 'io-ts';\nimport { Uint32ArrayCodec, Uint8ArrayCodec } from '../codecs';\nimport {\n HashAlgorithm,\n SignatureAlgoSchema,\n fromDynamicSigningAlgorithm,\n} from '../constants';\nimport { DomainCodec } from '../codecs/DomainCodec';\nimport {\n EncryptedKeyshareCodec,\n type EncryptedKeyshare,\n} from '../codecs/EncryptedKeyshareCodec';\nimport {\n buildMessageSchema,\n createStandardMessage,\n createStandardDecoder,\n createComplexEncoder,\n} from './utils';\nimport { Uint8ArrayOrHexCodec } from '../codecs/Uint8ArrayOrHexCodec';\nimport { SigningAlgorithm } from '@dynamic-labs-wallet/core';\n\n/**\n * Sign Message Request Runtime Data\n */\nexport interface SignMessageRequestData {\n relayDomain: string;\n signingAlgo: SigningAlgorithm;\n hashAlgo?: HashAlgorithm;\n derivationPath?: Uint32Array;\n tweak?: Uint8Array;\n keyshare: EncryptedKeyshare;\n message: Uint8Array | string;\n roomUuid: string;\n}\n\n/**\n * Sign Message Request Wire Format\n */\nexport interface SignMessageRequestWire {\n type: 'signMessage';\n version: 1;\n relayDomain: string;\n signingAlgo: SigningAlgorithm;\n hashAlgo?: HashAlgorithm;\n derivationPath?: string; // hex string\n tweak?: string; // hex string\n keyshare: {\n salt: string; // hex string\n encryptedPayload: string; // hex string\n };\n message: string; // hex string\n roomUuid: string;\n}\n\n/**\n * Sign Message Request Schema - uses codecs that handle both formats automatically\n */\nexport const SignMessageRequestSchema = buildMessageSchema(\n 'signMessage',\n 1,\n {\n relayDomain: DomainCodec,\n keyshare: EncryptedKeyshareCodec,\n message: Uint8ArrayOrHexCodec,\n roomUuid: string,\n },\n SignatureAlgoSchema\n);\n\nexport type SignMessageRequest = TypeOf<typeof SignMessageRequestSchema>;\n\n/**\n * Sign Message V1 Request Message Class - Clean implementation using createComplexEncoder\n */\nexport const SignMessageV1RequestMessage = createStandardMessage({\n messageType: 'signMessage' as const,\n version: 1 as const,\n schema: SignMessageRequestSchema,\n encodeData: createComplexEncoder('signMessage', 1, {\n signingAlgo: (value: SigningAlgorithm) =>\n fromDynamicSigningAlgorithm(value),\n derivationPath: (value: Uint32Array) => Uint32ArrayCodec.encode(value),\n tweak: (value: Uint8Array) => Uint8ArrayCodec.encode(value),\n keyshare: (value: EncryptedKeyshare) =>\n EncryptedKeyshareCodec.encode(value),\n message: (value: Uint8Array | string) => Uint8ArrayOrHexCodec.encode(value),\n }),\n decodeData: createStandardDecoder<SignMessageRequestData>((decoded) => ({\n relayDomain: decoded.relayDomain,\n signingAlgo: decoded.signingAlgo,\n hashAlgo: decoded.hashAlgo,\n derivationPath: decoded.derivationPath,\n tweak: decoded.tweak,\n keyshare: decoded.keyshare,\n message: decoded.message,\n roomUuid: decoded.roomUuid,\n })),\n});\n"]}
|