@digitaldefiance/ecies-lib 4.6.3 → 4.7.1
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 +420 -0
- package/package.json +4 -10
- package/src/builders/ecies-builder.d.ts +1 -1
- package/src/builders/ecies-builder.d.ts.map +1 -1
- package/src/builders/ecies-builder.js +2 -2
- package/src/builders/ecies-builder.js.map +1 -1
- package/src/email-string.js +2 -3
- package/src/email-string.js.map +1 -1
- package/src/i18n-setup.js +1 -1
- package/src/i18n-setup.js.map +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/interfaces/index.d.ts +1 -0
- package/src/interfaces/index.d.ts.map +1 -1
- package/src/interfaces/index.js +3 -0
- package/src/interfaces/index.js.map +1 -1
- package/src/interfaces/voting-poll.d.ts +455 -0
- package/src/interfaces/voting-poll.d.ts.map +1 -0
- package/src/interfaces/voting-poll.js +54 -0
- package/src/interfaces/voting-poll.js.map +1 -0
- package/src/isolated-private.d.ts +0 -4
- package/src/isolated-private.d.ts.map +1 -1
- package/src/isolated-private.js +0 -13
- package/src/isolated-private.js.map +1 -1
- package/src/isolated-public.d.ts +4 -2
- package/src/isolated-public.d.ts.map +1 -1
- package/src/isolated-public.js +10 -8
- package/src/isolated-public.js.map +1 -1
- package/src/lib/voting/audit.d.ts +79 -0
- package/src/lib/voting/audit.d.ts.map +1 -0
- package/src/lib/voting/audit.js +188 -0
- package/src/lib/voting/audit.js.map +1 -0
- package/src/lib/voting/bulletin-board.d.ts +94 -0
- package/src/lib/voting/bulletin-board.d.ts.map +1 -0
- package/src/lib/voting/bulletin-board.js +290 -0
- package/src/lib/voting/bulletin-board.js.map +1 -0
- package/src/lib/voting/encoder.d.ts +42 -0
- package/src/lib/voting/encoder.d.ts.map +1 -0
- package/src/lib/voting/encoder.js +157 -0
- package/src/lib/voting/encoder.js.map +1 -0
- package/src/lib/voting/event-logger.d.ts +81 -0
- package/src/lib/voting/event-logger.d.ts.map +1 -0
- package/src/lib/voting/event-logger.js +165 -0
- package/src/lib/voting/event-logger.js.map +1 -0
- package/src/lib/voting/examples.d.ts +30 -0
- package/src/lib/voting/examples.d.ts.map +1 -0
- package/src/lib/voting/examples.js +153 -0
- package/src/lib/voting/examples.js.map +1 -0
- package/src/lib/voting/factory.d.ts +35 -0
- package/src/lib/voting/factory.d.ts.map +1 -0
- package/src/lib/voting/factory.js +57 -0
- package/src/lib/voting/factory.js.map +1 -0
- package/src/lib/voting/index.d.ts +44 -0
- package/src/lib/voting/index.d.ts.map +1 -0
- package/src/lib/voting/index.js +60 -0
- package/src/lib/voting/index.js.map +1 -0
- package/src/lib/voting/poll-core.d.ts +55 -0
- package/src/lib/voting/poll-core.d.ts.map +1 -0
- package/src/lib/voting/poll-core.js +225 -0
- package/src/lib/voting/poll-core.js.map +1 -0
- package/src/lib/voting/poll.d.ts +124 -0
- package/src/lib/voting/poll.d.ts.map +1 -0
- package/src/lib/voting/poll.js +323 -0
- package/src/lib/voting/poll.js.map +1 -0
- package/src/lib/voting/security.d.ts +33 -0
- package/src/lib/voting/security.d.ts.map +1 -0
- package/src/lib/voting/security.js +68 -0
- package/src/lib/voting/security.js.map +1 -0
- package/src/lib/voting/tallier.d.ts +35 -0
- package/src/lib/voting/tallier.d.ts.map +1 -0
- package/src/lib/voting/tallier.js +415 -0
- package/src/lib/voting/tallier.js.map +1 -0
- package/src/lib/voting/types.d.ts +145 -0
- package/src/lib/voting/types.d.ts.map +1 -0
- package/src/lib/voting/types.js +48 -0
- package/src/lib/voting/types.js.map +1 -0
- package/src/member.d.ts +2 -2
- package/src/member.d.ts.map +1 -1
- package/src/member.js +2 -2
- package/src/member.js.map +1 -1
- package/src/secure-string.d.ts +2 -2
- package/src/secure-string.d.ts.map +1 -1
- package/src/secure-string.js +2 -2
- package/src/secure-string.js.map +1 -1
- package/src/services/aes-gcm.js.map +1 -1
- package/src/services/chunk-processor.d.ts +2 -2
- package/src/services/chunk-processor.d.ts.map +1 -1
- package/src/services/chunk-processor.js +3 -3
- package/src/services/chunk-processor.js.map +1 -1
- package/src/services/ecies/service.d.ts +3 -0
- package/src/services/ecies/service.d.ts.map +1 -1
- package/src/services/ecies/service.js +6 -0
- package/src/services/ecies/service.js.map +1 -1
- package/src/services/ecies/single-recipient.d.ts +1 -1
- package/src/services/ecies/single-recipient.d.ts.map +1 -1
- package/src/services/ecies/single-recipient.js +1 -1
- package/src/services/ecies/single-recipient.js.map +1 -1
- package/src/services/encryption-stream.d.ts +3 -3
- package/src/services/encryption-stream.d.ts.map +1 -1
- package/src/services/encryption-stream.js +7 -7
- package/src/services/encryption-stream.js.map +1 -1
- package/src/services/index.d.ts +1 -0
- package/src/services/index.d.ts.map +1 -1
- package/src/services/index.js.map +1 -1
- package/src/services/multi-recipient-processor.d.ts +2 -2
- package/src/services/multi-recipient-processor.d.ts.map +1 -1
- package/src/services/multi-recipient-processor.js +4 -4
- package/src/services/multi-recipient-processor.js.map +1 -1
- package/src/services/voting.service.d.ts.map +1 -1
- package/src/services/voting.service.js +4 -4
- package/src/services/voting.service.js.map +1 -1
- package/src/test-mocks/mock-frontend-member.d.ts +1 -1
- package/src/test-mocks/mock-frontend-member.d.ts.map +1 -1
- package/src/test-mocks/mock-frontend-member.js +1 -1
- package/src/test-mocks/mock-frontend-member.js.map +1 -1
- package/src/types.d.ts +1 -1
- package/src/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -271,6 +271,393 @@ console.log(member.id); // Uint8Array (size depends on provider)
|
|
|
271
271
|
const encrypted = await member.encryptData('My Secrets');
|
|
272
272
|
```
|
|
273
273
|
|
|
274
|
+
## ID Providers and Members: Deep Dive
|
|
275
|
+
|
|
276
|
+
### Overview
|
|
277
|
+
|
|
278
|
+
The ID provider system is a core architectural feature that enables flexible identifier formats throughout the library. The `Member` class seamlessly integrates with the configured ID provider, making it easy to work with different ID formats (MongoDB ObjectIDs, GUIDs, UUIDs, or custom formats) without changing your application code.
|
|
279
|
+
|
|
280
|
+
### How Member Uses ID Providers
|
|
281
|
+
|
|
282
|
+
The `Member` class relies on `Constants.idProvider` for three critical operations:
|
|
283
|
+
|
|
284
|
+
1. **ID Generation** - Creating unique identifiers for new members
|
|
285
|
+
2. **Serialization** - Converting binary IDs to strings for storage/transmission
|
|
286
|
+
3. **Deserialization** - Converting string IDs back to binary format
|
|
287
|
+
|
|
288
|
+
#### Internal Implementation
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
// 1. ID Generation (in Member constructor)
|
|
292
|
+
this._id = id ?? Constants.idProvider.generate();
|
|
293
|
+
|
|
294
|
+
// 2. Serialization (in Member.toJson())
|
|
295
|
+
public toJson(): string {
|
|
296
|
+
const storage = {
|
|
297
|
+
id: Constants.idProvider.serialize(this._id), // Uint8Array → string
|
|
298
|
+
// ... other fields
|
|
299
|
+
};
|
|
300
|
+
return JSON.stringify(storage);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// 3. Deserialization (in Member.fromJson())
|
|
304
|
+
public static fromJson(json: string, eciesService: ECIESService): Member {
|
|
305
|
+
const storage = JSON.parse(json);
|
|
306
|
+
return new Member(
|
|
307
|
+
eciesService,
|
|
308
|
+
// ...
|
|
309
|
+
Constants.idProvider.deserialize(storage.id), // string → Uint8Array
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Available ID Providers
|
|
315
|
+
|
|
316
|
+
#### ObjectIdProvider (Default)
|
|
317
|
+
|
|
318
|
+
**Format**: 12-byte MongoDB-compatible ObjectID
|
|
319
|
+
**Serialization**: 24-character hex string
|
|
320
|
+
**Use Case**: MongoDB integration, backward compatibility
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
import { ObjectIdProvider, createRuntimeConfiguration } from '@digitaldefiance/ecies-lib';
|
|
324
|
+
|
|
325
|
+
const config = createRuntimeConfiguration({
|
|
326
|
+
idProvider: new ObjectIdProvider()
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
const id = config.idProvider.generate();
|
|
330
|
+
console.log(id.length); // 12
|
|
331
|
+
console.log(config.idProvider.serialize(id)); // "507f1f77bcf86cd799439011"
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
#### GuidV4Provider
|
|
335
|
+
|
|
336
|
+
**Format**: 16-byte RFC 4122 v4 GUID
|
|
337
|
+
**Serialization**: 24-character base64 string (compact)
|
|
338
|
+
**Use Case**: Windows/.NET integration, compact serialization
|
|
339
|
+
|
|
340
|
+
```typescript
|
|
341
|
+
import { GuidV4Provider } from '@digitaldefiance/ecies-lib';
|
|
342
|
+
|
|
343
|
+
const provider = new GuidV4Provider();
|
|
344
|
+
const id = provider.generate();
|
|
345
|
+
console.log(id.length); // 16
|
|
346
|
+
console.log(provider.serialize(id)); // "kT8xVzQ2RkKmN5pP3w=="
|
|
347
|
+
|
|
348
|
+
// Supports multiple deserialization formats
|
|
349
|
+
provider.deserialize('kT8xVzQ2RkKmN5pP3w=='); // base64 (24 chars)
|
|
350
|
+
provider.deserialize('913f315734364642a6379a4fdf'); // hex (32 chars)
|
|
351
|
+
provider.deserialize('913f3157-3436-4642-a637-9a4fdf000000'); // full hex with dashes (36 chars)
|
|
352
|
+
|
|
353
|
+
// Deterministic GUIDs (v5)
|
|
354
|
+
const deterministicId = provider.fromNamespace('my-namespace', 'user-alice');
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
#### UuidProvider
|
|
358
|
+
|
|
359
|
+
**Format**: 16-byte RFC 4122 v4 UUID
|
|
360
|
+
**Serialization**: 36-character string with dashes (standard format)
|
|
361
|
+
**Use Case**: Standard UUID format, maximum compatibility
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
import { UuidProvider } from '@digitaldefiance/ecies-lib';
|
|
365
|
+
|
|
366
|
+
const provider = new UuidProvider();
|
|
367
|
+
const id = provider.generate();
|
|
368
|
+
console.log(id.length); // 16
|
|
369
|
+
console.log(provider.serialize(id)); // "550e8400-e29b-41d4-a716-446655440000"
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
#### CustomIdProvider
|
|
373
|
+
|
|
374
|
+
**Format**: Any byte length (1-255 bytes)
|
|
375
|
+
**Serialization**: Hexadecimal string
|
|
376
|
+
**Use Case**: Custom requirements, legacy systems, specialized formats
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
import { CustomIdProvider } from '@digitaldefiance/ecies-lib';
|
|
380
|
+
|
|
381
|
+
// 32-byte SHA-256 hash as ID
|
|
382
|
+
const provider = new CustomIdProvider(32, 'SHA256Hash');
|
|
383
|
+
const id = provider.generate();
|
|
384
|
+
console.log(id.length); // 32
|
|
385
|
+
console.log(provider.serialize(id)); // 64-character hex string
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Using ID Providers with Members
|
|
389
|
+
|
|
390
|
+
#### Creating Members with Different ID Providers
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
import {
|
|
394
|
+
Member,
|
|
395
|
+
MemberType,
|
|
396
|
+
EmailString,
|
|
397
|
+
ECIESService,
|
|
398
|
+
createRuntimeConfiguration,
|
|
399
|
+
ConstantsRegistry,
|
|
400
|
+
GuidV4Provider,
|
|
401
|
+
ObjectIdProvider
|
|
402
|
+
} from '@digitaldefiance/ecies-lib';
|
|
403
|
+
|
|
404
|
+
const ecies = new ECIESService();
|
|
405
|
+
|
|
406
|
+
// Option 1: Use default ObjectIdProvider
|
|
407
|
+
const alice = Member.newMember(
|
|
408
|
+
ecies,
|
|
409
|
+
MemberType.User,
|
|
410
|
+
'Alice',
|
|
411
|
+
new EmailString('alice@example.com')
|
|
412
|
+
);
|
|
413
|
+
console.log(alice.member.id.length); // 12 bytes
|
|
414
|
+
|
|
415
|
+
// Option 2: Configure GUID provider globally
|
|
416
|
+
const guidConfig = createRuntimeConfiguration({
|
|
417
|
+
idProvider: new GuidV4Provider()
|
|
418
|
+
});
|
|
419
|
+
ConstantsRegistry.register('guid-config', guidConfig);
|
|
420
|
+
|
|
421
|
+
// Now all new members use GUID IDs
|
|
422
|
+
const bob = Member.newMember(
|
|
423
|
+
ecies,
|
|
424
|
+
MemberType.User,
|
|
425
|
+
'Bob',
|
|
426
|
+
new EmailString('bob@example.com')
|
|
427
|
+
);
|
|
428
|
+
console.log(bob.member.id.length); // 16 bytes
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
#### Serializing and Deserializing Members
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
import { Member, ECIESService, Constants } from '@digitaldefiance/ecies-lib';
|
|
435
|
+
|
|
436
|
+
const ecies = new ECIESService();
|
|
437
|
+
const { member } = Member.newMember(
|
|
438
|
+
ecies,
|
|
439
|
+
MemberType.User,
|
|
440
|
+
'Charlie',
|
|
441
|
+
new EmailString('charlie@example.com')
|
|
442
|
+
);
|
|
443
|
+
|
|
444
|
+
// Serialize to JSON (ID automatically converted to string)
|
|
445
|
+
const json = member.toJson();
|
|
446
|
+
console.log(json);
|
|
447
|
+
// {
|
|
448
|
+
// "id": "507f1f77bcf86cd799439011", // Serialized using idProvider
|
|
449
|
+
// "type": 1,
|
|
450
|
+
// "name": "Charlie",
|
|
451
|
+
// "email": "charlie@example.com",
|
|
452
|
+
// "publicKey": "...",
|
|
453
|
+
// "creatorId": "507f1f77bcf86cd799439011",
|
|
454
|
+
// "dateCreated": "2024-01-15T10:30:00.000Z",
|
|
455
|
+
// "dateUpdated": "2024-01-15T10:30:00.000Z"
|
|
456
|
+
// }
|
|
457
|
+
|
|
458
|
+
// Deserialize from JSON (ID automatically converted back to Uint8Array)
|
|
459
|
+
const restored = Member.fromJson(json, ecies);
|
|
460
|
+
console.log(restored.id); // Uint8Array(12) [80, 127, 31, 119, ...]
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
#### Working with Member IDs
|
|
464
|
+
|
|
465
|
+
```typescript
|
|
466
|
+
import { Member, Constants } from '@digitaldefiance/ecies-lib';
|
|
467
|
+
|
|
468
|
+
const { member } = Member.newMember(/* ... */);
|
|
469
|
+
|
|
470
|
+
// Get binary ID
|
|
471
|
+
const binaryId: Uint8Array = member.id;
|
|
472
|
+
|
|
473
|
+
// Convert to string for display/storage
|
|
474
|
+
const stringId = Constants.idProvider.serialize(member.id);
|
|
475
|
+
console.log(`Member ID: ${stringId}`);
|
|
476
|
+
|
|
477
|
+
// Convert string back to binary
|
|
478
|
+
const restoredId = Constants.idProvider.deserialize(stringId);
|
|
479
|
+
|
|
480
|
+
// Compare IDs (constant-time comparison)
|
|
481
|
+
const isEqual = Constants.idProvider.equals(member.id, restoredId);
|
|
482
|
+
|
|
483
|
+
// Validate ID format
|
|
484
|
+
const isValid = Constants.idProvider.validate(member.id);
|
|
485
|
+
|
|
486
|
+
// Clone ID (defensive copy)
|
|
487
|
+
const idCopy = Constants.idProvider.clone(member.id);
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Multi-Recipient Encryption with Different ID Providers
|
|
491
|
+
|
|
492
|
+
The ID provider system is critical for multi-recipient encryption, where recipient IDs are embedded in the encrypted message:
|
|
493
|
+
|
|
494
|
+
```typescript
|
|
495
|
+
import { ECIESService, Member, MemberType, EmailString, GuidV4Provider, createRuntimeConfiguration } from '@digitaldefiance/ecies-lib';
|
|
496
|
+
|
|
497
|
+
// Configure GUID provider (16 bytes)
|
|
498
|
+
const config = createRuntimeConfiguration({
|
|
499
|
+
idProvider: new GuidV4Provider()
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
const ecies = new ECIESService(config);
|
|
503
|
+
|
|
504
|
+
// Create recipients with GUID IDs
|
|
505
|
+
const alice = Member.newMember(ecies, MemberType.User, 'Alice', new EmailString('alice@example.com'));
|
|
506
|
+
const bob = Member.newMember(ecies, MemberType.User, 'Bob', new EmailString('bob@example.com'));
|
|
507
|
+
|
|
508
|
+
const message = new TextEncoder().encode('Shared Secret');
|
|
509
|
+
|
|
510
|
+
// Encrypt for multiple recipients
|
|
511
|
+
// Each recipient's 16-byte GUID is embedded in the message
|
|
512
|
+
const encrypted = await ecies.encryptMultiple(
|
|
513
|
+
[
|
|
514
|
+
{ id: alice.member.id, publicKey: alice.member.publicKey },
|
|
515
|
+
{ id: bob.member.id, publicKey: bob.member.publicKey }
|
|
516
|
+
],
|
|
517
|
+
message
|
|
518
|
+
);
|
|
519
|
+
|
|
520
|
+
// Each recipient can decrypt using their ID
|
|
521
|
+
const aliceDecrypted = await ecies.decryptMultiple(
|
|
522
|
+
alice.member.id,
|
|
523
|
+
alice.member.privateKey!.value,
|
|
524
|
+
encrypted
|
|
525
|
+
);
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### Configuration Auto-Sync
|
|
529
|
+
|
|
530
|
+
When you change the ID provider, the library automatically updates related constants:
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
import { createRuntimeConfiguration, CustomIdProvider } from '@digitaldefiance/ecies-lib';
|
|
534
|
+
|
|
535
|
+
// Create 20-byte custom ID provider
|
|
536
|
+
const customProvider = new CustomIdProvider(20, 'CustomHash');
|
|
537
|
+
|
|
538
|
+
const config = createRuntimeConfiguration({
|
|
539
|
+
idProvider: customProvider
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
// These are automatically synced:
|
|
543
|
+
console.log(config.MEMBER_ID_LENGTH); // 20 (auto-synced)
|
|
544
|
+
console.log(config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE); // 20 (auto-synced)
|
|
545
|
+
console.log(config.idProvider.byteLength); // 20
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### Best Practices
|
|
549
|
+
|
|
550
|
+
1. **Choose the Right Provider**:
|
|
551
|
+
- Use `ObjectIdProvider` for MongoDB integration
|
|
552
|
+
- Use `GuidV4Provider` for compact serialization and Windows/.NET compatibility
|
|
553
|
+
- Use `UuidProvider` for standard UUID format and maximum compatibility
|
|
554
|
+
- Use `CustomIdProvider` for specialized requirements
|
|
555
|
+
|
|
556
|
+
2. **Configure Early**: Set your ID provider before creating any members:
|
|
557
|
+
```typescript
|
|
558
|
+
const config = createRuntimeConfiguration({ idProvider: new GuidV4Provider() });
|
|
559
|
+
ConstantsRegistry.register('app-config', config);
|
|
560
|
+
const ecies = new ECIESService(config);
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
3. **Consistent Configuration**: Use the same ID provider across your entire application to ensure compatibility
|
|
564
|
+
|
|
565
|
+
4. **Serialization for Storage**: Always use `idProvider.serialize()` when storing IDs in databases or transmitting over networks
|
|
566
|
+
|
|
567
|
+
5. **Validation**: Validate IDs when receiving them from external sources:
|
|
568
|
+
```typescript
|
|
569
|
+
if (!Constants.idProvider.validate(receivedId)) {
|
|
570
|
+
throw new Error('Invalid ID format');
|
|
571
|
+
}
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
6. **Cross-Platform Compatibility**: The same ID provider configuration works in both browser (`ecies-lib`) and Node.js (`node-ecies-lib`)
|
|
575
|
+
|
|
576
|
+
### Common Patterns
|
|
577
|
+
|
|
578
|
+
#### Pattern 1: Application-Wide ID Provider
|
|
579
|
+
|
|
580
|
+
```typescript
|
|
581
|
+
// config.ts
|
|
582
|
+
import { createRuntimeConfiguration, GuidV4Provider, ConstantsRegistry } from '@digitaldefiance/ecies-lib';
|
|
583
|
+
|
|
584
|
+
export const APP_CONFIG_KEY = 'app-config';
|
|
585
|
+
|
|
586
|
+
const config = createRuntimeConfiguration({
|
|
587
|
+
idProvider: new GuidV4Provider()
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
ConstantsRegistry.register(APP_CONFIG_KEY, config);
|
|
591
|
+
|
|
592
|
+
export { config };
|
|
593
|
+
|
|
594
|
+
// app.ts
|
|
595
|
+
import { ECIESService } from '@digitaldefiance/ecies-lib';
|
|
596
|
+
import { config } from './config';
|
|
597
|
+
|
|
598
|
+
const ecies = new ECIESService(config);
|
|
599
|
+
// All members created with this service will use GUID IDs
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
#### Pattern 2: Multiple ID Providers for Different Contexts
|
|
603
|
+
|
|
604
|
+
```typescript
|
|
605
|
+
import {
|
|
606
|
+
createRuntimeConfiguration,
|
|
607
|
+
ConstantsRegistry,
|
|
608
|
+
ObjectIdProvider,
|
|
609
|
+
GuidV4Provider,
|
|
610
|
+
ECIESService
|
|
611
|
+
} from '@digitaldefiance/ecies-lib';
|
|
612
|
+
|
|
613
|
+
// User context uses ObjectID (MongoDB)
|
|
614
|
+
const userConfig = createRuntimeConfiguration({
|
|
615
|
+
idProvider: new ObjectIdProvider()
|
|
616
|
+
});
|
|
617
|
+
ConstantsRegistry.register('user-context', userConfig);
|
|
618
|
+
|
|
619
|
+
// Device context uses GUID
|
|
620
|
+
const deviceConfig = createRuntimeConfiguration({
|
|
621
|
+
idProvider: new GuidV4Provider()
|
|
622
|
+
});
|
|
623
|
+
ConstantsRegistry.register('device-context', deviceConfig);
|
|
624
|
+
|
|
625
|
+
// Use different services for different contexts
|
|
626
|
+
const userEcies = new ECIESService(userConfig);
|
|
627
|
+
const deviceEcies = new ECIESService(deviceConfig);
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
#### Pattern 3: ID Provider Abstraction Layer
|
|
631
|
+
|
|
632
|
+
```typescript
|
|
633
|
+
import { Constants, Member, ECIESService } from '@digitaldefiance/ecies-lib';
|
|
634
|
+
|
|
635
|
+
class MemberService {
|
|
636
|
+
constructor(private ecies: ECIESService) {}
|
|
637
|
+
|
|
638
|
+
createMember(name: string, email: string) {
|
|
639
|
+
return Member.newMember(
|
|
640
|
+
this.ecies,
|
|
641
|
+
MemberType.User,
|
|
642
|
+
name,
|
|
643
|
+
new EmailString(email)
|
|
644
|
+
);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
serializeMemberId(id: Uint8Array): string {
|
|
648
|
+
return Constants.idProvider.serialize(id);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
deserializeMemberId(id: string): Uint8Array {
|
|
652
|
+
return Constants.idProvider.deserialize(id);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
validateMemberId(id: Uint8Array): boolean {
|
|
656
|
+
return Constants.idProvider.validate(id);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
```
|
|
660
|
+
|
|
274
661
|
## API Reference
|
|
275
662
|
|
|
276
663
|
### Core Services
|
|
@@ -281,6 +668,39 @@ const encrypted = await member.encryptData('My Secrets');
|
|
|
281
668
|
- **`EciesFileService`**: Helper for chunked file encryption.
|
|
282
669
|
- **`PasswordLoginService`**: Secure authentication using PBKDF2 and encrypted key bundles.
|
|
283
670
|
|
|
671
|
+
### ID Providers
|
|
672
|
+
|
|
673
|
+
- **`IIdProvider`**: Interface that all ID providers implement
|
|
674
|
+
- `generate()`: Create a new random ID
|
|
675
|
+
- `validate(id)`: Check if an ID is valid
|
|
676
|
+
- `serialize(id)`: Convert Uint8Array to string
|
|
677
|
+
- `deserialize(str)`: Convert string to Uint8Array
|
|
678
|
+
- `equals(a, b)`: Constant-time comparison
|
|
679
|
+
- `clone(id)`: Create defensive copy
|
|
680
|
+
- `idToString(id)`: Convert any ID type to string
|
|
681
|
+
- `idFromString(str)`: Convert string to ID buffer
|
|
682
|
+
|
|
683
|
+
- **`ObjectIdProvider`**: 12-byte MongoDB ObjectID format
|
|
684
|
+
- **`GuidV4Provider`**: 16-byte GUID with base64 serialization
|
|
685
|
+
- **`UuidProvider`**: 16-byte UUID with standard dash formatting
|
|
686
|
+
- **`CustomIdProvider`**: Custom byte length (1-255 bytes)
|
|
687
|
+
- **`BaseIdProvider`**: Abstract base class for creating custom providers
|
|
688
|
+
|
|
689
|
+
### Member System
|
|
690
|
+
|
|
691
|
+
- **`Member`**: High-level user abstraction with cryptographic operations
|
|
692
|
+
- `id`: Unique identifier (format determined by ID provider)
|
|
693
|
+
- `publicKey`: Member's public key
|
|
694
|
+
- `privateKey`: Member's private key (optional, can be loaded/unloaded)
|
|
695
|
+
- `encryptData(data, recipientPublicKey?)`: Encrypt data
|
|
696
|
+
- `decryptData(encryptedData)`: Decrypt data
|
|
697
|
+
- `sign(data)`: Sign data with private key
|
|
698
|
+
- `verify(signature, data)`: Verify signature
|
|
699
|
+
- `toJson()`: Serialize to JSON (uses ID provider)
|
|
700
|
+
- `fromJson(json, eciesService)`: Deserialize from JSON (uses ID provider)
|
|
701
|
+
- `newMember(...)`: Static factory method
|
|
702
|
+
- `fromMnemonic(...)`: Create from BIP39 mnemonic
|
|
703
|
+
|
|
284
704
|
### Configuration & Registry
|
|
285
705
|
|
|
286
706
|
- **`Constants`**: The default, immutable configuration object.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitaldefiance/ecies-lib",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.7.1",
|
|
4
4
|
"description": "Digital Defiance ECIES Library",
|
|
5
5
|
"homepage": "https://github.com/Digital-Defiance/ecies-lib",
|
|
6
6
|
"repository": {
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
"test": "npx nx test digitaldefiance-ecies-lib",
|
|
31
31
|
"test:nocache": "npx nx test --skip-nx-cache digitaldefiance-ecies-lib",
|
|
32
32
|
"test:stream": "npx nx test --outputStyle=stream digitaldefiance-ecies-lib",
|
|
33
|
-
"test:logged": "npx
|
|
33
|
+
"test:logged": "npx jest --config=jest.config.js 2>&1 | tee test.log",
|
|
34
|
+
"test:logged:verbose": "VERBOSE_TESTS=1 npx jest --config=jest.config.js 2>&1 | tee test.log",
|
|
34
35
|
"test:coverage": "npx jest --coverage --testPathPattern=digitaldefiance-ecies-lib --coverageReporters=text",
|
|
35
36
|
"check:circular": "madge --circular --extensions ts src/index.ts",
|
|
36
37
|
"check:circular:json": "madge --circular --extensions ts --json src/index.ts",
|
|
@@ -57,14 +58,6 @@
|
|
|
57
58
|
"author": "Digital Defiance",
|
|
58
59
|
"license": "MIT",
|
|
59
60
|
"packageManager": "yarn@4.11.0",
|
|
60
|
-
"peerDependencies": {
|
|
61
|
-
"paillier-bigint": "^3.4.1"
|
|
62
|
-
},
|
|
63
|
-
"peerDependenciesMeta": {
|
|
64
|
-
"paillier-bigint": {
|
|
65
|
-
"optional": true
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
61
|
"dependencies": {
|
|
69
62
|
"@digitaldefiance/i18n-lib": "3.8.16",
|
|
70
63
|
"@ethereumjs/wallet": "^10.0.0",
|
|
@@ -72,6 +65,7 @@
|
|
|
72
65
|
"@noble/hashes": "1.8.0",
|
|
73
66
|
"@scure/bip32": "1.7.0",
|
|
74
67
|
"bson": "^6.10.4",
|
|
68
|
+
"paillier-bigint": "^3.4.1",
|
|
75
69
|
"ts-brand": "^0.2.0"
|
|
76
70
|
},
|
|
77
71
|
"devDependencies": {
|
|
@@ -8,7 +8,7 @@ import { ECIESService } from '../services/ecies/service';
|
|
|
8
8
|
export declare class ECIESBuilder {
|
|
9
9
|
private serviceConfig;
|
|
10
10
|
private eciesConsts;
|
|
11
|
-
private
|
|
11
|
+
private _i18n?;
|
|
12
12
|
static create(): ECIESBuilder;
|
|
13
13
|
withServiceConfig(config: Partial<IECIESConfig>): this;
|
|
14
14
|
withConstants(constants: Partial<IECIESConstants>): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecies-builder.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"ecies-builder.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAAC,CAA2B;IAEzC,MAAM,CAAC,MAAM,IAAI,YAAY;IAI7B,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAKtD,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAKxD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAKhD,KAAK,IAAI,YAAY;CAItB"}
|
|
@@ -9,7 +9,7 @@ const service_1 = require("../services/ecies/service");
|
|
|
9
9
|
class ECIESBuilder {
|
|
10
10
|
serviceConfig = {};
|
|
11
11
|
eciesConsts = {};
|
|
12
|
-
|
|
12
|
+
_i18n;
|
|
13
13
|
static create() {
|
|
14
14
|
return new ECIESBuilder();
|
|
15
15
|
}
|
|
@@ -22,7 +22,7 @@ class ECIESBuilder {
|
|
|
22
22
|
return this;
|
|
23
23
|
}
|
|
24
24
|
withI18n(engine) {
|
|
25
|
-
this.
|
|
25
|
+
this._i18n = engine;
|
|
26
26
|
return this;
|
|
27
27
|
}
|
|
28
28
|
build() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecies-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,4CAAyC;AAGzC,uDAAyD;AAEzD,MAAa,YAAY;IACf,aAAa,GAA0B,EAAE,CAAC;IAC1C,WAAW,GAA6B,EAAE,CAAC;IAC3C,
|
|
1
|
+
{"version":3,"file":"ecies-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,4CAAyC;AAGzC,uDAAyD;AAEzD,MAAa,YAAY;IACf,aAAa,GAA0B,EAAE,CAAC;IAC1C,WAAW,GAA6B,EAAE,CAAC;IAC3C,KAAK,CAA4B;IAEzC,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,KAAK,GAAG,MAAM,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,IAAI,sBAAY,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;CACF;AA5BD,oCA4BC"}
|
package/src/email-string.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EmailString = void 0;
|
|
4
|
-
const
|
|
5
|
-
const validator_1 = tslib_1.__importDefault(require("validator"));
|
|
4
|
+
const validator_1 = require("validator");
|
|
6
5
|
const invalid_email_type_1 = require("./enumerations/invalid-email-type");
|
|
7
6
|
const invalid_email_1 = require("./errors/invalid-email");
|
|
8
7
|
/**
|
|
@@ -25,7 +24,7 @@ class EmailString {
|
|
|
25
24
|
if (trimmedEmail.length != email.length) {
|
|
26
25
|
throw new invalid_email_1.InvalidEmailError(invalid_email_type_1.InvalidEmailErrorType.Whitespace, email);
|
|
27
26
|
}
|
|
28
|
-
if (!validator_1.
|
|
27
|
+
if (!(0, validator_1.isEmail)(trimmedEmail)) {
|
|
29
28
|
throw new invalid_email_1.InvalidEmailError(invalid_email_type_1.InvalidEmailErrorType.Invalid, email);
|
|
30
29
|
}
|
|
31
30
|
this.email = trimmedEmail;
|
package/src/email-string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-string.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/email-string.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-string.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/email-string.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,0EAA0E;AAC1E,0DAA2D;AAE3D;;;;GAIG;AACH,MAAa,WAAW;IACN,KAAK,CAAS;IAE9B;;;;OAIG;IACH,YAAY,KAAa;QACvB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,IAAA,mBAAO,EAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAkB;QAC9B,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,KAAa;QAClC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAW,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF;AA/DD,kCA+DC"}
|
package/src/i18n-setup.js
CHANGED
package/src/i18n-setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-setup.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/i18n-setup.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAyBH,gEAcC;AA4CD,gDAKC;AAcD,oDAEC;AAKD,kDAWC;AAKD,oDAUC;AApID,wDAKmC;AAEnC,0CAAuD;AACvD,gDAA2D;AAC3D,0CAAwD;AACxD,0CAAuD;AACvD,0CAAyD;AACzD,0CAA0D;AAC1D,gDAAmE;AAEtD,QAAA,kBAAkB,GAAG,kCAA2C,CAAC;AACjE,QAAA,gBAAgB,GAAG,OAAgB,CAAC;AAEjD;;;GAGG;AACH,SAAgB,0BAA0B;IACxC,OAAO;QACL,EAAE,EAAE,wBAAgB;QACpB,OAAO,EAAE;YACP,CAAC,wBAAa,CAAC,KAAK,CAAC,EAAE,2BAAmB;YAC1C,CAAC,wBAAa,CAAC,KAAK,CAAC,EAAE,2BAAmB;YAC1C,CAAC,wBAAa,CAAC,EAAE,CAAC,EAAE,uBAAkB;YACtC,CAAC,wBAAa,CAAC,EAAE,CAAC,EAAE,wBAAmB;YACvC,CAAC,wBAAa,CAAC,EAAE,CAAC,EAAE,uBAAkB;YACtC,CAAC,wBAAa,CAAC,KAAK,CAAC,EAAE,mCAA2B;YAClD,CAAC,wBAAa,CAAC,EAAE,CAAC,EAAE,yBAAoB;YACxC,CAAC,wBAAa,CAAC,EAAE,CAAC,EAAE,0BAAqB;SAC1C;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAqB;IAC3C,MAAM,MAAM,GAAG,qBAAU,CAAC,mBAAmB,CAC3C,SAAS,EACT,IAAA,iCAAsB,GAAE,EACxB,MAAM,CACP,CAAC;IAEF,8DAA8D;IAC9D,MAAM,OAAO,GAAG,IAAA,0CAA+B,GAAE,CAAC;IAClD,MAAM,CAAC,mBAAmB,CAAC;QACzB,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;QACxB,OAAO,EAAE,OAAO,CAAC,OAAiD;KACnE,CAAC,CAAC;IAEH,wCAAwC;IACxC,MAAM,WAAW,GAAG,0BAA0B,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACxC,GAAG,WAAW;QACd,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B,CAAC,CAAC;IAEH,iDAAiD;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CACV,uBAAuB,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,EACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,IAAI,YAAoC,CAAC;AAEzC,SAAgB,kBAAkB,CAAC,MAAqB;IACtD,IAAI,CAAC,YAAY,IAAI,CAAC,qBAAU,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACU,QAAA,eAAe,GAAG,IAAI,KAAK,CAAC,EAAgB,EAAE;IACzD,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"i18n-setup.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/i18n-setup.ts"],"names":[],"mappings":"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"}
|
package/src/index.d.ts
CHANGED
|
@@ -35,5 +35,6 @@ export * from './secure-string';
|
|
|
35
35
|
export * from './services';
|
|
36
36
|
export * from './types';
|
|
37
37
|
export * from './utils';
|
|
38
|
+
export * from './lib/voting';
|
|
38
39
|
export type { PrivateKey, PublicKey, KeyPair as PaillierKeyPair, } from 'paillier-bigint';
|
|
39
40
|
//# sourceMappingURL=index.d.ts.map
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,uBAAuB,CAAC;AAG/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AASvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,IAAI,eAAe,GAC3B,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,uBAAuB,CAAC;AAG/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AASvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,IAAI,eAAe,GAC3B,MAAM,iBAAiB,CAAC"}
|
package/src/index.js
CHANGED
|
@@ -60,4 +60,6 @@ tslib_1.__exportStar(require("./secure-string"), exports);
|
|
|
60
60
|
tslib_1.__exportStar(require("./services"), exports);
|
|
61
61
|
tslib_1.__exportStar(require("./types"), exports);
|
|
62
62
|
tslib_1.__exportStar(require("./utils"), exports);
|
|
63
|
+
// Voting system exports (IMember already exported from ./interfaces)
|
|
64
|
+
tslib_1.__exportStar(require("./lib/voting"), exports);
|
|
63
65
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,mEAAmE;AACnE,wEAAwE;AACxE,iCAA+B;AAE/B,kBAAkB;AAClB,2DAAiC;AACjC,uDAA6B;AAC7B,sDAA4B;AAE5B,UAAU;AACV,2CAOsB;AANpB,8GAAA,gBAAgB,OAAA;AAChB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AAGtB,mFAAmF;AACnF,mEAAmE;AACnE,uEAKuC;AAJrC,iIAAA,wBAAwB,OAAA;AACxB,+HAAA,sBAAsB,OAAA;AACtB,sIAAA,6BAA6B,OAAA;AAC7B,wIAAA,+BAA+B,OAAA;AAGjC,2DAA2D;AAC3D,oEAAoE;AACpE,8DAA8D;AAE9D,kEAAkE;AAClE,gEAAgE;AAEhE,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,mDAAyB;AACzB,uDAA6B;AAC7B,uEAA6C;AAC7C,kEAAyE;AAAhE,4HAAA,wBAAwB,OAAA;AAEjC,qEAA2C;AAC3C,qEAA2C;AAC3C,uEAA6C;AAC7C,6DAAmC;AACnC,4DAAkC;AAClC,mDAAyB;AACzB,4DAAkC;AAClC,yDAA+B;AAC/B,0DAAgC;AAChC,0DAAgC;AAChC,qDAA2B;AAC3B,kDAAwB;AACxB,kDAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,mEAAmE;AACnE,wEAAwE;AACxE,iCAA+B;AAE/B,kBAAkB;AAClB,2DAAiC;AACjC,uDAA6B;AAC7B,sDAA4B;AAE5B,UAAU;AACV,2CAOsB;AANpB,8GAAA,gBAAgB,OAAA;AAChB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AAGtB,mFAAmF;AACnF,mEAAmE;AACnE,uEAKuC;AAJrC,iIAAA,wBAAwB,OAAA;AACxB,+HAAA,sBAAsB,OAAA;AACtB,sIAAA,6BAA6B,OAAA;AAC7B,wIAAA,+BAA+B,OAAA;AAGjC,2DAA2D;AAC3D,oEAAoE;AACpE,8DAA8D;AAE9D,kEAAkE;AAClE,gEAAgE;AAEhE,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,mDAAyB;AACzB,uDAA6B;AAC7B,uEAA6C;AAC7C,kEAAyE;AAAhE,4HAAA,wBAAwB,OAAA;AAEjC,qEAA2C;AAC3C,qEAA2C;AAC3C,uEAA6C;AAC7C,6DAAmC;AACnC,4DAAkC;AAClC,mDAAyB;AACzB,4DAAkC;AAClC,yDAA+B;AAC/B,0DAAgC;AAChC,0DAAgC;AAChC,qDAA2B;AAC3B,kDAAwB;AACxB,kDAAwB;AAExB,qEAAqE;AACrE,uDAA6B"}
|
|
@@ -15,6 +15,7 @@ export * from './pbkdf2-consts';
|
|
|
15
15
|
export * from './pbkdf2-result';
|
|
16
16
|
export * from './platform-buffer';
|
|
17
17
|
export * from './voting-consts';
|
|
18
|
+
export { type IPoll, type IVoteEncoder, type IPollTallier, type IPollFactory, type IVotingSecurityValidator, SecurityLevel, } from './voting-poll';
|
|
18
19
|
export * from './voting-service';
|
|
19
20
|
export * from './isolated-keys';
|
|
20
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,mBAAmB,UAAU,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,mBAAmB,UAAU,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
package/src/interfaces/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecurityLevel = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
tslib_1.__exportStar(require("./checksum-config"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./checksum-consts"), exports);
|
|
@@ -16,6 +17,8 @@ tslib_1.__exportStar(require("./pbkdf2-consts"), exports);
|
|
|
16
17
|
tslib_1.__exportStar(require("./pbkdf2-result"), exports);
|
|
17
18
|
tslib_1.__exportStar(require("./platform-buffer"), exports);
|
|
18
19
|
tslib_1.__exportStar(require("./voting-consts"), exports);
|
|
20
|
+
var voting_poll_1 = require("./voting-poll");
|
|
21
|
+
Object.defineProperty(exports, "SecurityLevel", { enumerable: true, get: function () { return voting_poll_1.SecurityLevel; } });
|
|
19
22
|
tslib_1.__exportStar(require("./voting-service"), exports);
|
|
20
23
|
tslib_1.__exportStar(require("./isolated-keys"), exports);
|
|
21
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":";;;;AAAA,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,+DAAqC;AACrC,0DAAgC;AAChC,wEAA8C;AAC9C,iDAAuB;AAEvB,2DAAiC;AAEjC,0DAAgC;AAChC,0DAAgC;AAChC,0DAAgC;AAChC,4DAAkC;AAClC,0DAAgC;AAChC,6CAOuB;AADrB,4GAAA,aAAa,OAAA;AAEf,2DAAiC;AACjC,0DAAgC"}
|