@digitaldefiance/ecies-lib 3.0.8 → 3.7.3
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 +475 -0
- package/package.json +4 -3
- package/src/builders/ecies-builder.js +5 -9
- package/src/builders/ecies-builder.js.map +1 -1
- package/src/builders/index.js +2 -5
- package/src/builders/index.js.map +1 -1
- package/src/builders/member-builder.js +12 -16
- package/src/builders/member-builder.js.map +1 -1
- package/src/constants.d.ts +14 -0
- package/src/constants.d.ts.map +1 -1
- package/src/constants.js +150 -74
- package/src/constants.js.map +1 -1
- package/src/core/errors/crypto-error.js +10 -14
- package/src/core/errors/crypto-error.js.map +1 -1
- package/src/core/index.js +2 -5
- package/src/core/index.js.map +1 -1
- package/src/core/types/result.js +1 -5
- package/src/core/types/result.js.map +1 -1
- package/src/email-string.js +8 -13
- package/src/email-string.js.map +1 -1
- package/src/enumerations/disposed-error-type.d.ts +12 -0
- package/src/enumerations/disposed-error-type.d.ts.map +1 -0
- package/src/enumerations/disposed-error-type.js +13 -0
- package/src/enumerations/disposed-error-type.js.map +1 -0
- package/src/enumerations/ecies-encryption-type.js +20 -27
- package/src/enumerations/ecies-encryption-type.js.map +1 -1
- package/src/enumerations/ecies-error-type.js +2 -5
- package/src/enumerations/ecies-error-type.js.map +1 -1
- package/src/enumerations/ecies-string-key.d.ts +19 -1
- package/src/enumerations/ecies-string-key.d.ts.map +1 -1
- package/src/enumerations/ecies-string-key.js +21 -5
- package/src/enumerations/ecies-string-key.js.map +1 -1
- package/src/enumerations/guid-brand-type.d.ts +27 -0
- package/src/enumerations/guid-brand-type.d.ts.map +1 -0
- package/src/enumerations/guid-brand-type.js +28 -0
- package/src/enumerations/guid-brand-type.js.map +1 -0
- package/src/enumerations/guid-error-type.d.ts +7 -0
- package/src/enumerations/guid-error-type.d.ts.map +1 -0
- package/src/enumerations/guid-error-type.js +8 -0
- package/src/enumerations/guid-error-type.js.map +1 -0
- package/src/enumerations/id-provider-error-type.d.ts +43 -0
- package/src/enumerations/id-provider-error-type.d.ts.map +1 -0
- package/src/enumerations/id-provider-error-type.js +44 -0
- package/src/enumerations/id-provider-error-type.js.map +1 -0
- package/src/enumerations/index.d.ts +3 -0
- package/src/enumerations/index.d.ts.map +1 -1
- package/src/enumerations/index.js +15 -15
- package/src/enumerations/index.js.map +1 -1
- package/src/enumerations/invalid-email-type.js +2 -5
- package/src/enumerations/invalid-email-type.js.map +1 -1
- package/src/enumerations/length-encoding-type.js +2 -5
- package/src/enumerations/length-encoding-type.js.map +1 -1
- package/src/enumerations/length-error-type.js +2 -5
- package/src/enumerations/length-error-type.js.map +1 -1
- package/src/enumerations/member-error-type.js +3 -6
- package/src/enumerations/member-error-type.js.map +1 -1
- package/src/enumerations/member-type.js +3 -6
- package/src/enumerations/member-type.js.map +1 -1
- package/src/enumerations/password-login-error-type.js +2 -5
- package/src/enumerations/password-login-error-type.js.map +1 -1
- package/src/enumerations/pbkdf2-error-type.js +2 -5
- package/src/enumerations/pbkdf2-error-type.js.map +1 -1
- package/src/enumerations/pbkdf2-profile.js +2 -5
- package/src/enumerations/pbkdf2-profile.js.map +1 -1
- package/src/enumerations/secure-storage-error-type.js +2 -5
- package/src/enumerations/secure-storage-error-type.js.map +1 -1
- package/src/errors/disposed.d.ts +20 -2
- package/src/errors/disposed.d.ts.map +1 -1
- package/src/errors/disposed.js +24 -17
- package/src/errors/disposed.js.map +1 -1
- package/src/errors/ecies.d.ts +46 -1
- package/src/errors/ecies.d.ts.map +1 -1
- package/src/errors/ecies.js +65 -10
- package/src/errors/ecies.js.map +1 -1
- package/src/errors/guid.d.ts +44 -0
- package/src/errors/guid.d.ts.map +1 -0
- package/src/errors/guid.js +81 -0
- package/src/errors/guid.js.map +1 -0
- package/src/errors/id-provider.d.ts +23 -0
- package/src/errors/id-provider.d.ts.map +1 -0
- package/src/errors/id-provider.js +29 -0
- package/src/errors/id-provider.js.map +1 -0
- package/src/errors/index.d.ts +3 -0
- package/src/errors/index.d.ts.map +1 -1
- package/src/errors/index.js +9 -10
- package/src/errors/index.js.map +1 -1
- package/src/errors/invalid-email.js +5 -9
- package/src/errors/invalid-email.js.map +1 -1
- package/src/errors/length.js +5 -9
- package/src/errors/length.js.map +1 -1
- package/src/errors/member.js +5 -9
- package/src/errors/member.js.map +1 -1
- package/src/errors/pbkdf2.js +5 -9
- package/src/errors/pbkdf2.js.map +1 -1
- package/src/errors/secure-storage.js +6 -10
- package/src/errors/secure-storage.js.map +1 -1
- package/src/errors/simple-ecies.js +6 -10
- package/src/errors/simple-ecies.js.map +1 -1
- package/src/errors/simple-test-error.js +1 -5
- package/src/errors/simple-test-error.js.map +1 -1
- package/src/i18n-setup.js +29 -37
- package/src/i18n-setup.js.map +1 -1
- package/src/index.d.ts +10 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +44 -57
- package/src/index.js.map +1 -1
- package/src/interfaces/checksum-config.js +1 -2
- package/src/interfaces/checksum-consts.js +1 -2
- package/src/interfaces/configuration-provenance.d.ts +51 -0
- package/src/interfaces/configuration-provenance.d.ts.map +1 -0
- package/src/interfaces/configuration-provenance.js +23 -0
- package/src/interfaces/configuration-provenance.js.map +1 -0
- package/src/interfaces/constants.d.ts +27 -1
- package/src/interfaces/constants.d.ts.map +1 -1
- package/src/interfaces/constants.js +1 -2
- package/src/interfaces/ecies-config.js +1 -2
- package/src/interfaces/ecies-consts.js +1 -2
- package/src/interfaces/ecies-file-service.js +1 -2
- package/src/interfaces/encrypted-chunk.js +1 -4
- package/src/interfaces/encrypted-chunk.js.map +1 -1
- package/src/interfaces/encryption-state.js +1 -4
- package/src/interfaces/encryption-state.js.map +1 -1
- package/src/interfaces/frontend-member-operational.js +1 -2
- package/src/interfaces/guid.d.ts +78 -0
- package/src/interfaces/guid.d.ts.map +1 -0
- package/src/interfaces/guid.js +2 -0
- package/src/interfaces/guid.js.map +1 -0
- package/src/interfaces/id-provider.d.ts +83 -0
- package/src/interfaces/id-provider.d.ts.map +1 -0
- package/src/interfaces/id-provider.js +35 -0
- package/src/interfaces/id-provider.js.map +1 -0
- package/src/interfaces/index.d.ts +1 -0
- package/src/interfaces/index.d.ts.map +1 -1
- package/src/interfaces/index.js +13 -15
- package/src/interfaces/index.js.map +1 -1
- package/src/interfaces/invariant.d.ts +46 -0
- package/src/interfaces/invariant.d.ts.map +1 -0
- package/src/interfaces/invariant.js +18 -0
- package/src/interfaces/invariant.js.map +1 -0
- package/src/interfaces/library-error.js +1 -2
- package/src/interfaces/member-storage.js +1 -2
- package/src/interfaces/member-with-mnemonic.js +1 -2
- package/src/interfaces/multi-recipient-chunk.d.ts +36 -12
- package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -1
- package/src/interfaces/multi-recipient-chunk.js +36 -14
- package/src/interfaces/multi-recipient-chunk.js.map +1 -1
- package/src/interfaces/pbkdf2-config.js +1 -2
- package/src/interfaces/pbkdf2-consts.js +1 -2
- package/src/interfaces/pbkdf2-result.js +1 -2
- package/src/interfaces/stream-config.js +1 -4
- package/src/interfaces/stream-config.js.map +1 -1
- package/src/interfaces/stream-header.js +1 -4
- package/src/interfaces/stream-header.js.map +1 -1
- package/src/interfaces/stream-progress.js +1 -2
- package/src/lib/crypto-container.js +9 -13
- package/src/lib/crypto-container.js.map +1 -1
- package/src/lib/guid.d.ts +344 -0
- package/src/lib/guid.d.ts.map +1 -0
- package/src/lib/guid.js +914 -0
- package/src/lib/guid.js.map +1 -0
- package/src/lib/id-providers/custom-provider.d.ts +36 -0
- package/src/lib/id-providers/custom-provider.d.ts.map +1 -0
- package/src/lib/id-providers/custom-provider.js +71 -0
- package/src/lib/id-providers/custom-provider.js.map +1 -0
- package/src/lib/id-providers/guidv4-provider.d.ts +46 -0
- package/src/lib/id-providers/guidv4-provider.d.ts.map +1 -0
- package/src/lib/id-providers/guidv4-provider.js +105 -0
- package/src/lib/id-providers/guidv4-provider.js.map +1 -0
- package/src/lib/id-providers/index.d.ts +30 -0
- package/src/lib/id-providers/index.d.ts.map +1 -0
- package/src/lib/id-providers/index.js +29 -0
- package/src/lib/id-providers/index.js.map +1 -0
- package/src/lib/id-providers/objectid-provider.d.ts +33 -0
- package/src/lib/id-providers/objectid-provider.d.ts.map +1 -0
- package/src/lib/id-providers/objectid-provider.js +79 -0
- package/src/lib/id-providers/objectid-provider.js.map +1 -0
- package/src/lib/id-providers/uuid-provider.d.ts +42 -0
- package/src/lib/id-providers/uuid-provider.d.ts.map +1 -0
- package/src/lib/id-providers/uuid-provider.js +96 -0
- package/src/lib/id-providers/uuid-provider.js.map +1 -0
- package/src/lib/index.d.ts +1 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +2 -4
- package/src/lib/index.js.map +1 -1
- package/src/lib/invariant-validator.d.ts +59 -0
- package/src/lib/invariant-validator.d.ts.map +1 -0
- package/src/lib/invariant-validator.js +97 -0
- package/src/lib/invariant-validator.js.map +1 -0
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts +17 -0
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +1 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js +49 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
- package/src/lib/invariants/index.d.ts +4 -0
- package/src/lib/invariants/index.d.ts.map +1 -0
- package/src/lib/invariants/index.js +4 -0
- package/src/lib/invariants/index.js.map +1 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +16 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +1 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.js +58 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.js.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts +18 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.js +31 -0
- package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
- package/src/member.js +43 -48
- package/src/member.js.map +1 -1
- package/src/pbkdf2-profiles.js +1 -2
- package/src/phone-number.js +7 -11
- package/src/phone-number.js.map +1 -1
- package/src/regexes.js +3 -6
- package/src/regexes.js.map +1 -1
- package/src/secure-buffer.d.ts +17 -1
- package/src/secure-buffer.d.ts.map +1 -1
- package/src/secure-buffer.js +40 -22
- package/src/secure-buffer.js.map +1 -1
- package/src/secure-string.js +20 -24
- package/src/secure-string.js.map +1 -1
- package/src/services/aes-gcm.js +21 -25
- package/src/services/aes-gcm.js.map +1 -1
- package/src/services/chunk-processor.js +32 -36
- package/src/services/chunk-processor.js.map +1 -1
- package/src/services/ecies/crypto-core.js +33 -37
- package/src/services/ecies/crypto-core.js.map +1 -1
- package/src/services/ecies/example.js +37 -44
- package/src/services/ecies/example.js.map +1 -1
- package/src/services/ecies/file.js +1 -5
- package/src/services/ecies/file.js.map +1 -1
- package/src/services/ecies/index.js +10 -15
- package/src/services/ecies/index.js.map +1 -1
- package/src/services/ecies/integration.js +23 -28
- package/src/services/ecies/integration.js.map +1 -1
- package/src/services/ecies/interfaces.js +1 -2
- package/src/services/ecies/interfaces.js.map +1 -1
- package/src/services/ecies/manual-test.js +26 -34
- package/src/services/ecies/manual-test.js.map +1 -1
- package/src/services/ecies/multi-recipient.js +47 -51
- package/src/services/ecies/multi-recipient.js.map +1 -1
- package/src/services/ecies/service.js +27 -31
- package/src/services/ecies/service.js.map +1 -1
- package/src/services/ecies/signature.js +9 -13
- package/src/services/ecies/signature.js.map +1 -1
- package/src/services/ecies/single-recipient.js +42 -46
- package/src/services/ecies/single-recipient.js.map +1 -1
- package/src/services/encryption-stream.d.ts +3 -1
- package/src/services/encryption-stream.d.ts.map +1 -1
- package/src/services/encryption-stream.js +46 -48
- package/src/services/encryption-stream.js.map +1 -1
- package/src/services/index.js +5 -8
- package/src/services/index.js.map +1 -1
- package/src/services/multi-recipient-processor.d.ts +12 -2
- package/src/services/multi-recipient-processor.d.ts.map +1 -1
- package/src/services/multi-recipient-processor.js +65 -56
- package/src/services/multi-recipient-processor.js.map +1 -1
- package/src/services/password-login.js +33 -37
- package/src/services/password-login.js.map +1 -1
- package/src/services/pbkdf2.js +8 -12
- package/src/services/pbkdf2.js.map +1 -1
- package/src/services/progress-tracker.js +5 -9
- package/src/services/progress-tracker.js.map +1 -1
- package/src/services/resumable-encryption.js +24 -28
- package/src/services/resumable-encryption.js.map +1 -1
- package/src/services/xor.js +1 -5
- package/src/services/xor.js.map +1 -1
- package/src/test-mocks/index.js +1 -4
- package/src/test-mocks/index.js.map +1 -1
- package/src/test-mocks/mock-frontend-member.js +20 -24
- package/src/test-mocks/mock-frontend-member.js.map +1 -1
- package/src/testing.js +1 -4
- package/src/testing.js.map +1 -1
- package/src/translations/de.d.ts +2 -1
- package/src/translations/de.d.ts.map +1 -1
- package/src/translations/de.js +190 -170
- package/src/translations/de.js.map +1 -1
- package/src/translations/en-US.d.ts +2 -1
- package/src/translations/en-US.d.ts.map +1 -1
- package/src/translations/en-US.js +190 -170
- package/src/translations/en-US.js.map +1 -1
- package/src/translations/es.d.ts +2 -1
- package/src/translations/es.d.ts.map +1 -1
- package/src/translations/es.js +190 -170
- package/src/translations/es.js.map +1 -1
- package/src/translations/fr.d.ts +2 -1
- package/src/translations/fr.d.ts.map +1 -1
- package/src/translations/fr.js +190 -170
- package/src/translations/fr.js.map +1 -1
- package/src/translations/ja.d.ts +2 -1
- package/src/translations/ja.d.ts.map +1 -1
- package/src/translations/ja.js +189 -170
- package/src/translations/ja.js.map +1 -1
- package/src/translations/uk.d.ts +2 -1
- package/src/translations/uk.d.ts.map +1 -1
- package/src/translations/uk.js +192 -170
- package/src/translations/uk.js.map +1 -1
- package/src/translations/zh-cn.d.ts +2 -1
- package/src/translations/zh-cn.d.ts.map +1 -1
- package/src/translations/zh-cn.js +189 -170
- package/src/translations/zh-cn.js.map +1 -1
- package/src/types/deep-partial.js +1 -2
- package/src/types.d.ts +31 -0
- package/src/types.d.ts.map +1 -1
- package/src/types.js +1 -2
- package/src/utils.js +59 -77
- package/src/utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -95,6 +95,7 @@ for await (const chunk of stream.decryptStream(
|
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
**Features:**
|
|
98
|
+
|
|
98
99
|
- 99% memory reduction (1GB file: 1GB RAM → <10MB RAM)
|
|
99
100
|
- Cancellation support via AbortSignal
|
|
100
101
|
- AsyncGenerator API for flexibility
|
|
@@ -712,6 +713,474 @@ const passwordLogin = new PasswordLoginService(ecies, pbkdf2);
|
|
|
712
713
|
|
|
713
714
|
## ChangeLog
|
|
714
715
|
|
|
716
|
+
### v3.7.0-3.7.3 - Pluggable ID Provider System & Critical Bug Fixes
|
|
717
|
+
|
|
718
|
+
#### 🎯 Overview
|
|
719
|
+
|
|
720
|
+
Version 3.7.0 introduces a **pluggable ID provider system** that replaces hardcoded recipient ID sizes with a flexible, extensible architecture. This release fixes a critical 12 vs 32-byte recipient ID discrepancy and adds enterprise-grade validation to prevent entire classes of configuration bugs.
|
|
721
|
+
|
|
722
|
+
**Critical Fix:** Resolved silent encryption/decryption failures caused by mismatched recipient ID size constants (12 bytes in `ECIES.MULTIPLE.RECIPIENT_ID_SIZE` vs 32 bytes in `MULTI_RECIPIENT_CONSTANTS.RECIPIENT_ID_SIZE`).
|
|
723
|
+
|
|
724
|
+
---
|
|
725
|
+
|
|
726
|
+
#### 🚀 Major Features
|
|
727
|
+
|
|
728
|
+
**Pluggable ID Provider System**
|
|
729
|
+
|
|
730
|
+
Introduced flexible ID provider architecture with multiple built-in implementations:
|
|
731
|
+
|
|
732
|
+
- **ObjectIdProvider** (12 bytes) - MongoDB/BSON compatible IDs, **DEFAULT**
|
|
733
|
+
- **GuidV4Provider** (16 bytes) - RFC 4122 compliant GUIDs without dashes
|
|
734
|
+
- **UuidProvider** (16 bytes) - Standard UUIDs with dash separators
|
|
735
|
+
- **CustomIdProvider** (1-255 bytes) - User-defined ID sizes and formats
|
|
736
|
+
|
|
737
|
+
```typescript
|
|
738
|
+
// Example: Using GUID provider
|
|
739
|
+
import { createRuntimeConfiguration, GuidV4Provider } from '@digitaldefiance/ecies-lib';
|
|
740
|
+
|
|
741
|
+
const config = createRuntimeConfiguration({
|
|
742
|
+
idProvider: new GuidV4Provider(), // 16-byte GUIDs
|
|
743
|
+
});
|
|
744
|
+
|
|
745
|
+
const id = config.idProvider.generate(); // Generates 16-byte GUID
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
**Auto-Sync Configuration System**
|
|
749
|
+
|
|
750
|
+
All ID-size-related constants now automatically synchronize when an ID provider is set:
|
|
751
|
+
|
|
752
|
+
- `MEMBER_ID_LENGTH`
|
|
753
|
+
- `ECIES.MULTIPLE.RECIPIENT_ID_SIZE`
|
|
754
|
+
- `idProvider.byteLength`
|
|
755
|
+
|
|
756
|
+
This prevents the 12 vs 32-byte misconfiguration that existed in v3.0.8.
|
|
757
|
+
|
|
758
|
+
**Invariant Validation System**
|
|
759
|
+
|
|
760
|
+
Added comprehensive validation to catch configuration mismatches at initialization:
|
|
761
|
+
|
|
762
|
+
```typescript
|
|
763
|
+
// Automatic validation prevents mismatched configurations
|
|
764
|
+
const config = createRuntimeConfiguration({
|
|
765
|
+
idProvider: new GuidV4Provider(), // 16 bytes
|
|
766
|
+
MEMBER_ID_LENGTH: 12, // ❌ Throws error - mismatch detected!
|
|
767
|
+
});
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
Invariants include:
|
|
771
|
+
|
|
772
|
+
- `RecipientIdConsistency` - Ensures all ID size constants match
|
|
773
|
+
- `Pbkdf2ProfilesValidity` - Validates PBKDF2 profile configuration
|
|
774
|
+
- `EncryptionAlgorithmConsistency` - Validates encryption algorithm settings
|
|
775
|
+
|
|
776
|
+
**Configuration Provenance Tracking**
|
|
777
|
+
|
|
778
|
+
Track configuration lineage for debugging and compliance:
|
|
779
|
+
|
|
780
|
+
```typescript
|
|
781
|
+
import { ConstantsRegistry } from '@digitaldefiance/ecies-lib';
|
|
782
|
+
|
|
783
|
+
const config = ConstantsRegistry.register('production', {
|
|
784
|
+
idProvider: new ObjectIdProvider(),
|
|
785
|
+
}, {
|
|
786
|
+
description: 'Production configuration with ObjectID',
|
|
787
|
+
});
|
|
788
|
+
|
|
789
|
+
// Later, retrieve provenance info
|
|
790
|
+
const provenance = ConstantsRegistry.getProvenance('production');
|
|
791
|
+
console.log(provenance.timestamp); // When created
|
|
792
|
+
console.log(provenance.checksum); // Configuration hash
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
---
|
|
796
|
+
|
|
797
|
+
#### 🐛 Critical Bug Fixes
|
|
798
|
+
|
|
799
|
+
**Fixed 12 vs 32-Byte ID Discrepancy**
|
|
800
|
+
|
|
801
|
+
- **Issue:** `ECIES.MULTIPLE.RECIPIENT_ID_SIZE` defaulted to 12 bytes while `MULTI_RECIPIENT_CONSTANTS.RECIPIENT_ID_SIZE` used 32 bytes, causing silent encryption/decryption failures
|
|
802
|
+
- **Root Cause:** Two separate constant definitions that were never validated against each other
|
|
803
|
+
- **Fix:**
|
|
804
|
+
- All recipient ID sizes now derive from `idProvider.byteLength`
|
|
805
|
+
- Automatic validation prevents mismatches
|
|
806
|
+
- Integration tests added to catch regressions
|
|
807
|
+
- `getMultiRecipientConstants()` now dynamically calculates sizes
|
|
808
|
+
|
|
809
|
+
**Fixed Frozen Constant Mutation**
|
|
810
|
+
|
|
811
|
+
- **Issue:** Attempting to modify frozen `ENCRYPTION` constant with `Object.assign()` caused runtime errors
|
|
812
|
+
- **Fix:** Removed `Object.assign()` mutations, constants are now properly immutable
|
|
813
|
+
|
|
814
|
+
**Fixed PBKDF2 Profile Validation**
|
|
815
|
+
|
|
816
|
+
- **Issue:** Invalid PBKDF2 profile configuration could pass validation
|
|
817
|
+
- **Fix:** Added comprehensive PBKDF2 profile validation in invariant system
|
|
818
|
+
|
|
819
|
+
**Fixed Disposed Object Error Messages**
|
|
820
|
+
|
|
821
|
+
- **Issue:** `DisposedError` had incorrect i18n string keys
|
|
822
|
+
- **Fix:** Added proper error type enumeration and i18n translations
|
|
823
|
+
|
|
824
|
+
---
|
|
825
|
+
|
|
826
|
+
#### 💥 Breaking Changes
|
|
827
|
+
|
|
828
|
+
**1. Direct Constant Assignments Removed**
|
|
829
|
+
|
|
830
|
+
**Before (v3.0.8):**
|
|
831
|
+
|
|
832
|
+
```typescript
|
|
833
|
+
const config = createRuntimeConfiguration({
|
|
834
|
+
MEMBER_ID_LENGTH: 16,
|
|
835
|
+
ECIES: {
|
|
836
|
+
MULTIPLE: {
|
|
837
|
+
RECIPIENT_ID_SIZE: 16,
|
|
838
|
+
},
|
|
839
|
+
},
|
|
840
|
+
});
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
**After (v3.7.x):**
|
|
844
|
+
|
|
845
|
+
```typescript
|
|
846
|
+
const config = createRuntimeConfiguration({
|
|
847
|
+
idProvider: new GuidV4Provider(), // Auto-syncs all size constants
|
|
848
|
+
});
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
**2. Recipient ID Generation Changes**
|
|
852
|
+
|
|
853
|
+
**Before:**
|
|
854
|
+
|
|
855
|
+
```typescript
|
|
856
|
+
const recipientId = crypto.getRandomValues(new Uint8Array(32)); // Hardcoded
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
**After:**
|
|
860
|
+
|
|
861
|
+
```typescript
|
|
862
|
+
const recipientId = config.idProvider.generate(); // Dynamic sizing
|
|
863
|
+
```
|
|
864
|
+
|
|
865
|
+
**3. Multi-Recipient Constants Function Signature**
|
|
866
|
+
|
|
867
|
+
**Before:**
|
|
868
|
+
|
|
869
|
+
```typescript
|
|
870
|
+
const constants = getMultiRecipientConstants(); // Used hardcoded 32
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
**After:**
|
|
874
|
+
|
|
875
|
+
```typescript
|
|
876
|
+
const constants = getMultiRecipientConstants(config.idProvider.byteLength); // Dynamic
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
---
|
|
880
|
+
|
|
881
|
+
#### 📚 New Documentation
|
|
882
|
+
|
|
883
|
+
- **docs/MIGRATION_GUIDE_v3.7.md** - Complete migration guide from v3.6.x/v3.0.8 to v3.7.x
|
|
884
|
+
- **docs/ID_PROVIDER_ARCHITECTURE.md** - Deep dive into the ID provider system (implied)
|
|
885
|
+
- **docs/ENTERPRISE_ARCHITECTURE_ASSESSMENT.md** - Enterprise-grade architecture recommendations
|
|
886
|
+
- **docs/ENTERPRISE_READINESS_CHECKLIST.md** - Production readiness assessment
|
|
887
|
+
- **docs/EXECUTIVE_SUMMARY.md** - Executive overview of ID provider system
|
|
888
|
+
- **docs/ID_PROVIDER_TESTING.md** - Comprehensive testing documentation
|
|
889
|
+
- **docs/ID_SYSTEM_IMPLEMENTATION_STATUS.md** - Implementation status and roadmap
|
|
890
|
+
- **docs/MIGRATION_CHECKLIST_NODE_LIB.md** - Node.js library migration checklist
|
|
891
|
+
|
|
892
|
+
---
|
|
893
|
+
|
|
894
|
+
#### 🧪 Testing Improvements
|
|
895
|
+
|
|
896
|
+
**New Test Suites**
|
|
897
|
+
|
|
898
|
+
- `tests/lib/id-providers/id-providers.spec.ts` - Basic provider functionality (314 lines)
|
|
899
|
+
- `tests/lib/id-providers/id-providers-comprehensive.spec.ts` - Comprehensive provider validation (913 lines)
|
|
900
|
+
- `tests/lib/invariant-validator.spec.ts` - Invariant system validation (250 lines)
|
|
901
|
+
- `tests/lib/configuration-provenance.spec.ts` - Provenance tracking tests (215 lines)
|
|
902
|
+
- `tests/integration/recipient-id-consistency.spec.ts` - Cross-configuration ID consistency (319 lines)
|
|
903
|
+
- `tests/integration/encrypted-message-structure.spec.ts` - Message structure validation (490 lines)
|
|
904
|
+
- `tests/errors/ecies-error-context.spec.ts` - Enhanced error context testing (337 lines)
|
|
905
|
+
|
|
906
|
+
**Test Statistics**
|
|
907
|
+
|
|
908
|
+
- **Total Tests:** 1,200+ (up from ~1,100)
|
|
909
|
+
- **Test Pass Rate:** 100% (1,200/1,200)
|
|
910
|
+
- **Test Suites:** 61 suites
|
|
911
|
+
- **New Test Files:** 7
|
|
912
|
+
- **Test Execution Time:** ~77 seconds
|
|
913
|
+
|
|
914
|
+
**Test Coverage**
|
|
915
|
+
|
|
916
|
+
- All 4 ID providers have comprehensive test coverage
|
|
917
|
+
- Cross-provider compatibility tests
|
|
918
|
+
- Encrypted message structure validation with different ID sizes
|
|
919
|
+
- Performance benchmarks (serialization/deserialization <50ms for 1000 operations)
|
|
920
|
+
- Constant-time comparison validation (timing attack resistance)
|
|
921
|
+
- Invariant validation edge cases
|
|
922
|
+
|
|
923
|
+
---
|
|
924
|
+
|
|
925
|
+
#### ⚡ Performance
|
|
926
|
+
|
|
927
|
+
**ID Provider Benchmarks**
|
|
928
|
+
|
|
929
|
+
All providers meet performance requirements:
|
|
930
|
+
|
|
931
|
+
- **ObjectIdProvider:** ~40ms per 1000 operations
|
|
932
|
+
- **GuidV4Provider:** ~45ms per 1000 operations
|
|
933
|
+
- **UuidProvider:** ~45ms per 1000 operations
|
|
934
|
+
- **CustomIdProvider:** ~40ms per 1000 operations
|
|
935
|
+
|
|
936
|
+
**Performance Baselines**
|
|
937
|
+
|
|
938
|
+
- Serialization: 1000 IDs in <50ms (relaxed from 20ms for CI stability)
|
|
939
|
+
- Deserialization: 1000 IDs in <50ms (relaxed from 25ms for CI stability)
|
|
940
|
+
- Constant-time comparison ratio: <15.0x (relaxed from 5.0x for CI variance)
|
|
941
|
+
|
|
942
|
+
---
|
|
943
|
+
|
|
944
|
+
#### 🔒 Security Enhancements
|
|
945
|
+
|
|
946
|
+
**Constant-Time Operations**
|
|
947
|
+
|
|
948
|
+
- All ID providers use constant-time comparison to prevent timing attacks
|
|
949
|
+
- Validation timing tests ensure consistent execution time regardless of input
|
|
950
|
+
|
|
951
|
+
**Immutable Configuration**
|
|
952
|
+
|
|
953
|
+
- All constants are deeply frozen to prevent accidental modification
|
|
954
|
+
- Configuration provenance tracking provides audit trail
|
|
955
|
+
|
|
956
|
+
**Validation at Initialization**
|
|
957
|
+
|
|
958
|
+
- Invariant validation catches misconfigurations before runtime
|
|
959
|
+
- Comprehensive error context for debugging
|
|
960
|
+
|
|
961
|
+
---
|
|
962
|
+
|
|
963
|
+
#### 🌍 Internationalization
|
|
964
|
+
|
|
965
|
+
**New Error Messages**
|
|
966
|
+
|
|
967
|
+
Added i18n support for ID provider errors in 7 languages (en-US, fr, de, es, ja, uk, zh-cn):
|
|
968
|
+
|
|
969
|
+
- `IdProviderInvalidByteLength` - Invalid byte length for ID provider
|
|
970
|
+
- `IdProviderInvalidIdFormat` - Invalid ID format
|
|
971
|
+
- `IdProviderIdValidationFailed` - ID validation failed
|
|
972
|
+
- `IdProviderSerializationFailed` - Serialization failed
|
|
973
|
+
- `IdProviderDeserializationFailed` - Deserialization failed
|
|
974
|
+
- `IdProviderInvalidStringLength` - Invalid string length
|
|
975
|
+
- `IdProviderInputMustBeUint8Array` - Input must be Uint8Array
|
|
976
|
+
- `IdProviderInputMustBeString` - Input must be string
|
|
977
|
+
- `IdProviderInvalidCharacters` - Invalid characters in input
|
|
978
|
+
|
|
979
|
+
**Updated Error Messages**
|
|
980
|
+
|
|
981
|
+
- Enhanced `DisposedError` with proper type enumeration
|
|
982
|
+
- Added context parameters to ECIES error messages
|
|
983
|
+
- Improved error message clarity across all services
|
|
984
|
+
|
|
985
|
+
---
|
|
986
|
+
|
|
987
|
+
#### 📦 New Exports
|
|
988
|
+
|
|
989
|
+
**ID Providers**
|
|
990
|
+
|
|
991
|
+
```typescript
|
|
992
|
+
export { ObjectIdProvider } from './lib/id-providers/objectid-provider';
|
|
993
|
+
export { GuidV4Provider } from './lib/id-providers/guidv4-provider';
|
|
994
|
+
export { UuidProvider } from './lib/id-providers/uuid-provider';
|
|
995
|
+
export { CustomIdProvider } from './lib/id-providers/custom-provider';
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
**Interfaces**
|
|
999
|
+
|
|
1000
|
+
```typescript
|
|
1001
|
+
export type { IIdProvider } from './interfaces/id-provider';
|
|
1002
|
+
export { BaseIdProvider } from './interfaces/id-provider';
|
|
1003
|
+
export type { IInvariant } from './interfaces/invariant';
|
|
1004
|
+
export { BaseInvariant } from './interfaces/invariant';
|
|
1005
|
+
export type { IConfigurationProvenance } from './interfaces/configuration-provenance';
|
|
1006
|
+
```
|
|
1007
|
+
|
|
1008
|
+
**Validation**
|
|
1009
|
+
|
|
1010
|
+
```typescript
|
|
1011
|
+
export { InvariantValidator } from './lib/invariant-validator';
|
|
1012
|
+
export { RecipientIdConsistencyInvariant } from './lib/invariants/recipient-id-consistency';
|
|
1013
|
+
export { Pbkdf2ProfilesValidityInvariant } from './lib/invariants/pbkdf2-profiles-validity';
|
|
1014
|
+
export { EncryptionAlgorithmConsistencyInvariant } from './lib/invariants/encryption-algorithm-consistency';
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
**Errors**
|
|
1018
|
+
|
|
1019
|
+
```typescript
|
|
1020
|
+
export { IdProviderError } from './errors/id-provider';
|
|
1021
|
+
export { IdProviderErrorType } from './enumerations/id-provider-error-type';
|
|
1022
|
+
export { DisposedErrorType } from './enumerations/disposed-error-type';
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
---
|
|
1026
|
+
|
|
1027
|
+
#### 🔧 Code Structure Changes
|
|
1028
|
+
|
|
1029
|
+
**New Files Added (7,611 insertions)**
|
|
1030
|
+
|
|
1031
|
+
Core Implementation:
|
|
1032
|
+
|
|
1033
|
+
- `src/lib/id-providers/objectid-provider.ts` (97 lines)
|
|
1034
|
+
- `src/lib/id-providers/guidv4-provider.ts` (122 lines)
|
|
1035
|
+
- `src/lib/id-providers/uuid-provider.ts` (117 lines)
|
|
1036
|
+
- `src/lib/id-providers/custom-provider.ts` (165 lines)
|
|
1037
|
+
- `src/lib/id-providers/index.ts` (31 lines)
|
|
1038
|
+
|
|
1039
|
+
Validation System:
|
|
1040
|
+
|
|
1041
|
+
- `src/lib/invariant-validator.ts` (133 lines)
|
|
1042
|
+
- `src/lib/invariants/recipient-id-consistency.ts` (46 lines)
|
|
1043
|
+
- `src/lib/invariants/pbkdf2-profiles-validity.ts` (78 lines)
|
|
1044
|
+
- `src/lib/invariants/encryption-algorithm-consistency.ts` (73 lines)
|
|
1045
|
+
|
|
1046
|
+
Interfaces:
|
|
1047
|
+
|
|
1048
|
+
- `src/interfaces/id-provider.ts` (117 lines)
|
|
1049
|
+
- `src/interfaces/invariant.ts` (60 lines)
|
|
1050
|
+
- `src/interfaces/configuration-provenance.ts` (72 lines)
|
|
1051
|
+
|
|
1052
|
+
Errors:
|
|
1053
|
+
|
|
1054
|
+
- `src/errors/id-provider.ts` (40 lines)
|
|
1055
|
+
- `src/enumerations/id-provider-error-type.ts` (50 lines)
|
|
1056
|
+
- `src/enumerations/disposed-error-type.ts` (11 lines)
|
|
1057
|
+
|
|
1058
|
+
**Major File Modifications**
|
|
1059
|
+
|
|
1060
|
+
- `src/constants.ts` (+115 lines) - Added ID provider integration and auto-sync
|
|
1061
|
+
- `src/interfaces/constants.ts` (+27 lines) - Extended with ID provider field
|
|
1062
|
+
- `src/interfaces/multi-recipient-chunk.ts` (+69 lines) - Dynamic size calculation
|
|
1063
|
+
- `src/services/multi-recipient-processor.ts` (+72 lines) - ID provider integration
|
|
1064
|
+
- `src/services/encryption-stream.ts` (+18 lines) - Dynamic size support
|
|
1065
|
+
- `src/secure-buffer.ts` (+28 lines) - Enhanced disposal handling
|
|
1066
|
+
- `src/errors/ecies.ts` (+107 lines) - New error types with context
|
|
1067
|
+
|
|
1068
|
+
**Translation Updates**
|
|
1069
|
+
|
|
1070
|
+
Updated all 7 language files with new error messages:
|
|
1071
|
+
|
|
1072
|
+
- `src/translations/en-US.ts` (+22 lines)
|
|
1073
|
+
- `src/translations/fr.ts` (+26 lines)
|
|
1074
|
+
- `src/translations/de.ts` (+22 lines)
|
|
1075
|
+
- `src/translations/es.ts` (+28 lines)
|
|
1076
|
+
- `src/translations/ja.ts` (+21 lines)
|
|
1077
|
+
- `src/translations/uk.ts` (+24 lines)
|
|
1078
|
+
- `src/translations/zh-cn.ts` (+27 lines)
|
|
1079
|
+
|
|
1080
|
+
---
|
|
1081
|
+
|
|
1082
|
+
#### 🔄 Migration Guide
|
|
1083
|
+
|
|
1084
|
+
**For Default Users (No Changes Needed)**
|
|
1085
|
+
|
|
1086
|
+
If you're using the default ObjectID provider (12 bytes), **no code changes are required**:
|
|
1087
|
+
|
|
1088
|
+
```typescript
|
|
1089
|
+
// v3.0.8 - Still works in v3.7.x!
|
|
1090
|
+
import { ECIESService } from '@digitaldefiance/ecies-lib';
|
|
1091
|
+
|
|
1092
|
+
const ecies = new ECIESService();
|
|
1093
|
+
const encrypted = await ecies.encrypt(data, publicKey);
|
|
1094
|
+
```
|
|
1095
|
+
|
|
1096
|
+
**For Custom ID Size Users**
|
|
1097
|
+
|
|
1098
|
+
If you were customizing ID sizes in v3.0.8:
|
|
1099
|
+
|
|
1100
|
+
```typescript
|
|
1101
|
+
// v3.0.8 (OLD - BREAKS in v3.7.x)
|
|
1102
|
+
const config = createRuntimeConfiguration({
|
|
1103
|
+
MEMBER_ID_LENGTH: 16,
|
|
1104
|
+
});
|
|
1105
|
+
|
|
1106
|
+
// v3.7.x (NEW)
|
|
1107
|
+
import { GuidV4Provider } from '@digitaldefiance/ecies-lib';
|
|
1108
|
+
|
|
1109
|
+
const config = createRuntimeConfiguration({
|
|
1110
|
+
idProvider: new GuidV4Provider(),
|
|
1111
|
+
});
|
|
1112
|
+
```
|
|
1113
|
+
|
|
1114
|
+
**Creating Custom ID Providers**
|
|
1115
|
+
|
|
1116
|
+
```typescript
|
|
1117
|
+
import { BaseIdProvider } from '@digitaldefiance/ecies-lib';
|
|
1118
|
+
|
|
1119
|
+
class MyCustomProvider extends BaseIdProvider {
|
|
1120
|
+
constructor() {
|
|
1121
|
+
super('MyCustom', 24, 'My 24-byte custom IDs');
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
generate(): Uint8Array {
|
|
1125
|
+
return crypto.getRandomValues(new Uint8Array(24));
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
validate(id: Uint8Array): boolean {
|
|
1129
|
+
return id.length === 24;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
serialize(id: Uint8Array): string {
|
|
1133
|
+
return Array.from(id).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
deserialize(str: string): Uint8Array {
|
|
1137
|
+
const bytes = new Uint8Array(24);
|
|
1138
|
+
for (let i = 0; i < 24; i++) {
|
|
1139
|
+
bytes[i] = parseInt(str.substr(i * 2, 2), 16);
|
|
1140
|
+
}
|
|
1141
|
+
return bytes;
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
```
|
|
1145
|
+
|
|
1146
|
+
---
|
|
1147
|
+
|
|
1148
|
+
#### 📊 Version Details
|
|
1149
|
+
|
|
1150
|
+
**v3.7.3**
|
|
1151
|
+
|
|
1152
|
+
- Removed Legacy32ByteProvider from all code and documentation
|
|
1153
|
+
- Fixed test failures from Legacy32ByteProvider removal
|
|
1154
|
+
- Updated migration guides to only show supported providers
|
|
1155
|
+
- Relaxed timing test thresholds for CI stability (15.0x ratio, 50ms thresholds)
|
|
1156
|
+
|
|
1157
|
+
**v3.7.2**
|
|
1158
|
+
|
|
1159
|
+
- Initial release of ID provider system
|
|
1160
|
+
- Added comprehensive documentation
|
|
1161
|
+
- Full test suite with 1,200+ tests
|
|
1162
|
+
|
|
1163
|
+
---
|
|
1164
|
+
|
|
1165
|
+
#### 🙏 Contributors
|
|
1166
|
+
|
|
1167
|
+
- Jessica Mulein (@JessicaMulein) - Lead developer
|
|
1168
|
+
- GitHub Copilot - Architecture review and code assistance
|
|
1169
|
+
|
|
1170
|
+
---
|
|
1171
|
+
|
|
1172
|
+
#### 📝 Release Statistics
|
|
1173
|
+
|
|
1174
|
+
- **Lines of code changed:** ~7,600 additions, ~135 deletions
|
|
1175
|
+
- **Files modified:** 61
|
|
1176
|
+
- **New test files:** 7
|
|
1177
|
+
- **New source files:** 14
|
|
1178
|
+
- **Documentation added:** ~3,800 lines
|
|
1179
|
+
- **Tests added:** 100+
|
|
1180
|
+
- **Test pass rate:** 100% (1,200/1,200)
|
|
1181
|
+
|
|
1182
|
+
---
|
|
1183
|
+
|
|
715
1184
|
### v3.0.8
|
|
716
1185
|
|
|
717
1186
|
- Update i18n
|
|
@@ -759,18 +1228,21 @@ const passwordLogin = new PasswordLoginService(ecies, pbkdf2);
|
|
|
759
1228
|
**New APIs**:
|
|
760
1229
|
|
|
761
1230
|
**Single-Recipient Streaming**:
|
|
1231
|
+
|
|
762
1232
|
- `EncryptionStream.encryptStream()` - Stream encryption with configurable chunks
|
|
763
1233
|
- `EncryptionStream.decryptStream()` - Stream decryption with validation
|
|
764
1234
|
- `Member.encryptDataStream()` - Member-level streaming encryption
|
|
765
1235
|
- `Member.decryptDataStream()` - Member-level streaming decryption
|
|
766
1236
|
|
|
767
1237
|
**Multi-Recipient Streaming**:
|
|
1238
|
+
|
|
768
1239
|
- `EncryptionStream.encryptStreamMultiple()` - Encrypt for multiple recipients
|
|
769
1240
|
- `EncryptionStream.decryptStreamMultiple()` - Decrypt as specific recipient
|
|
770
1241
|
- `MultiRecipientProcessor.encryptChunk()` - Low-level multi-recipient encryption
|
|
771
1242
|
- `MultiRecipientProcessor.decryptChunk()` - Low-level multi-recipient decryption
|
|
772
1243
|
|
|
773
1244
|
**Progress Tracking**:
|
|
1245
|
+
|
|
774
1246
|
- `ProgressTracker.update()` - Track bytes processed, throughput, ETA
|
|
775
1247
|
- `IStreamProgress` interface with `throughputBytesPerSec` property
|
|
776
1248
|
- Optional progress callbacks in all streaming operations
|
|
@@ -778,6 +1250,7 @@ const passwordLogin = new PasswordLoginService(ecies, pbkdf2);
|
|
|
778
1250
|
**Security Enhancements (16 validations)**:
|
|
779
1251
|
|
|
780
1252
|
**Base ECIES Layer (8 fixes)**:
|
|
1253
|
+
|
|
781
1254
|
- Public key all-zeros validation
|
|
782
1255
|
- Private key all-zeros validation
|
|
783
1256
|
- Shared secret all-zeros validation
|
|
@@ -788,6 +1261,7 @@ const passwordLogin = new PasswordLoginService(ecies, pbkdf2);
|
|
|
788
1261
|
- Decrypted data validation
|
|
789
1262
|
|
|
790
1263
|
**AES-GCM Layer (5 fixes)**:
|
|
1264
|
+
|
|
791
1265
|
- Key length validation (16/24/32 bytes only)
|
|
792
1266
|
- IV length validation (16 bytes)
|
|
793
1267
|
- Null/undefined data rejection
|
|
@@ -795,6 +1269,7 @@ const passwordLogin = new PasswordLoginService(ecies, pbkdf2);
|
|
|
795
1269
|
- Comprehensive decrypt input validation
|
|
796
1270
|
|
|
797
1271
|
**Multi-Recipient Layer (3 fixes)**:
|
|
1272
|
+
|
|
798
1273
|
- Chunk index bounds checking (uint32 range)
|
|
799
1274
|
- Data size validation (max 2GB)
|
|
800
1275
|
- Safe accumulation with overflow detection
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitaldefiance/ecies-lib",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.3",
|
|
4
4
|
"description": "Digital Defiance ECIES Library",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "src/index.d.ts",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"packageManager": "yarn@4.11.0",
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@digitaldefiance/i18n-lib": "3.
|
|
48
|
+
"@digitaldefiance/i18n-lib": "3.7.2",
|
|
49
49
|
"@ethereumjs/wallet": "^10.0.0",
|
|
50
50
|
"@noble/curves": "^2.0.1",
|
|
51
51
|
"@noble/hashes": "^2.0.1",
|
|
@@ -56,5 +56,6 @@
|
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@digitaldefiance/express-suite-test-utils": "1.0.10"
|
|
58
58
|
},
|
|
59
|
-
"
|
|
59
|
+
"module": "./../../dist/packages/digitaldefiance-ecies-lib/packages/digitaldefiance-ecies-lib/src/index.js",
|
|
60
|
+
"type": "module"
|
|
60
61
|
}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Fluent builder for ECIESService
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const service_1 = require("../services/ecies/service");
|
|
9
|
-
class ECIESBuilder {
|
|
4
|
+
import { Constants } from '../constants';
|
|
5
|
+
import { ECIESService } from '../services/ecies/service';
|
|
6
|
+
export class ECIESBuilder {
|
|
10
7
|
serviceConfig = {};
|
|
11
8
|
eciesConsts = {};
|
|
12
9
|
i18n;
|
|
@@ -26,9 +23,8 @@ class ECIESBuilder {
|
|
|
26
23
|
return this;
|
|
27
24
|
}
|
|
28
25
|
build() {
|
|
29
|
-
const finalConstants = { ...
|
|
30
|
-
return new
|
|
26
|
+
const finalConstants = { ...Constants.ECIES, ...this.eciesConsts };
|
|
27
|
+
return new ECIESService(this.serviceConfig, finalConstants);
|
|
31
28
|
}
|
|
32
29
|
}
|
|
33
|
-
exports.ECIESBuilder = ECIESBuilder;
|
|
34
30
|
//# sourceMappingURL=ecies-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecies-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ecies-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,OAAO,YAAY;IACf,aAAa,GAA0B,EAAE,CAAC;IAC1C,WAAW,GAA6B,EAAE,CAAC;IAC3C,IAAI,CAA4B;IAExC,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAAmC;QAC/C,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAgC;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,cAAc,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
package/src/builders/index.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Builder exports for v2 architecture
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
tslib_1.__exportStar(require("./ecies-builder"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./member-builder"), exports);
|
|
4
|
+
export * from './ecies-builder';
|
|
5
|
+
export * from './member-builder';
|
|
9
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Fluent builder for Member
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const enumerations_1 = require("../enumerations");
|
|
11
|
-
class MemberBuilder {
|
|
4
|
+
import { EmailString } from '../email-string';
|
|
5
|
+
import { Member } from '../member';
|
|
6
|
+
import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
|
|
7
|
+
import { EciesStringKey } from '../enumerations';
|
|
8
|
+
export class MemberBuilder {
|
|
12
9
|
eciesService;
|
|
13
10
|
type;
|
|
14
11
|
name;
|
|
@@ -31,7 +28,7 @@ class MemberBuilder {
|
|
|
31
28
|
return this;
|
|
32
29
|
}
|
|
33
30
|
withEmail(email) {
|
|
34
|
-
this.email = typeof email === 'string' ? new
|
|
31
|
+
this.email = typeof email === 'string' ? new EmailString(email) : email;
|
|
35
32
|
return this;
|
|
36
33
|
}
|
|
37
34
|
withMnemonic(mnemonic) {
|
|
@@ -44,22 +41,21 @@ class MemberBuilder {
|
|
|
44
41
|
}
|
|
45
42
|
generateMnemonic() {
|
|
46
43
|
if (!this.eciesService) {
|
|
47
|
-
const engine =
|
|
48
|
-
throw new Error(engine.translate(
|
|
44
|
+
const engine = getEciesI18nEngine();
|
|
45
|
+
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Builder_ECIESServiceMustBeSetBeforeGeneratingMnemonic));
|
|
49
46
|
}
|
|
50
47
|
this.mnemonic = this.eciesService.generateNewMnemonic();
|
|
51
48
|
return this;
|
|
52
49
|
}
|
|
53
50
|
build() {
|
|
54
|
-
const engine =
|
|
51
|
+
const engine = getEciesI18nEngine();
|
|
55
52
|
if (!this.eciesService) {
|
|
56
|
-
throw new Error(engine.translate(
|
|
53
|
+
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Builder_ECIESServiceIsRequired));
|
|
57
54
|
}
|
|
58
55
|
if (!this.type || !this.name || !this.email) {
|
|
59
|
-
throw new Error(engine.translate(
|
|
56
|
+
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Builder_TypeNameAndEmailAreRequired));
|
|
60
57
|
}
|
|
61
|
-
return
|
|
58
|
+
return Member.newMember(this.eciesService, this.type, this.name, this.email, this.mnemonic, this.createdBy);
|
|
62
59
|
}
|
|
63
60
|
}
|
|
64
|
-
exports.MemberBuilder = MemberBuilder;
|
|
65
61
|
//# sourceMappingURL=member-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/member-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"member-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/member-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKnC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,OAAO,aAAa;IAChB,YAAY,CAAgB;IAC5B,IAAI,CAAc;IAClB,IAAI,CAAU;IACd,KAAK,CAAe;IACpB,QAAQ,CAAgB;IACxB,SAAS,CAAY;IAE7B,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,OAAqB;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAgB;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAA2B;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,QAAsB;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAAmB;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,2DAA2D,CAAC,CAAC,CAAC;QAClI,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAChH,CAAC;QAED,OAAO,MAAM,CAAC,SAAS,CACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF"}
|