@digitaldefiance/node-ecies-lib 1.1.11 → 1.1.13
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/README.md +9 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +44 -44
- package/dist/constants.js.map +1 -1
- package/dist/enumerations/index.js +17 -1
- package/dist/enumerations/index.js.map +1 -1
- package/dist/enumerations/pbkdf2-profile.js +5 -2
- package/dist/enumerations/pbkdf2-profile.js.map +1 -1
- package/dist/i18n/ecies-i18n-factory.js +27 -21
- package/dist/i18n/ecies-i18n-factory.js.map +1 -1
- package/dist/i18n/index.js +17 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.js +23 -7
- package/dist/index.js.map +1 -1
- package/dist/interfaces/authenticated-cipher.js +2 -1
- package/dist/interfaces/authenticated-decipher.js +2 -1
- package/dist/interfaces/checksum-config.js +2 -1
- package/dist/interfaces/checksum-consts.js +2 -1
- package/dist/interfaces/constants.js +2 -1
- package/dist/interfaces/ecies-consts.js +2 -1
- package/dist/interfaces/encryption-consts.js +2 -1
- package/dist/interfaces/index.js +33 -17
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/keypair-buffer-with-un-encrypted-private-key.js +2 -1
- package/dist/interfaces/keyring-consts.js +2 -1
- package/dist/interfaces/member-operational.js +2 -1
- package/dist/interfaces/member-with-mnemonic.js +2 -1
- package/dist/interfaces/multi-encrypted-message.js +2 -1
- package/dist/interfaces/multi-encrypted-parsed-header.js +2 -1
- package/dist/interfaces/pbkdf-profiles.js +2 -1
- package/dist/interfaces/pbkdf2-result.js +2 -1
- package/dist/interfaces/signing-key-private-key-info.js +2 -1
- package/dist/interfaces/simple-keypair-buffer.js +2 -1
- package/dist/interfaces/simple-keypair.js +2 -1
- package/dist/interfaces/simple-public-key-only-buffer.js +2 -1
- package/dist/interfaces/simple-public-key-only.js +2 -1
- package/dist/interfaces/single-encrypted-parsed-header.js +2 -1
- package/dist/interfaces/wallet-seed.js +2 -1
- package/dist/interfaces/wrapped-key-consts.js +2 -1
- package/dist/member.js +35 -30
- package/dist/member.js.map +1 -1
- package/dist/services/aes-gcm.js +14 -10
- package/dist/services/aes-gcm.js.map +1 -1
- package/dist/services/ecies/crypto-core.js +29 -25
- package/dist/services/ecies/crypto-core.js.map +1 -1
- package/dist/services/ecies/file.js +39 -2
- package/dist/services/ecies/file.js.map +1 -1
- package/dist/services/ecies/index.js +23 -7
- package/dist/services/ecies/index.js.map +1 -1
- package/dist/services/ecies/multi-recipient.js +50 -46
- package/dist/services/ecies/multi-recipient.js.map +1 -1
- package/dist/services/ecies/service.js +25 -21
- package/dist/services/ecies/service.js.map +1 -1
- package/dist/services/ecies/signature.js +15 -11
- package/dist/services/ecies/signature.js.map +1 -1
- package/dist/services/ecies/single-recipient.js +60 -56
- package/dist/services/ecies/single-recipient.js.map +1 -1
- package/dist/services/ecies/utilities.js +17 -13
- package/dist/services/ecies/utilities.js.map +1 -1
- package/dist/services/index.js +19 -3
- package/dist/services/index.js.map +1 -1
- package/dist/services/pbkdf2.js +25 -20
- package/dist/services/pbkdf2.js.map +1 -1
- package/dist/types.js +2 -1
- package/dist/utils.js +26 -22
- package/dist/utils.js.map +1 -1
- package/package.json +3 -4
- package/dist/interfaces/fec-consts.d.ts +0 -5
- package/dist/interfaces/fec-consts.d.ts.map +0 -1
- package/dist/interfaces/fec-consts.js +0 -2
- package/dist/interfaces/fec-consts.js.map +0 -1
- package/dist/services/ecies/crypto-core.debug.d.ts +0 -13
- package/dist/services/ecies/crypto-core.debug.d.ts.map +0 -1
- package/dist/services/ecies/crypto-core.debug.js +0 -91
- package/dist/services/ecies/crypto-core.debug.js.map +0 -1
- package/dist/services/ecies/debug-aes-gcm.d.ts +0 -2
- package/dist/services/ecies/debug-aes-gcm.d.ts.map +0 -1
- package/dist/services/ecies/debug-aes-gcm.js +0 -106
- package/dist/services/ecies/debug-aes-gcm.js.map +0 -1
- package/dist/services/ecies/debug-ecdh.d.ts +0 -2
- package/dist/services/ecies/debug-ecdh.d.ts.map +0 -1
- package/dist/services/ecies/debug-ecdh.js +0 -123
- package/dist/services/ecies/debug-ecdh.js.map +0 -1
- package/dist/services/ecies/debug-ecies-burnbag.d.ts +0 -2
- package/dist/services/ecies/debug-ecies-burnbag.d.ts.map +0 -1
- package/dist/services/ecies/debug-ecies-burnbag.js +0 -134
- package/dist/services/ecies/debug-ecies-burnbag.js.map +0 -1
- package/dist/services/ecies/debug-ecies.d.ts +0 -2
- package/dist/services/ecies/debug-ecies.d.ts.map +0 -1
- package/dist/services/ecies/debug-ecies.js +0 -110
- package/dist/services/ecies/debug-ecies.js.map +0 -1
- package/dist/services/ecies/debug-test.d.ts +0 -2
- package/dist/services/ecies/debug-test.d.ts.map +0 -1
- package/dist/services/ecies/debug-test.js +0 -57
- package/dist/services/ecies/debug-test.js.map +0 -1
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { ECIES } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import { createECDH } from 'crypto';
|
|
3
|
-
/**
|
|
4
|
-
* Simple debugging script to test ECDH key compatibility issues directly
|
|
5
|
-
*/
|
|
6
|
-
function debugEcdhKeys() {
|
|
7
|
-
console.log('=== Testing ECDH Key Compatibility ===\n');
|
|
8
|
-
try {
|
|
9
|
-
// Create an Alice key pair (first party)
|
|
10
|
-
const aliceEcdh = createECDH(ECIES.CURVE_NAME);
|
|
11
|
-
// Generate keys deterministically
|
|
12
|
-
const aliceSeed = Buffer.from('alice_seed_for_testing_crypto_fix', 'utf8');
|
|
13
|
-
aliceEcdh.setPrivateKey(aliceSeed.subarray(0, 32));
|
|
14
|
-
aliceEcdh.generateKeys();
|
|
15
|
-
const alicePrivateKey = aliceEcdh.getPrivateKey();
|
|
16
|
-
const alicePublicKey = aliceEcdh.getPublicKey();
|
|
17
|
-
// Check if we need to add a prefix to Alice's public key
|
|
18
|
-
const aliceRawPublicKey = alicePublicKey.length === 64
|
|
19
|
-
? alicePublicKey
|
|
20
|
-
: alicePublicKey.subarray(1);
|
|
21
|
-
const aliceFullPublicKey = Buffer.concat([
|
|
22
|
-
Buffer.from([ECIES.PUBLIC_KEY_MAGIC]), // 0x04 prefix
|
|
23
|
-
aliceRawPublicKey,
|
|
24
|
-
]);
|
|
25
|
-
// Create a Bob key pair (second party)
|
|
26
|
-
const bobEcdh = createECDH(ECIES.CURVE_NAME);
|
|
27
|
-
const bobSeed = Buffer.from('bob_seed_for_testing_crypto_fix____', 'utf8');
|
|
28
|
-
bobEcdh.setPrivateKey(bobSeed.subarray(0, 32));
|
|
29
|
-
bobEcdh.generateKeys();
|
|
30
|
-
const bobPrivateKey = bobEcdh.getPrivateKey();
|
|
31
|
-
const bobPublicKey = bobEcdh.getPublicKey();
|
|
32
|
-
// Check if we need to add a prefix to Bob's public key
|
|
33
|
-
const bobRawPublicKey = bobPublicKey.length === 64 ? bobPublicKey : bobPublicKey.subarray(1);
|
|
34
|
-
const bobFullPublicKey = Buffer.concat([
|
|
35
|
-
Buffer.from([ECIES.PUBLIC_KEY_MAGIC]), // 0x04 prefix
|
|
36
|
-
bobRawPublicKey,
|
|
37
|
-
]);
|
|
38
|
-
// Log key formats
|
|
39
|
-
console.log('Alice private key length:', alicePrivateKey.length);
|
|
40
|
-
console.log('Alice raw public key length:', aliceRawPublicKey.length);
|
|
41
|
-
console.log('Alice full public key length:', aliceFullPublicKey.length);
|
|
42
|
-
console.log('Alice full public key prefix:', aliceFullPublicKey[0].toString(16));
|
|
43
|
-
console.log('\nBob private key length:', bobPrivateKey.length);
|
|
44
|
-
console.log('Bob raw public key length:', bobRawPublicKey.length);
|
|
45
|
-
console.log('Bob full public key length:', bobFullPublicKey.length);
|
|
46
|
-
console.log('Bob full public key prefix:', bobFullPublicKey[0].toString(16));
|
|
47
|
-
// Test 1: Try computing shared secret with different key formats
|
|
48
|
-
console.log("\n--- Test 1: Alice computes secret using Bob's public key ---");
|
|
49
|
-
// Try with full key (with 0x04 prefix)
|
|
50
|
-
try {
|
|
51
|
-
const secretWithFullKey = aliceEcdh.computeSecret(bobFullPublicKey);
|
|
52
|
-
console.log('SUCCESS with full key (0x04 prefix)');
|
|
53
|
-
console.log('Shared secret length:', secretWithFullKey.length);
|
|
54
|
-
console.log('Shared secret (hex):', secretWithFullKey.toString('hex').substring(0, 32) + '...');
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
console.error('FAILED with full key (0x04 prefix):', error instanceof Error ? error.message : String(error));
|
|
58
|
-
}
|
|
59
|
-
// Try with raw key (without prefix)
|
|
60
|
-
try {
|
|
61
|
-
const secretWithRawKey = aliceEcdh.computeSecret(bobRawPublicKey);
|
|
62
|
-
console.log('SUCCESS with raw key (no prefix)');
|
|
63
|
-
console.log('Shared secret length:', secretWithRawKey.length);
|
|
64
|
-
console.log('Shared secret (hex):', secretWithRawKey.toString('hex').substring(0, 32) + '...');
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.error('FAILED with raw key (no prefix):', error instanceof Error ? error.message : String(error));
|
|
68
|
-
}
|
|
69
|
-
// Test 2: Bob computes secret using Alice's public key
|
|
70
|
-
console.log("\n--- Test 2: Bob computes secret using Alice's public key ---");
|
|
71
|
-
// Try with full key (with 0x04 prefix)
|
|
72
|
-
try {
|
|
73
|
-
const secretWithFullKey = bobEcdh.computeSecret(aliceFullPublicKey);
|
|
74
|
-
console.log('SUCCESS with full key (0x04 prefix)');
|
|
75
|
-
console.log('Shared secret length:', secretWithFullKey.length);
|
|
76
|
-
console.log('Shared secret (hex):', secretWithFullKey.toString('hex').substring(0, 32) + '...');
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
console.error('FAILED with full key (0x04 prefix):', error instanceof Error ? error.message : String(error));
|
|
80
|
-
}
|
|
81
|
-
// Try with raw key (without prefix)
|
|
82
|
-
try {
|
|
83
|
-
const secretWithRawKey = bobEcdh.computeSecret(aliceRawPublicKey);
|
|
84
|
-
console.log('SUCCESS with raw key (no prefix)');
|
|
85
|
-
console.log('Shared secret length:', secretWithRawKey.length);
|
|
86
|
-
console.log('Shared secret (hex):', secretWithRawKey.toString('hex').substring(0, 32) + '...');
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
console.error('FAILED with raw key (no prefix):', error instanceof Error ? error.message : String(error));
|
|
90
|
-
}
|
|
91
|
-
// Test 3: Verify both sides get the same shared secret
|
|
92
|
-
console.log('\n--- Test 3: Compare computed secrets using consistent format ---');
|
|
93
|
-
// Use the format that worked best in tests 1 and 2
|
|
94
|
-
let aliceSecret, bobSecret;
|
|
95
|
-
try {
|
|
96
|
-
aliceSecret = aliceEcdh.computeSecret(bobRawPublicKey); // Try raw format
|
|
97
|
-
bobSecret = bobEcdh.computeSecret(aliceRawPublicKey);
|
|
98
|
-
console.log("Alice's computed secret:", aliceSecret.toString('hex').substring(0, 32) + '...');
|
|
99
|
-
console.log("Bob's computed secret:", bobSecret.toString('hex').substring(0, 32) + '...');
|
|
100
|
-
console.log('Secrets match?', aliceSecret.equals(bobSecret) ? 'YES' : 'NO');
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
console.error('FAILED comparing secrets:', error instanceof Error ? error.message : String(error));
|
|
104
|
-
// Try with full key format if raw format failed
|
|
105
|
-
try {
|
|
106
|
-
aliceSecret = aliceEcdh.computeSecret(bobFullPublicKey);
|
|
107
|
-
bobSecret = bobEcdh.computeSecret(aliceFullPublicKey);
|
|
108
|
-
console.log("Alice's computed secret (full key):", aliceSecret.toString('hex').substring(0, 32) + '...');
|
|
109
|
-
console.log("Bob's computed secret (full key):", bobSecret.toString('hex').substring(0, 32) + '...');
|
|
110
|
-
console.log('Secrets match?', aliceSecret.equals(bobSecret) ? 'YES' : 'NO');
|
|
111
|
-
}
|
|
112
|
-
catch (innerError) {
|
|
113
|
-
console.error('FAILED with both key formats. Something is fundamentally wrong with the key exchange.', innerError instanceof Error ? innerError.message : String(innerError));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
console.error('An error occurred during ECDH key testing:', error instanceof Error ? error.message : String(error));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// Run the debug test
|
|
122
|
-
debugEcdhKeys();
|
|
123
|
-
//# sourceMappingURL=debug-ecdh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-ecdh.js","sourceRoot":"","sources":["../../../src/services/ecies/debug-ecdh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-ecies-burnbag.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/debug-ecies-burnbag.ts"],"names":[],"mappings":""}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { Constants as AppConstants, ECIES, getEciesI18nEngine, uint8ArrayToHex, } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import { createECDH } from 'crypto';
|
|
3
|
-
import { ECIESService } from './service';
|
|
4
|
-
/**
|
|
5
|
-
* This script simulates how BurnbagMember handles encryption/decryption
|
|
6
|
-
* to help debug issues with the ECIES implementation.
|
|
7
|
-
*/
|
|
8
|
-
function debugEciesBurnbag() {
|
|
9
|
-
console.log('=== ECIES BurnbagMember Debug Test ===\n');
|
|
10
|
-
try {
|
|
11
|
-
// Get the ECIES service from the service provider (exactly like in the tests)
|
|
12
|
-
const config = {
|
|
13
|
-
curveName: AppConstants.ECIES.CURVE_NAME,
|
|
14
|
-
primaryKeyDerivationPath: AppConstants.ECIES.PRIMARY_KEY_DERIVATION_PATH,
|
|
15
|
-
mnemonicStrength: AppConstants.ECIES.MNEMONIC_STRENGTH,
|
|
16
|
-
symmetricAlgorithm: AppConstants.ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
|
|
17
|
-
symmetricKeyBits: AppConstants.ECIES.SYMMETRIC.KEY_BITS,
|
|
18
|
-
symmetricKeyMode: AppConstants.ECIES.SYMMETRIC.MODE,
|
|
19
|
-
};
|
|
20
|
-
const eciesService = new ECIESService(getEciesI18nEngine(), config);
|
|
21
|
-
// Step 1: Generate a mnemonic and wallet (like BrightChainMember.newMember does)
|
|
22
|
-
console.log('Generating wallet...');
|
|
23
|
-
const mnemonic = eciesService.generateNewMnemonic();
|
|
24
|
-
console.log(`Mnemonic: ${mnemonic.toString().substring(0, 20)}...`);
|
|
25
|
-
const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
26
|
-
// Step 2: Get private key from wallet
|
|
27
|
-
const privateKey = wallet.getPrivateKey();
|
|
28
|
-
console.log(`Private Key: ${uint8ArrayToHex(privateKey).substring(0, 16)}...`);
|
|
29
|
-
// Step 3: Get public key with 0x04 prefix (as BrightChainMember does)
|
|
30
|
-
const publicKeyWithPrefix = Buffer.concat([
|
|
31
|
-
Buffer.from([ECIES.PUBLIC_KEY_MAGIC]),
|
|
32
|
-
wallet.getPublicKey(),
|
|
33
|
-
]);
|
|
34
|
-
console.log(`Public Key with Prefix: ${publicKeyWithPrefix
|
|
35
|
-
.toString('hex')
|
|
36
|
-
.substring(0, 16)}...`);
|
|
37
|
-
console.log(`Public Key Length: ${publicKeyWithPrefix.length} bytes`);
|
|
38
|
-
// Validate the key format
|
|
39
|
-
if (publicKeyWithPrefix.length === 65 &&
|
|
40
|
-
publicKeyWithPrefix[0] === ECIES.PUBLIC_KEY_MAGIC) {
|
|
41
|
-
console.log('Public key format is correct (65 bytes with 0x04 prefix)');
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.error('Public key format is INCORRECT!');
|
|
45
|
-
console.log(`Actual format: ${publicKeyWithPrefix.length} bytes, prefix: 0x${publicKeyWithPrefix[0].toString(16)}`);
|
|
46
|
-
}
|
|
47
|
-
// Step 4: Create a test message
|
|
48
|
-
const message = Buffer.from('This is a test message for BrightChainMember encryption/decryption');
|
|
49
|
-
console.log(`\nOriginal Message: ${message.toString()}`);
|
|
50
|
-
// Step 5: Encrypt the message using the public key
|
|
51
|
-
console.log('\nEncrypting message...');
|
|
52
|
-
const encrypted = eciesService.encryptSimpleOrSingle(true, publicKeyWithPrefix, message);
|
|
53
|
-
console.log(`Encrypted size: ${encrypted.length} bytes`);
|
|
54
|
-
console.log(`Encrypted data (hex): ${encrypted.toString('hex').substring(0, 32)}...`);
|
|
55
|
-
// Step 6: Log header information
|
|
56
|
-
console.log('\nHeader Information:');
|
|
57
|
-
// Extract the ephemeral public key (first 65 bytes)
|
|
58
|
-
const ephPublicKey = encrypted.subarray(0, ECIES.PUBLIC_KEY_LENGTH);
|
|
59
|
-
console.log(`Ephemeral Public Key (${ephPublicKey.length} bytes): ${ephPublicKey
|
|
60
|
-
.toString('hex')
|
|
61
|
-
.substring(0, 32)}...`);
|
|
62
|
-
console.log(`Ephemeral Public Key Prefix: 0x${ephPublicKey[0].toString(16)}`);
|
|
63
|
-
// Step 7: Decrypt the message using the private key
|
|
64
|
-
console.log('\nDecrypting message...');
|
|
65
|
-
try {
|
|
66
|
-
const decrypted = eciesService.decryptSimpleOrSingleWithHeader(true, Buffer.from(privateKey), encrypted);
|
|
67
|
-
console.log(`Decrypted Message: ${decrypted.toString()}`);
|
|
68
|
-
console.log('Decryption successful!');
|
|
69
|
-
// Verify that the decrypted message matches the original
|
|
70
|
-
if (decrypted.equals(message)) {
|
|
71
|
-
console.log('✅ Decrypted message matches original!');
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
console.log('❌ Decrypted message does NOT match original!');
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.error('Decryption failed:', error);
|
|
79
|
-
// Try manual decryption for debugging
|
|
80
|
-
console.log('\n--- Attempting manual decryption for debugging ---');
|
|
81
|
-
try {
|
|
82
|
-
// Set up ECDH with the private key
|
|
83
|
-
const ecdh = createECDH(eciesService.curveName);
|
|
84
|
-
ecdh.setPrivateKey(privateKey);
|
|
85
|
-
// Extract header components
|
|
86
|
-
const ephemeralPublicKey = encrypted.subarray(0, ECIES.PUBLIC_KEY_LENGTH);
|
|
87
|
-
const iv = encrypted.subarray(ECIES.PUBLIC_KEY_LENGTH, ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE);
|
|
88
|
-
const authTag = encrypted.subarray(ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE, ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE + ECIES.AUTH_TAG_SIZE);
|
|
89
|
-
const encryptedData = encrypted.subarray(ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE + ECIES.AUTH_TAG_SIZE);
|
|
90
|
-
console.log(`Ephemeral Public Key: ${ephemeralPublicKey
|
|
91
|
-
.toString('hex')
|
|
92
|
-
.substring(0, 16)}...`);
|
|
93
|
-
console.log(`IV: ${iv.toString('hex')}`);
|
|
94
|
-
console.log(`Auth Tag: ${authTag.toString('hex')}`);
|
|
95
|
-
console.log(`Encrypted Data Length: ${encryptedData.length} bytes`);
|
|
96
|
-
// Try to compute shared secret with both full and raw ephemeral key formats
|
|
97
|
-
console.log('\nTrying to compute shared secret...');
|
|
98
|
-
// First try with full key (with 0x04 prefix)
|
|
99
|
-
try {
|
|
100
|
-
const sharedSecretFull = ecdh.computeSecret(ephemeralPublicKey);
|
|
101
|
-
console.log(`✅ Shared secret computed with full key format: ${sharedSecretFull
|
|
102
|
-
.toString('hex')
|
|
103
|
-
.substring(0, 16)}...`);
|
|
104
|
-
}
|
|
105
|
-
catch (e) {
|
|
106
|
-
console.error(`❌ Failed to compute shared secret with full key: ${e instanceof Error ? e.message : String(e)}`);
|
|
107
|
-
}
|
|
108
|
-
// Then try with raw key (without prefix)
|
|
109
|
-
if (ephemeralPublicKey.length === 65 &&
|
|
110
|
-
ephemeralPublicKey[0] === ECIES.PUBLIC_KEY_MAGIC) {
|
|
111
|
-
try {
|
|
112
|
-
const ephRawKey = ephemeralPublicKey.subarray(1);
|
|
113
|
-
const sharedSecretRaw = ecdh.computeSecret(ephRawKey);
|
|
114
|
-
console.log(`✅ Shared secret computed with raw key format: ${sharedSecretRaw
|
|
115
|
-
.toString('hex')
|
|
116
|
-
.substring(0, 16)}...`);
|
|
117
|
-
}
|
|
118
|
-
catch (e) {
|
|
119
|
-
console.error(`❌ Failed to compute shared secret with raw key: ${e instanceof Error ? e.message : String(e)}`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (innerError) {
|
|
124
|
-
console.error('Manual decryption debugging failed:', innerError);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
console.error('Debug test failed:', error);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// Run the debug test
|
|
133
|
-
debugEciesBurnbag();
|
|
134
|
-
//# sourceMappingURL=debug-ecies-burnbag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-ecies-burnbag.js","sourceRoot":"","sources":["../../../src/services/ecies/debug-ecies-burnbag.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-ecies.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/debug-ecies.ts"],"names":[],"mappings":""}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Constants as AppConstants, ECIES, getEciesI18nEngine, } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import { createECDH } from 'crypto';
|
|
3
|
-
import { ECIESService } from './service';
|
|
4
|
-
/**
|
|
5
|
-
* Debug utility for testing ECIES encryption and decryption with fixed keys
|
|
6
|
-
*/
|
|
7
|
-
function debugEciesFunctions() {
|
|
8
|
-
// Get the actual ECIES service from the service provider, same as the tests
|
|
9
|
-
const config = {
|
|
10
|
-
curveName: AppConstants.ECIES.CURVE_NAME,
|
|
11
|
-
primaryKeyDerivationPath: AppConstants.ECIES.PRIMARY_KEY_DERIVATION_PATH,
|
|
12
|
-
mnemonicStrength: AppConstants.ECIES.MNEMONIC_STRENGTH,
|
|
13
|
-
symmetricAlgorithm: AppConstants.ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
|
|
14
|
-
symmetricKeyBits: AppConstants.ECIES.SYMMETRIC.KEY_BITS,
|
|
15
|
-
symmetricKeyMode: AppConstants.ECIES.SYMMETRIC.MODE,
|
|
16
|
-
};
|
|
17
|
-
const service = new ECIESService(getEciesI18nEngine(), config);
|
|
18
|
-
console.log('\n=== ECIES Debug Test ===\n');
|
|
19
|
-
try {
|
|
20
|
-
// Create fixed key pairs for reproducibility
|
|
21
|
-
const aliceEcdh = createECDH(ECIES.CURVE_NAME);
|
|
22
|
-
// Use a fixed seed for deterministic key generation
|
|
23
|
-
const aliceSeed = Buffer.from('alice_fixed_seed_for_reproducible_tests', 'utf8');
|
|
24
|
-
aliceEcdh.setPrivateKey(aliceSeed.subarray(0, 32));
|
|
25
|
-
aliceEcdh.generateKeys();
|
|
26
|
-
const bobEcdh = createECDH(ECIES.CURVE_NAME);
|
|
27
|
-
const bobSeed = Buffer.from('bob_fixed_seed_for_reproducible_tests_', 'utf8');
|
|
28
|
-
bobEcdh.setPrivateKey(bobSeed.subarray(0, 32));
|
|
29
|
-
bobEcdh.generateKeys();
|
|
30
|
-
// Get Alice's keys
|
|
31
|
-
const alicePrivateKey = aliceEcdh.getPrivateKey();
|
|
32
|
-
const alicePublicKey = aliceEcdh.getPublicKey();
|
|
33
|
-
const alicePublicKeyWithPrefix = Buffer.concat([
|
|
34
|
-
Buffer.from([ECIES.PUBLIC_KEY_MAGIC]),
|
|
35
|
-
alicePublicKey.length === 64
|
|
36
|
-
? alicePublicKey
|
|
37
|
-
: alicePublicKey.subarray(1),
|
|
38
|
-
]);
|
|
39
|
-
// Get Bob's keys
|
|
40
|
-
const bobPrivateKey = bobEcdh.getPrivateKey();
|
|
41
|
-
const bobPublicKey = bobEcdh.getPublicKey();
|
|
42
|
-
const bobPublicKeyWithPrefix = Buffer.concat([
|
|
43
|
-
Buffer.from([ECIES.PUBLIC_KEY_MAGIC]),
|
|
44
|
-
bobPublicKey.length === 64 ? bobPublicKey : bobPublicKey.subarray(1),
|
|
45
|
-
]);
|
|
46
|
-
// Log key information
|
|
47
|
-
console.log(`Alice Private Key (${alicePrivateKey.length} bytes): ${alicePrivateKey
|
|
48
|
-
.toString('hex')
|
|
49
|
-
.substring(0, 16)}...`);
|
|
50
|
-
console.log(`Alice Public Key (${alicePublicKeyWithPrefix.length} bytes): ${alicePublicKeyWithPrefix
|
|
51
|
-
.toString('hex')
|
|
52
|
-
.substring(0, 16)}...`);
|
|
53
|
-
console.log(`Alice Public Key Prefix: 0x${alicePublicKeyWithPrefix[0].toString(16)}\n`);
|
|
54
|
-
console.log(`Bob Private Key (${bobPrivateKey.length} bytes): ${bobPrivateKey
|
|
55
|
-
.toString('hex')
|
|
56
|
-
.substring(0, 16)}...`);
|
|
57
|
-
console.log(`Bob Public Key (${bobPublicKeyWithPrefix.length} bytes): ${bobPublicKeyWithPrefix.toString('hex').substring(0, 16)}...`);
|
|
58
|
-
console.log(`Bob Public Key Prefix: 0x${bobPublicKeyWithPrefix[0].toString(16)}\n`);
|
|
59
|
-
// Test simple message encryption/decryption
|
|
60
|
-
console.log('--- Test 1: Simple Encryption/Decryption ---');
|
|
61
|
-
const message = Buffer.from('This is a test message for ECIES encryption and decryption');
|
|
62
|
-
console.log(`Original Message (${message.length} bytes): ${message.toString()}\n`);
|
|
63
|
-
// Alice encrypts a message for Bob
|
|
64
|
-
console.log('Alice encrypts a message for Bob...');
|
|
65
|
-
const encrypted = service.encryptSimpleOrSingle(true, bobPublicKeyWithPrefix, message);
|
|
66
|
-
console.log(`Encrypted Data (${encrypted.length} bytes): ${encrypted
|
|
67
|
-
.toString('hex')
|
|
68
|
-
.substring(0, 32)}...\n`);
|
|
69
|
-
// Direct computations of shared secret for comparison (should match)
|
|
70
|
-
const aliceSharedSecret = aliceEcdh.computeSecret(bobPublicKeyWithPrefix);
|
|
71
|
-
const bobSharedSecret = bobEcdh.computeSecret(alicePublicKeyWithPrefix);
|
|
72
|
-
console.log('Pre-computed shared secrets match:', aliceSharedSecret.equals(bobSharedSecret));
|
|
73
|
-
console.log(`Shared Secret: ${aliceSharedSecret
|
|
74
|
-
.toString('hex')
|
|
75
|
-
.substring(0, 32)}...\n`);
|
|
76
|
-
// Bob decrypts the message
|
|
77
|
-
console.log('Bob decrypts the message...');
|
|
78
|
-
try {
|
|
79
|
-
const decrypted = service.decryptSimpleOrSingleWithHeader(true, bobPrivateKey, encrypted);
|
|
80
|
-
console.log(`Decrypted Message (${decrypted.length} bytes): ${decrypted.toString()}`);
|
|
81
|
-
console.log('Decryption successful:', decrypted.equals(message));
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
console.error('Decryption failed:', error);
|
|
85
|
-
// Extract components for manual debugging
|
|
86
|
-
console.log('\n--- Manual Debug of Encrypted Data ---');
|
|
87
|
-
// The first 65 bytes should be the ephemeral public key
|
|
88
|
-
const ephPublicKey = encrypted.subarray(0, ECIES.PUBLIC_KEY_LENGTH);
|
|
89
|
-
console.log(`Ephemeral Public Key (${ephPublicKey.length} bytes): ${ephPublicKey
|
|
90
|
-
.toString('hex')
|
|
91
|
-
.substring(0, 32)}...`);
|
|
92
|
-
console.log(`Ephemeral Public Key Prefix: 0x${ephPublicKey[0].toString(16)}`);
|
|
93
|
-
// Next 16 bytes are the IV
|
|
94
|
-
const iv = encrypted.subarray(ECIES.PUBLIC_KEY_LENGTH, ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE);
|
|
95
|
-
console.log(`IV (${iv.length} bytes): ${iv.toString('hex')}`);
|
|
96
|
-
// Next 16 bytes are the auth tag
|
|
97
|
-
const authTag = encrypted.subarray(ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE, ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE + ECIES.AUTH_TAG_SIZE);
|
|
98
|
-
console.log(`Auth Tag (${authTag.length} bytes): ${authTag.toString('hex')}`);
|
|
99
|
-
// Remaining bytes are the encrypted content
|
|
100
|
-
const encryptedContent = encrypted.subarray(ECIES.PUBLIC_KEY_LENGTH + ECIES.IV_SIZE + ECIES.AUTH_TAG_SIZE);
|
|
101
|
-
console.log(`Encrypted Content (${encryptedContent.length} bytes): ${encryptedContent.toString('hex').substring(0, 32)}...`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
console.error('An error occurred during ECIES debug test:', error);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// Run the debug test
|
|
109
|
-
debugEciesFunctions();
|
|
110
|
-
//# sourceMappingURL=debug-ecies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-ecies.js","sourceRoot":"","sources":["../../../src/services/ecies/debug-ecies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-test.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/debug-test.ts"],"names":[],"mappings":""}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug test script for ECIES encryption and decryption
|
|
3
|
-
*/
|
|
4
|
-
import { ECIES } from '@digitaldefiance/ecies-lib';
|
|
5
|
-
import { createECDH } from 'crypto';
|
|
6
|
-
import { decryptDebug, encryptDebug } from './crypto-core.debug';
|
|
7
|
-
async function runTest() {
|
|
8
|
-
try {
|
|
9
|
-
console.log('ECIES Debug Test');
|
|
10
|
-
console.log('=================\n');
|
|
11
|
-
// Generate a key pair for testing
|
|
12
|
-
console.log('Generating key pair...');
|
|
13
|
-
const ecdh = createECDH(ECIES.CURVE_NAME);
|
|
14
|
-
ecdh.generateKeys();
|
|
15
|
-
const privateKey = ecdh.getPrivateKey();
|
|
16
|
-
const publicKey = ecdh.getPublicKey();
|
|
17
|
-
console.log('Private key length:', privateKey.length);
|
|
18
|
-
console.log('Public key length:', publicKey.length);
|
|
19
|
-
console.log('Public key prefix:', publicKey[0].toString(16));
|
|
20
|
-
// Create a test message
|
|
21
|
-
const message = Buffer.from('This is a test message for ECIES encryption and decryption');
|
|
22
|
-
console.log('\nOriginal message length:', message.length);
|
|
23
|
-
console.log('Original message:', message.toString());
|
|
24
|
-
// Encrypt the message
|
|
25
|
-
console.log('\n--- Encryption ---');
|
|
26
|
-
const encrypted = encryptDebug(publicKey, message);
|
|
27
|
-
// Decrypt the message
|
|
28
|
-
console.log('\n--- Decryption ---');
|
|
29
|
-
const decrypted = decryptDebug(privateKey, encrypted);
|
|
30
|
-
// Verify the result
|
|
31
|
-
console.log('\n--- Verification ---');
|
|
32
|
-
console.log('Decrypted message length:', decrypted.length);
|
|
33
|
-
console.log('Decrypted message:', decrypted.toString());
|
|
34
|
-
const success = message.equals(decrypted);
|
|
35
|
-
console.log('Decryption successful:', success);
|
|
36
|
-
// Try with a different key pair to simulate the test scenario
|
|
37
|
-
console.log('\n\n=== Test with different public/private key pairs ===');
|
|
38
|
-
const ecdh2 = createECDH(ECIES.CURVE_NAME);
|
|
39
|
-
ecdh2.generateKeys();
|
|
40
|
-
// Now encrypt with one key and decrypt with another (should fail)
|
|
41
|
-
console.log('\n--- Cross-key encryption/decryption (should fail) ---');
|
|
42
|
-
const encrypted2 = encryptDebug(ecdh2.getPublicKey(), message);
|
|
43
|
-
try {
|
|
44
|
-
const decrypted2 = decryptDebug(privateKey, encrypted2);
|
|
45
|
-
console.log('Unexpectedly decrypted with wrong key:', decrypted2.toString());
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
console.log('Expected error when decrypting with wrong key:', error instanceof Error ? error.message : String(error));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
console.error('Test failed:', error);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// Run the test
|
|
56
|
-
runTest().catch(console.error);
|
|
57
|
-
//# sourceMappingURL=debug-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-test.js","sourceRoot":"","sources":["../../../src/services/ecies/debug-test.ts"],"names":[],"mappings":"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"}
|