@brightchain/brightchain-lib 0.29.26 → 0.30.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/package.json +10 -4
- package/src/index.d.ts +1 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/constants.d.ts +3 -26
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +2 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/db/collection.d.ts +1 -1
- package/src/lib/db/collection.d.ts.map +1 -1
- package/src/lib/db/collection.js +2 -1
- package/src/lib/db/collection.js.map +1 -1
- package/src/lib/enumeration-translations/index.d.ts +2 -0
- package/src/lib/enumeration-translations/index.d.ts.map +1 -1
- package/src/lib/enumeration-translations/index.js +1 -0
- package/src/lib/enumeration-translations/index.js.map +1 -1
- package/src/lib/enumeration-translations/memberStatusType.d.ts +5 -0
- package/src/lib/enumeration-translations/memberStatusType.d.ts.map +1 -0
- package/src/lib/enumeration-translations/memberStatusType.js +58 -0
- package/src/lib/enumeration-translations/memberStatusType.js.map +1 -0
- package/src/lib/enumerations/brightChainStrings.d.ts +61 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +64 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -1
- package/src/lib/enumerations/brightchainFeatures.d.ts +1 -0
- package/src/lib/enumerations/brightchainFeatures.d.ts.map +1 -1
- package/src/lib/enumerations/brightchainFeatures.js +1 -0
- package/src/lib/enumerations/brightchainFeatures.js.map +1 -1
- package/src/lib/enumerations/communication.d.ts +7 -1
- package/src/lib/enumerations/communication.d.ts.map +1 -1
- package/src/lib/enumerations/communication.js +6 -0
- package/src/lib/enumerations/communication.js.map +1 -1
- package/src/lib/enumerations/friendRequestStatus.d.ts +7 -0
- package/src/lib/enumerations/friendRequestStatus.d.ts.map +1 -0
- package/src/lib/enumerations/friendRequestStatus.js +11 -0
- package/src/lib/enumerations/friendRequestStatus.js.map +1 -0
- package/src/lib/enumerations/friendsErrorCode.d.ts +10 -0
- package/src/lib/enumerations/friendsErrorCode.d.ts.map +1 -0
- package/src/lib/enumerations/friendsErrorCode.js +14 -0
- package/src/lib/enumerations/friendsErrorCode.js.map +1 -0
- package/src/lib/enumerations/friendshipStatus.d.ts +7 -0
- package/src/lib/enumerations/friendshipStatus.d.ts.map +1 -0
- package/src/lib/enumerations/friendshipStatus.js +11 -0
- package/src/lib/enumerations/friendshipStatus.js.map +1 -0
- package/src/lib/enumerations/index.d.ts +3 -0
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +4 -0
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/enumerations/messaging/emailErrorType.d.ts +15 -2
- package/src/lib/enumerations/messaging/emailErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/messaging/emailErrorType.js +17 -1
- package/src/lib/enumerations/messaging/emailErrorType.js.map +1 -1
- package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts +4 -2
- package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts.map +1 -1
- package/src/lib/enumerations/messaging/messageEncryptionScheme.js +3 -1
- package/src/lib/enumerations/messaging/messageEncryptionScheme.js.map +1 -1
- package/src/lib/errors/encryptionErrors.d.ts +71 -0
- package/src/lib/errors/encryptionErrors.d.ts.map +1 -0
- package/src/lib/errors/encryptionErrors.js +112 -0
- package/src/lib/errors/encryptionErrors.js.map +1 -0
- package/src/lib/errors/friendsServiceError.d.ts +20 -0
- package/src/lib/errors/friendsServiceError.d.ts.map +1 -0
- package/src/lib/errors/friendsServiceError.js +48 -0
- package/src/lib/errors/friendsServiceError.js.map +1 -0
- package/src/lib/errors/index.d.ts +15 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +21 -0
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/i18n/i18n-setup.d.ts +2 -2
- package/src/lib/i18n/i18n-setup.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUK.d.ts +2 -2
- package/src/lib/i18n/strings/englishUK.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUK.js.map +1 -1
- package/src/lib/i18n/strings/englishUs.d.ts +2 -2
- package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUs.js +65 -1
- package/src/lib/i18n/strings/englishUs.js.map +1 -1
- package/src/lib/i18n/strings/french.d.ts +2 -2
- package/src/lib/i18n/strings/french.d.ts.map +1 -1
- package/src/lib/i18n/strings/french.js +78 -13
- package/src/lib/i18n/strings/french.js.map +1 -1
- package/src/lib/i18n/strings/german.d.ts +2 -2
- package/src/lib/i18n/strings/german.d.ts.map +1 -1
- package/src/lib/i18n/strings/german.js +77 -12
- package/src/lib/i18n/strings/german.js.map +1 -1
- package/src/lib/i18n/strings/japanese.d.ts +2 -2
- package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
- package/src/lib/i18n/strings/japanese.js +77 -12
- package/src/lib/i18n/strings/japanese.js.map +1 -1
- package/src/lib/i18n/strings/mandarin.d.ts +2 -2
- package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
- package/src/lib/i18n/strings/mandarin.js +77 -12
- package/src/lib/i18n/strings/mandarin.js.map +1 -1
- package/src/lib/i18n/strings/spanish.d.ts +2 -2
- package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
- package/src/lib/i18n/strings/spanish.js +77 -12
- package/src/lib/i18n/strings/spanish.js.map +1 -1
- package/src/lib/i18n/strings/ukrainian.d.ts +2 -2
- package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
- package/src/lib/i18n/strings/ukrainian.js +77 -12
- package/src/lib/i18n/strings/ukrainian.js.map +1 -1
- package/src/lib/index.d.ts +31 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +29 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/interfaces/appSubsystemPlugin.d.ts +69 -0
- package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -0
- package/src/lib/interfaces/appSubsystemPlugin.js +3 -0
- package/src/lib/interfaces/appSubsystemPlugin.js.map +1 -0
- package/src/lib/interfaces/auth/writeProof.d.ts +2 -0
- package/src/lib/interfaces/auth/writeProof.d.ts.map +1 -1
- package/src/lib/interfaces/auth/writeProofUtils.d.ts +1 -1
- package/src/lib/interfaces/auth/writeProofUtils.d.ts.map +1 -1
- package/src/lib/interfaces/auth/writeProofUtils.js +2 -2
- package/src/lib/interfaces/auth/writeProofUtils.js.map +1 -1
- package/src/lib/interfaces/availability/gossipService.d.ts +99 -1
- package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
- package/src/lib/interfaces/availability/gossipService.js +4 -0
- package/src/lib/interfaces/availability/gossipService.js.map +1 -1
- package/src/lib/interfaces/communication/blockContentStore.d.ts +57 -0
- package/src/lib/interfaces/communication/blockContentStore.d.ts.map +1 -0
- package/src/lib/interfaces/communication/blockContentStore.js +21 -0
- package/src/lib/interfaces/communication/blockContentStore.js.map +1 -0
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts +77 -0
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -0
- package/src/lib/interfaces/communication/chatStorageProvider.js +25 -0
- package/src/lib/interfaces/communication/chatStorageProvider.js.map +1 -0
- package/src/lib/interfaces/communication/index.d.ts +4 -0
- package/src/lib/interfaces/communication/index.d.ts.map +1 -0
- package/src/lib/interfaces/communication/index.js +3 -0
- package/src/lib/interfaces/communication/index.js.map +1 -0
- package/src/lib/interfaces/communication/server.d.ts +57 -0
- package/src/lib/interfaces/communication/server.d.ts.map +1 -0
- package/src/lib/interfaces/communication/server.js +14 -0
- package/src/lib/interfaces/communication/server.js.map +1 -0
- package/src/lib/interfaces/communication.d.ts +62 -5
- package/src/lib/interfaces/communication.d.ts.map +1 -1
- package/src/lib/interfaces/communication.js +8 -0
- package/src/lib/interfaces/communication.js.map +1 -1
- package/src/lib/interfaces/communicationEvents.d.ts +59 -1
- package/src/lib/interfaces/communicationEvents.d.ts.map +1 -1
- package/src/lib/interfaces/constants.d.ts +2 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/events/communicationEventEmitter.d.ts +9 -0
- package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -1
- package/src/lib/interfaces/events/communicationEventEmitter.js +9 -0
- package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -1
- package/src/lib/interfaces/friends/baseFriendRequest.d.ts +13 -0
- package/src/lib/interfaces/friends/baseFriendRequest.d.ts.map +1 -0
- package/src/lib/interfaces/friends/baseFriendRequest.js +3 -0
- package/src/lib/interfaces/friends/baseFriendRequest.js.map +1 -0
- package/src/lib/interfaces/friends/baseFriendship.d.ts +11 -0
- package/src/lib/interfaces/friends/baseFriendship.d.ts.map +1 -0
- package/src/lib/interfaces/friends/baseFriendship.js +3 -0
- package/src/lib/interfaces/friends/baseFriendship.js.map +1 -0
- package/src/lib/interfaces/friends/friendsService.d.ts +32 -0
- package/src/lib/interfaces/friends/friendsService.d.ts.map +1 -0
- package/src/lib/interfaces/friends/friendsService.js +3 -0
- package/src/lib/interfaces/friends/friendsService.js.map +1 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts +17 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts.map +1 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.js +3 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.js.map +1 -0
- package/src/lib/interfaces/friends/index.d.ts +6 -0
- package/src/lib/interfaces/friends/index.d.ts.map +1 -0
- package/src/lib/interfaces/friends/index.js +3 -0
- package/src/lib/interfaces/friends/index.js.map +1 -0
- package/src/lib/interfaces/friends/pagination.d.ts +11 -0
- package/src/lib/interfaces/friends/pagination.d.ts.map +1 -0
- package/src/lib/interfaces/friends/pagination.js +3 -0
- package/src/lib/interfaces/friends/pagination.js.map +1 -0
- package/src/lib/interfaces/index.d.ts +6 -1
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +3 -0
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/messaging/gpgKey.d.ts +93 -0
- package/src/lib/interfaces/messaging/gpgKey.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/gpgKey.js +12 -0
- package/src/lib/interfaces/messaging/gpgKey.js.map +1 -0
- package/src/lib/interfaces/messaging/index.d.ts +4 -0
- package/src/lib/interfaces/messaging/index.d.ts.map +1 -1
- package/src/lib/interfaces/messaging/index.js +4 -0
- package/src/lib/interfaces/messaging/index.js.map +1 -1
- package/src/lib/interfaces/messaging/keyStore.d.ts +100 -0
- package/src/lib/interfaces/messaging/keyStore.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/keyStore.js +13 -0
- package/src/lib/interfaces/messaging/keyStore.js.map +1 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts +92 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.js +13 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.js.map +1 -0
- package/src/lib/interfaces/messaging/smimeCertificate.d.ts +99 -0
- package/src/lib/interfaces/messaging/smimeCertificate.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/smimeCertificate.js +12 -0
- package/src/lib/interfaces/messaging/smimeCertificate.js.map +1 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +8 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
- package/src/lib/interfaces/responses/communicationResponses.d.ts +25 -0
- package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
- package/src/lib/interfaces/storage/documentTypes.d.ts +4 -0
- package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -1
- package/src/lib/services/blockService.d.ts +11 -3
- package/src/lib/services/blockService.d.ts.map +1 -1
- package/src/lib/services/blockService.js +22 -2
- package/src/lib/services/blockService.js.map +1 -1
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +108 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +284 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -0
- package/src/lib/services/communication/attachmentUtils.d.ts +20 -0
- package/src/lib/services/communication/attachmentUtils.d.ts.map +1 -0
- package/src/lib/services/communication/attachmentUtils.js +43 -0
- package/src/lib/services/communication/attachmentUtils.js.map +1 -0
- package/src/lib/services/communication/channelService.d.ts +143 -14
- package/src/lib/services/communication/channelService.d.ts.map +1 -1
- package/src/lib/services/communication/channelService.js +562 -41
- package/src/lib/services/communication/channelService.js.map +1 -1
- package/src/lib/services/communication/conversationService.d.ts +91 -4
- package/src/lib/services/communication/conversationService.d.ts.map +1 -1
- package/src/lib/services/communication/conversationService.js +269 -7
- package/src/lib/services/communication/conversationService.js.map +1 -1
- package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts +36 -0
- package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts.map +1 -0
- package/src/lib/services/communication/eciesKeyEncryptionHandler.js +30 -0
- package/src/lib/services/communication/eciesKeyEncryptionHandler.js.map +1 -0
- package/src/lib/services/communication/groupService.d.ts +99 -21
- package/src/lib/services/communication/groupService.d.ts.map +1 -1
- package/src/lib/services/communication/groupService.js +387 -41
- package/src/lib/services/communication/groupService.js.map +1 -1
- package/src/lib/services/communication/index.d.ts +6 -1
- package/src/lib/services/communication/index.d.ts.map +1 -1
- package/src/lib/services/communication/index.js +20 -1
- package/src/lib/services/communication/index.js.map +1 -1
- package/src/lib/services/communication/keyEpochManager.d.ts +41 -0
- package/src/lib/services/communication/keyEpochManager.d.ts.map +1 -0
- package/src/lib/services/communication/keyEpochManager.js +59 -0
- package/src/lib/services/communication/keyEpochManager.js.map +1 -0
- package/src/lib/services/communication/rehydrationHelpers.d.ts +32 -0
- package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -0
- package/src/lib/services/communication/rehydrationHelpers.js +58 -0
- package/src/lib/services/communication/rehydrationHelpers.js.map +1 -0
- package/src/lib/services/communication/serverService.d.ts +193 -0
- package/src/lib/services/communication/serverService.d.ts.map +1 -0
- package/src/lib/services/communication/serverService.js +495 -0
- package/src/lib/services/communication/serverService.js.map +1 -0
- package/src/lib/services/copyOnWrite.service.d.ts +110 -0
- package/src/lib/services/copyOnWrite.service.d.ts.map +1 -0
- package/src/lib/services/copyOnWrite.service.js +256 -0
- package/src/lib/services/copyOnWrite.service.js.map +1 -0
- package/src/lib/services/index.d.ts +1 -0
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +1 -0
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/memberStore.d.ts +17 -1
- package/src/lib/services/memberStore.d.ts.map +1 -1
- package/src/lib/services/memberStore.js +98 -17
- package/src/lib/services/memberStore.js.map +1 -1
- package/src/lib/services/messaging/emailEncryptionService.d.ts +162 -0
- package/src/lib/services/messaging/emailEncryptionService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailEncryptionService.js +293 -0
- package/src/lib/services/messaging/emailEncryptionService.js.map +1 -1
- package/src/lib/services/messaging/emailMessageService.d.ts +64 -0
- package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailMessageService.js +142 -13
- package/src/lib/services/messaging/emailMessageService.js.map +1 -1
- package/src/lib/services/messaging/gpgKeyManager.d.ts +130 -0
- package/src/lib/services/messaging/gpgKeyManager.d.ts.map +1 -0
- package/src/lib/services/messaging/gpgKeyManager.js +381 -0
- package/src/lib/services/messaging/gpgKeyManager.js.map +1 -0
- package/src/lib/services/messaging/index.d.ts +3 -0
- package/src/lib/services/messaging/index.d.ts.map +1 -1
- package/src/lib/services/messaging/index.js +3 -0
- package/src/lib/services/messaging/index.js.map +1 -1
- package/src/lib/services/messaging/recipientKeyResolver.d.ts +47 -0
- package/src/lib/services/messaging/recipientKeyResolver.d.ts.map +1 -0
- package/src/lib/services/messaging/recipientKeyResolver.js +132 -0
- package/src/lib/services/messaging/recipientKeyResolver.js.map +1 -0
- package/src/lib/services/messaging/smimeCertificateManager.d.ts +207 -0
- package/src/lib/services/messaging/smimeCertificateManager.d.ts.map +1 -0
- package/src/lib/services/messaging/smimeCertificateManager.js +696 -0
- package/src/lib/services/messaging/smimeCertificateManager.js.map +1 -0
- package/src/lib/utils/index.d.ts +6 -0
- package/src/lib/utils/index.d.ts.map +1 -1
- package/src/lib/utils/index.js +9 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/sortPair.d.ts +6 -0
- package/src/lib/utils/sortPair.d.ts.map +1 -0
- package/src/lib/utils/sortPair.js +11 -0
- package/src/lib/utils/sortPair.js.map +1 -0
|
@@ -39,6 +39,22 @@ const crossPlatformCrypto_1 = require("../../utils/crossPlatformCrypto");
|
|
|
39
39
|
* @see Requirements 16.1, 16.3, 16.4, 16.5, 16.6, 16.7, 16.8
|
|
40
40
|
*/
|
|
41
41
|
class EmailEncryptionService {
|
|
42
|
+
_gpgKeyManager;
|
|
43
|
+
_smimeCertificateManager;
|
|
44
|
+
async getGpgKeyManager() {
|
|
45
|
+
if (!this._gpgKeyManager) {
|
|
46
|
+
const { GpgKeyManager } = await import('./gpgKeyManager.js');
|
|
47
|
+
this._gpgKeyManager = new GpgKeyManager();
|
|
48
|
+
}
|
|
49
|
+
return this._gpgKeyManager;
|
|
50
|
+
}
|
|
51
|
+
async getSmimeCertificateManager() {
|
|
52
|
+
if (!this._smimeCertificateManager) {
|
|
53
|
+
const { SmimeCertificateManager } = await import('./smimeCertificateManager.js');
|
|
54
|
+
this._smimeCertificateManager = new SmimeCertificateManager();
|
|
55
|
+
}
|
|
56
|
+
return this._smimeCertificateManager;
|
|
57
|
+
}
|
|
42
58
|
// ─── ECIES Content Encryption (Requirement 16.1, 16.3) ─────────────
|
|
43
59
|
/**
|
|
44
60
|
* Encrypts email content using ECIES for a single recipient.
|
|
@@ -404,6 +420,283 @@ class EmailEncryptionService {
|
|
|
404
420
|
async decryptSmime(encryptedContent, metadata, recipientAddress, recipientPrivateKey, signerPrivateKey) {
|
|
405
421
|
return this.decryptAndVerify(encryptedContent, metadata, recipientAddress, recipientPrivateKey, signerPrivateKey);
|
|
406
422
|
}
|
|
423
|
+
// ─── GPG Encryption / Decryption (Requirements 3.1, 3.3, 3.4, 5.1, 5.5, 14.1) ─
|
|
424
|
+
/**
|
|
425
|
+
* Encrypts email content using OpenPGP for multiple recipients.
|
|
426
|
+
*
|
|
427
|
+
* Delegates to GpgKeyManager.encrypt() and wraps the result in
|
|
428
|
+
* IPerRecipientEncryptionResult with scheme set to GPG.
|
|
429
|
+
* Optionally signs the content before encryption if sender key is provided.
|
|
430
|
+
*
|
|
431
|
+
* @param content - Plaintext email content
|
|
432
|
+
* @param recipientPublicKeysArmored - Map of recipient email to ASCII-armored GPG public key
|
|
433
|
+
* @param senderPrivateKeyArmored - Optional sender's GPG private key for signing
|
|
434
|
+
* @param senderPassphrase - Optional passphrase for the sender's private key
|
|
435
|
+
* @returns Encrypted content and GPG metadata
|
|
436
|
+
* @throws {EmailError} PRIVATE_KEY_MISSING if signing requested but key missing
|
|
437
|
+
* @throws {EmailError} GPG_ENCRYPT_FAILED on encryption failure
|
|
438
|
+
*
|
|
439
|
+
* @see Requirements 3.1, 3.3, 3.4, 14.1
|
|
440
|
+
*/
|
|
441
|
+
async encryptGpg(content, recipientPublicKeysArmored, senderPrivateKeyArmored, senderPassphrase) {
|
|
442
|
+
try {
|
|
443
|
+
// If sender key is provided but passphrase is missing, throw
|
|
444
|
+
if (senderPrivateKeyArmored && !senderPassphrase) {
|
|
445
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.PRIVATE_KEY_MISSING, 'Passphrase is required when sender private key is provided for GPG signing');
|
|
446
|
+
}
|
|
447
|
+
// Sign before encrypt if sender key is provided (Requirement 4.2)
|
|
448
|
+
let gpgSignature;
|
|
449
|
+
let gpgSignerKeyId;
|
|
450
|
+
if (senderPrivateKeyArmored && senderPassphrase) {
|
|
451
|
+
const signResult = await (await this.getGpgKeyManager()).sign(content, senderPrivateKeyArmored, senderPassphrase);
|
|
452
|
+
gpgSignature = signResult.signature;
|
|
453
|
+
gpgSignerKeyId = signResult.signerKeyId;
|
|
454
|
+
}
|
|
455
|
+
// Convert Map values to array for GpgKeyManager.encrypt()
|
|
456
|
+
const armoredKeys = Array.from(recipientPublicKeysArmored.values());
|
|
457
|
+
const encryptionResult = await (await this.getGpgKeyManager()).encrypt(content, armoredKeys);
|
|
458
|
+
// The GPG encrypted message is a string; encode as Uint8Array for the result
|
|
459
|
+
const encoder = new TextEncoder();
|
|
460
|
+
const encryptedContent = encoder.encode(encryptionResult.encryptedMessage);
|
|
461
|
+
return {
|
|
462
|
+
encryptedContent,
|
|
463
|
+
encryptionMetadata: {
|
|
464
|
+
scheme: messageEncryptionScheme_1.MessageEncryptionScheme.GPG,
|
|
465
|
+
isSigned: !!gpgSignature,
|
|
466
|
+
gpgEncryptedMessage: encryptionResult.encryptedMessage,
|
|
467
|
+
gpgSignature,
|
|
468
|
+
gpgSignerKeyId,
|
|
469
|
+
},
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
catch (error) {
|
|
473
|
+
if (error instanceof emailError_1.EmailError)
|
|
474
|
+
throw error;
|
|
475
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.GPG_ENCRYPT_FAILED, `GPG encryption failed: ${error instanceof Error ? error.message : String(error)}`, { recipientCount: recipientPublicKeysArmored.size });
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Decrypts an OpenPGP encrypted message using a GPG private key.
|
|
480
|
+
*
|
|
481
|
+
* Delegates to GpgKeyManager.decrypt(). The encryptedContent is expected
|
|
482
|
+
* to be the UTF-8 encoded ASCII-armored OpenPGP message.
|
|
483
|
+
*
|
|
484
|
+
* @param encryptedContent - The encrypted content (UTF-8 encoded armored message)
|
|
485
|
+
* @param privateKeyArmored - ASCII-armored GPG private key
|
|
486
|
+
* @param passphrase - Passphrase to unlock the private key
|
|
487
|
+
* @returns Decrypted plaintext content
|
|
488
|
+
* @throws {EmailError} PRIVATE_KEY_MISSING if private key is not provided
|
|
489
|
+
* @throws {EmailError} GPG_DECRYPT_FAILED on decryption failure
|
|
490
|
+
*
|
|
491
|
+
* @see Requirements 5.1, 5.5
|
|
492
|
+
*/
|
|
493
|
+
async decryptGpg(encryptedContent, privateKeyArmored, passphrase) {
|
|
494
|
+
if (!privateKeyArmored) {
|
|
495
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.PRIVATE_KEY_MISSING, 'GPG private key is required for decryption');
|
|
496
|
+
}
|
|
497
|
+
try {
|
|
498
|
+
// Decode the Uint8Array back to the ASCII-armored string
|
|
499
|
+
const decoder = new TextDecoder();
|
|
500
|
+
const armoredMessage = decoder.decode(encryptedContent);
|
|
501
|
+
return await (await this.getGpgKeyManager()).decrypt(armoredMessage, privateKeyArmored, passphrase);
|
|
502
|
+
}
|
|
503
|
+
catch (error) {
|
|
504
|
+
if (error instanceof emailError_1.EmailError)
|
|
505
|
+
throw error;
|
|
506
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.GPG_DECRYPT_FAILED, `GPG decryption failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
// ─── GPG Signing / Verification (Requirements 4.1, 4.2, 4.4, 5.2, 5.3, 5.4) ─
|
|
510
|
+
/**
|
|
511
|
+
* Signs email content with a GPG private key (detached signature).
|
|
512
|
+
*
|
|
513
|
+
* Delegates to GpgKeyManager.sign() and adapts the result to ISignatureResult.
|
|
514
|
+
*
|
|
515
|
+
* @param content - The email content to sign
|
|
516
|
+
* @param privateKeyArmored - ASCII-armored GPG private key
|
|
517
|
+
* @param passphrase - Passphrase to unlock the private key
|
|
518
|
+
* @returns Signature result with signature bytes and signer public key placeholder
|
|
519
|
+
* @throws {EmailError} PRIVATE_KEY_MISSING if private key is not provided
|
|
520
|
+
* @throws {EmailError} GPG_VERIFY_FAILED on signing failure
|
|
521
|
+
*
|
|
522
|
+
* @see Requirements 4.1, 4.2
|
|
523
|
+
*/
|
|
524
|
+
async signGpg(content, privateKeyArmored, passphrase) {
|
|
525
|
+
if (!privateKeyArmored) {
|
|
526
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.PRIVATE_KEY_MISSING, 'GPG private key is required for signing');
|
|
527
|
+
}
|
|
528
|
+
try {
|
|
529
|
+
const gpgResult = await (await this.getGpgKeyManager()).sign(content, privateKeyArmored, passphrase);
|
|
530
|
+
// Adapt IGpgSignatureResult to ISignatureResult
|
|
531
|
+
const encoder = new TextEncoder();
|
|
532
|
+
return {
|
|
533
|
+
signature: encoder.encode(gpgResult.signature),
|
|
534
|
+
signerPublicKey: encoder.encode(gpgResult.signerKeyId),
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
catch (error) {
|
|
538
|
+
if (error instanceof emailError_1.EmailError)
|
|
539
|
+
throw error;
|
|
540
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.GPG_VERIFY_FAILED, `GPG signing failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Verifies a GPG detached signature against the given content.
|
|
545
|
+
*
|
|
546
|
+
* Delegates to GpgKeyManager.verify() and returns a boolean.
|
|
547
|
+
*
|
|
548
|
+
* @param content - The email content that was signed
|
|
549
|
+
* @param signature - The detached signature bytes (UTF-8 encoded armored signature)
|
|
550
|
+
* @param signerPublicKeyArmored - ASCII-armored GPG public key of the expected signer
|
|
551
|
+
* @returns true if the signature is valid, false otherwise
|
|
552
|
+
*
|
|
553
|
+
* @see Requirements 5.2, 5.3, 5.4
|
|
554
|
+
*/
|
|
555
|
+
async verifyGpg(content, signature, signerPublicKeyArmored) {
|
|
556
|
+
try {
|
|
557
|
+
// Decode the signature Uint8Array back to the ASCII-armored string
|
|
558
|
+
const decoder = new TextDecoder();
|
|
559
|
+
const armoredSignature = decoder.decode(signature);
|
|
560
|
+
const result = await (await this.getGpgKeyManager()).verify(content, armoredSignature, signerPublicKeyArmored);
|
|
561
|
+
return result.valid;
|
|
562
|
+
}
|
|
563
|
+
catch {
|
|
564
|
+
return false;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
// ─── Real S/MIME CMS Encryption / Decryption (Requirements 7.1, 7.3, 7.4, 9.1, 9.5) ─
|
|
568
|
+
/**
|
|
569
|
+
* Encrypts email content using real CMS/PKCS#7 enveloped-data for multiple recipients.
|
|
570
|
+
*
|
|
571
|
+
* Delegates to SmimeCertificateManager.encrypt() for RFC 5751 CMS encryption.
|
|
572
|
+
* Optionally signs the content before encryption if sender cert+key are provided.
|
|
573
|
+
*
|
|
574
|
+
* @param content - Plaintext email content
|
|
575
|
+
* @param recipientCertificatesPem - Map of recipient email to PEM-encoded X.509 certificate
|
|
576
|
+
* @param senderCertPem - Optional sender's S/MIME certificate PEM for signing
|
|
577
|
+
* @param senderPrivateKeyPem - Optional sender's S/MIME private key PEM for signing
|
|
578
|
+
* @returns Encrypted content and S/MIME metadata
|
|
579
|
+
* @throws {EmailError} PRIVATE_KEY_MISSING if signing requested but key missing
|
|
580
|
+
* @throws {EmailError} SMIME_ENCRYPT_FAILED on encryption failure
|
|
581
|
+
*
|
|
582
|
+
* @see Requirements 7.1, 7.3, 7.4, 8.2
|
|
583
|
+
*/
|
|
584
|
+
async encryptSmimeReal(content, recipientCertificatesPem, senderCertPem, senderPrivateKeyPem) {
|
|
585
|
+
try {
|
|
586
|
+
// If sender cert is provided but private key is missing, throw
|
|
587
|
+
if (senderCertPem && !senderPrivateKeyPem) {
|
|
588
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.PRIVATE_KEY_MISSING, 'Private key is required when sender certificate is provided for S/MIME signing');
|
|
589
|
+
}
|
|
590
|
+
// Sign before encrypt if sender cert+key are provided (Requirement 8.2)
|
|
591
|
+
let cmsSignature;
|
|
592
|
+
let smimeSignerSubject;
|
|
593
|
+
if (senderCertPem && senderPrivateKeyPem) {
|
|
594
|
+
const signResult = await (await this.getSmimeCertificateManager()).sign(content, senderCertPem, senderPrivateKeyPem);
|
|
595
|
+
cmsSignature = signResult.signature;
|
|
596
|
+
smimeSignerSubject = signResult.signerCertSubject;
|
|
597
|
+
}
|
|
598
|
+
// Convert Map values to array for SmimeCertificateManager.encrypt()
|
|
599
|
+
const certPems = Array.from(recipientCertificatesPem.values());
|
|
600
|
+
const encryptionResult = await (await this.getSmimeCertificateManager()).encrypt(content, certPems);
|
|
601
|
+
return {
|
|
602
|
+
encryptedContent: encryptionResult.encryptedContent,
|
|
603
|
+
encryptionMetadata: {
|
|
604
|
+
scheme: messageEncryptionScheme_1.MessageEncryptionScheme.S_MIME,
|
|
605
|
+
isSigned: !!cmsSignature,
|
|
606
|
+
cmsEncryptedContent: encryptionResult.encryptedContent,
|
|
607
|
+
cmsSignature,
|
|
608
|
+
smimeSignerSubject,
|
|
609
|
+
},
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
catch (error) {
|
|
613
|
+
if (error instanceof emailError_1.EmailError)
|
|
614
|
+
throw error;
|
|
615
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.SMIME_ENCRYPT_FAILED, `S/MIME CMS encryption failed: ${error instanceof Error ? error.message : String(error)}`, { recipientCount: recipientCertificatesPem.size });
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Decrypts CMS/PKCS#7 enveloped-data content using a recipient's certificate and private key.
|
|
620
|
+
*
|
|
621
|
+
* Delegates to SmimeCertificateManager.decrypt() for RFC 5751 CMS decryption.
|
|
622
|
+
*
|
|
623
|
+
* @param encryptedContent - DER-encoded CMS/PKCS#7 enveloped-data
|
|
624
|
+
* @param certificatePem - PEM-encoded X.509 certificate of the recipient
|
|
625
|
+
* @param privateKeyPem - PEM-encoded PKCS#8 private key of the recipient
|
|
626
|
+
* @returns Decrypted plaintext content
|
|
627
|
+
* @throws {EmailError} PRIVATE_KEY_MISSING if private key is not provided
|
|
628
|
+
* @throws {EmailError} SMIME_DECRYPT_FAILED on decryption failure
|
|
629
|
+
*
|
|
630
|
+
* @see Requirements 9.1, 9.5
|
|
631
|
+
*/
|
|
632
|
+
async decryptSmimeReal(encryptedContent, certificatePem, privateKeyPem) {
|
|
633
|
+
if (!privateKeyPem) {
|
|
634
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.PRIVATE_KEY_MISSING, 'S/MIME private key is required for decryption');
|
|
635
|
+
}
|
|
636
|
+
try {
|
|
637
|
+
return await (await this.getSmimeCertificateManager()).decrypt(encryptedContent, certificatePem, privateKeyPem);
|
|
638
|
+
}
|
|
639
|
+
catch (error) {
|
|
640
|
+
if (error instanceof emailError_1.EmailError)
|
|
641
|
+
throw error;
|
|
642
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.SMIME_DECRYPT_FAILED, `S/MIME CMS decryption failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
// ─── S/MIME CMS Signing / Verification (Requirements 8.1, 8.2, 8.4, 9.2, 9.3, 9.4) ─
|
|
646
|
+
/**
|
|
647
|
+
* Signs email content with an S/MIME certificate and private key (CMS detached signature).
|
|
648
|
+
*
|
|
649
|
+
* Delegates to SmimeCertificateManager.sign() and adapts the result to ISignatureResult.
|
|
650
|
+
*
|
|
651
|
+
* @param content - The email content to sign
|
|
652
|
+
* @param certificatePem - PEM-encoded X.509 certificate of the signer
|
|
653
|
+
* @param privateKeyPem - PEM-encoded PKCS#8 private key of the signer
|
|
654
|
+
* @returns Signature result with CMS signature bytes and signer public key (encoded subject)
|
|
655
|
+
* @throws {EmailError} PRIVATE_KEY_MISSING if private key is not provided
|
|
656
|
+
* @throws {EmailError} SMIME_VERIFY_FAILED on signing failure
|
|
657
|
+
*
|
|
658
|
+
* @see Requirements 8.1, 8.4
|
|
659
|
+
*/
|
|
660
|
+
async signSmime(content, certificatePem, privateKeyPem) {
|
|
661
|
+
if (!privateKeyPem) {
|
|
662
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.PRIVATE_KEY_MISSING, 'S/MIME private key is required for signing');
|
|
663
|
+
}
|
|
664
|
+
try {
|
|
665
|
+
const smimeResult = await (await this.getSmimeCertificateManager()).sign(content, certificatePem, privateKeyPem);
|
|
666
|
+
// Adapt ISmimeSignatureResult to ISignatureResult
|
|
667
|
+
const encoder = new TextEncoder();
|
|
668
|
+
return {
|
|
669
|
+
signature: smimeResult.signature,
|
|
670
|
+
signerPublicKey: encoder.encode(smimeResult.signerCertSubject),
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
catch (error) {
|
|
674
|
+
if (error instanceof emailError_1.EmailError)
|
|
675
|
+
throw error;
|
|
676
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.SMIME_VERIFY_FAILED, `S/MIME CMS signing failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Verifies an S/MIME CMS detached signature against the given content.
|
|
681
|
+
*
|
|
682
|
+
* Delegates to SmimeCertificateManager.verify() and returns a boolean.
|
|
683
|
+
*
|
|
684
|
+
* @param content - The email content that was signed
|
|
685
|
+
* @param signature - The DER-encoded CMS detached signature
|
|
686
|
+
* @param signerCertificatePem - PEM-encoded X.509 certificate of the expected signer
|
|
687
|
+
* @returns true if the signature is valid, false otherwise
|
|
688
|
+
*
|
|
689
|
+
* @see Requirements 9.2, 9.3, 9.4
|
|
690
|
+
*/
|
|
691
|
+
async verifySmime(content, signature, signerCertificatePem) {
|
|
692
|
+
try {
|
|
693
|
+
const result = await (await this.getSmimeCertificateManager()).verify(content, signature, signerCertificatePem);
|
|
694
|
+
return result.valid;
|
|
695
|
+
}
|
|
696
|
+
catch {
|
|
697
|
+
return false;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
407
700
|
}
|
|
408
701
|
exports.EmailEncryptionService = EmailEncryptionService;
|
|
409
702
|
//# sourceMappingURL=emailEncryptionService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailEncryptionService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailEncryptionService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emailEncryptionService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailEncryptionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -184,6 +184,52 @@ export interface IEmailInput {
|
|
|
184
184
|
* @see Requirement 16.5
|
|
185
185
|
*/
|
|
186
186
|
senderPublicKey?: Uint8Array;
|
|
187
|
+
/**
|
|
188
|
+
* GPG public keys for recipients (armored).
|
|
189
|
+
* Maps recipient address to their ASCII-armored GPG public key.
|
|
190
|
+
* Required when encryptionScheme is GPG.
|
|
191
|
+
*
|
|
192
|
+
* @see Requirement 3.3
|
|
193
|
+
*/
|
|
194
|
+
recipientGpgKeys?: Map<string, string>;
|
|
195
|
+
/**
|
|
196
|
+
* S/MIME certificates for recipients (PEM).
|
|
197
|
+
* Maps recipient address to their PEM-encoded S/MIME certificate.
|
|
198
|
+
* Required when encryptionScheme is S_MIME.
|
|
199
|
+
*
|
|
200
|
+
* @see Requirement 7.3
|
|
201
|
+
*/
|
|
202
|
+
recipientSmimeCerts?: Map<string, string>;
|
|
203
|
+
/**
|
|
204
|
+
* Sender's GPG private key (armored) for signing.
|
|
205
|
+
*
|
|
206
|
+
* @see Requirement 4.4
|
|
207
|
+
*/
|
|
208
|
+
senderGpgPrivateKey?: string;
|
|
209
|
+
/**
|
|
210
|
+
* Passphrase for the sender's GPG private key.
|
|
211
|
+
*
|
|
212
|
+
* @see Requirement 4.4
|
|
213
|
+
*/
|
|
214
|
+
senderGpgPassphrase?: string;
|
|
215
|
+
/**
|
|
216
|
+
* Sender's S/MIME certificate (PEM) for signing.
|
|
217
|
+
*
|
|
218
|
+
* @see Requirement 8.4
|
|
219
|
+
*/
|
|
220
|
+
senderSmimeCert?: string;
|
|
221
|
+
/**
|
|
222
|
+
* Sender's S/MIME private key (PEM) for signing.
|
|
223
|
+
*
|
|
224
|
+
* @see Requirement 8.4
|
|
225
|
+
*/
|
|
226
|
+
senderSmimePrivateKey?: string;
|
|
227
|
+
/**
|
|
228
|
+
* Whether to sign the message (GPG or S/MIME depending on scheme).
|
|
229
|
+
*
|
|
230
|
+
* @see Requirement 4.4, 8.4
|
|
231
|
+
*/
|
|
232
|
+
signMessage?: boolean;
|
|
187
233
|
}
|
|
188
234
|
/**
|
|
189
235
|
* Input for an attachment to be included in an email.
|
|
@@ -696,6 +742,24 @@ export declare class EmailMessageService {
|
|
|
696
742
|
* @see Requirement 3.3 - Ensure global uniqueness with timestamp, random, and node ID
|
|
697
743
|
*/
|
|
698
744
|
generateMessageId(): string;
|
|
745
|
+
/**
|
|
746
|
+
* Wraps message content and a detached signature into a multipart/signed
|
|
747
|
+
* MIME structure per RFC 3156 (GPG) or RFC 5751 (S/MIME).
|
|
748
|
+
*
|
|
749
|
+
* The resulting IMimePart has:
|
|
750
|
+
* - Content-Type: multipart/signed with protocol, micalg, and boundary params
|
|
751
|
+
* - Two child parts: the original body part and the signature part
|
|
752
|
+
*
|
|
753
|
+
* @param bodyPart - The original message body MIME part
|
|
754
|
+
* @param signature - The detached signature (ASCII-armored string for GPG, Uint8Array for S/MIME)
|
|
755
|
+
* @param scheme - GPG or S_MIME to determine protocol and micalg values
|
|
756
|
+
* @returns An IMimePart representing the multipart/signed structure
|
|
757
|
+
*
|
|
758
|
+
* @see RFC 3156 - MIME Security with OpenPGP (GPG)
|
|
759
|
+
* @see RFC 5751 - S/MIME 3.2 Message Specification
|
|
760
|
+
* @see Requirements 4.4, 8.4
|
|
761
|
+
*/
|
|
762
|
+
private assembleMultipartSigned;
|
|
699
763
|
/**
|
|
700
764
|
* Returns the current service configuration.
|
|
701
765
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailMessageService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailMessageService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAI/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAGlF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,0CAA0C,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"emailMessageService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailMessageService.ts"],"names":[],"mappings":"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"}
|
|
@@ -269,21 +269,91 @@ class EmailMessageService {
|
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
else if (email.encryptionScheme === messageEncryptionScheme_1.MessageEncryptionScheme.S_MIME) {
|
|
272
|
-
// S/MIME encryption
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
272
|
+
// Real S/MIME CMS encryption (RFC 5751)
|
|
273
|
+
// Sign before encrypt per Requirement 8.2
|
|
274
|
+
if (email.signMessage &&
|
|
275
|
+
email.senderSmimeCert &&
|
|
276
|
+
email.senderSmimePrivateKey) {
|
|
277
|
+
const signResult = await encryptionService.signSmime(bodyContent, email.senderSmimeCert, email.senderSmimePrivateKey);
|
|
278
|
+
// Build a body MIME part for the multipart/signed assembly
|
|
279
|
+
const bodyMimePart = {
|
|
280
|
+
contentType: contentType,
|
|
281
|
+
body: bodyContent,
|
|
282
|
+
size: bodyContent.length,
|
|
283
|
+
};
|
|
284
|
+
const signedPart = this.assembleMultipartSigned(bodyMimePart, signResult.signature, messageEncryptionScheme_1.MessageEncryptionScheme.S_MIME);
|
|
285
|
+
metadata.parts = [signedPart];
|
|
286
|
+
metadata.isSigned = true;
|
|
287
|
+
metadata.contentSignature = signResult.signature;
|
|
288
|
+
metadata.signerPublicKey = signResult.signerPublicKey;
|
|
276
289
|
}
|
|
277
|
-
if
|
|
278
|
-
|
|
290
|
+
// Encrypt if recipient S/MIME certs are provided
|
|
291
|
+
if (email.recipientSmimeCerts && email.recipientSmimeCerts.size > 0) {
|
|
292
|
+
const result = await encryptionService.encryptSmimeReal(bodyContent, email.recipientSmimeCerts, email.senderSmimeCert, email.senderSmimePrivateKey);
|
|
293
|
+
metadata.encryptedKeys = result.encryptionMetadata.encryptedKeys;
|
|
294
|
+
metadata.encryptionIv = result.encryptionMetadata.iv;
|
|
295
|
+
metadata.encryptionAuthTag = result.encryptionMetadata.authTag;
|
|
296
|
+
if (result.encryptionMetadata.isSigned) {
|
|
297
|
+
metadata.isSigned = result.encryptionMetadata.isSigned;
|
|
298
|
+
metadata.contentSignature = result.encryptionMetadata.signature;
|
|
299
|
+
metadata.signerPublicKey =
|
|
300
|
+
result.encryptionMetadata.signerPublicKey;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
else if (!email.signMessage) {
|
|
304
|
+
// Fallback to legacy S/MIME stub if no real certs provided
|
|
305
|
+
if (!email.recipientPublicKeys ||
|
|
306
|
+
email.recipientPublicKeys.size === 0) {
|
|
307
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, 'Recipient public keys or S/MIME certificates are required for S/MIME encryption');
|
|
308
|
+
}
|
|
309
|
+
if (!email.senderPrivateKey || !email.senderPublicKey) {
|
|
310
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, 'Sender private and public keys are required for S/MIME encryption');
|
|
311
|
+
}
|
|
312
|
+
const result = await encryptionService.encryptSmime(bodyContent, email.recipientPublicKeys, email.senderPrivateKey, email.senderPublicKey);
|
|
313
|
+
metadata.encryptedKeys = result.encryptionMetadata.encryptedKeys;
|
|
314
|
+
metadata.encryptionIv = result.encryptionMetadata.iv;
|
|
315
|
+
metadata.encryptionAuthTag = result.encryptionMetadata.authTag;
|
|
316
|
+
metadata.isSigned = result.encryptionMetadata.isSigned;
|
|
317
|
+
metadata.contentSignature = result.encryptionMetadata.signature;
|
|
318
|
+
metadata.signerPublicKey =
|
|
319
|
+
result.encryptionMetadata.signerPublicKey;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
else if (email.encryptionScheme === messageEncryptionScheme_1.MessageEncryptionScheme.GPG) {
|
|
323
|
+
// GPG encryption (RFC 4880) with optional signing (RFC 3156)
|
|
324
|
+
// Sign before encrypt per Requirement 4.2
|
|
325
|
+
if (email.signMessage &&
|
|
326
|
+
email.senderGpgPrivateKey &&
|
|
327
|
+
email.senderGpgPassphrase) {
|
|
328
|
+
const signResult = await encryptionService.signGpg(bodyContent, email.senderGpgPrivateKey, email.senderGpgPassphrase);
|
|
329
|
+
// Build a body MIME part for the multipart/signed assembly
|
|
330
|
+
const bodyMimePart = {
|
|
331
|
+
contentType: contentType,
|
|
332
|
+
body: bodyContent,
|
|
333
|
+
size: bodyContent.length,
|
|
334
|
+
};
|
|
335
|
+
const signedPart = this.assembleMultipartSigned(bodyMimePart, signResult.signature, messageEncryptionScheme_1.MessageEncryptionScheme.GPG);
|
|
336
|
+
metadata.parts = [signedPart];
|
|
337
|
+
metadata.isSigned = true;
|
|
338
|
+
metadata.contentSignature = signResult.signature;
|
|
339
|
+
metadata.signerPublicKey = signResult.signerPublicKey;
|
|
340
|
+
}
|
|
341
|
+
// Encrypt if recipient GPG keys are provided
|
|
342
|
+
if (email.recipientGpgKeys && email.recipientGpgKeys.size > 0) {
|
|
343
|
+
const result = await encryptionService.encryptGpg(bodyContent, email.recipientGpgKeys, email.senderGpgPrivateKey, email.senderGpgPassphrase);
|
|
344
|
+
metadata.encryptedKeys = result.encryptionMetadata.encryptedKeys;
|
|
345
|
+
metadata.encryptionIv = result.encryptionMetadata.iv;
|
|
346
|
+
metadata.encryptionAuthTag = result.encryptionMetadata.authTag;
|
|
347
|
+
if (result.encryptionMetadata.isSigned) {
|
|
348
|
+
metadata.isSigned = result.encryptionMetadata.isSigned;
|
|
349
|
+
metadata.contentSignature = result.encryptionMetadata.signature;
|
|
350
|
+
metadata.signerPublicKey =
|
|
351
|
+
result.encryptionMetadata.signerPublicKey;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, 'Recipient GPG public keys are required for GPG encryption');
|
|
279
356
|
}
|
|
280
|
-
const result = await encryptionService.encryptSmime(bodyContent, email.recipientPublicKeys, email.senderPrivateKey, email.senderPublicKey);
|
|
281
|
-
metadata.encryptedKeys = result.encryptionMetadata.encryptedKeys;
|
|
282
|
-
metadata.encryptionIv = result.encryptionMetadata.iv;
|
|
283
|
-
metadata.encryptionAuthTag = result.encryptionMetadata.authTag;
|
|
284
|
-
metadata.isSigned = result.encryptionMetadata.isSigned;
|
|
285
|
-
metadata.contentSignature = result.encryptionMetadata.signature;
|
|
286
|
-
metadata.signerPublicKey = result.encryptionMetadata.signerPublicKey;
|
|
287
357
|
}
|
|
288
358
|
}
|
|
289
359
|
catch (err) {
|
|
@@ -1100,6 +1170,65 @@ class EmailMessageService {
|
|
|
1100
1170
|
const idRight = this.config.nodeId;
|
|
1101
1171
|
return `<${idLeft}@${idRight}>`;
|
|
1102
1172
|
}
|
|
1173
|
+
// ─── Multipart/Signed Assembly (RFC 3156, RFC 5751) ─────────────────
|
|
1174
|
+
/**
|
|
1175
|
+
* Wraps message content and a detached signature into a multipart/signed
|
|
1176
|
+
* MIME structure per RFC 3156 (GPG) or RFC 5751 (S/MIME).
|
|
1177
|
+
*
|
|
1178
|
+
* The resulting IMimePart has:
|
|
1179
|
+
* - Content-Type: multipart/signed with protocol, micalg, and boundary params
|
|
1180
|
+
* - Two child parts: the original body part and the signature part
|
|
1181
|
+
*
|
|
1182
|
+
* @param bodyPart - The original message body MIME part
|
|
1183
|
+
* @param signature - The detached signature (ASCII-armored string for GPG, Uint8Array for S/MIME)
|
|
1184
|
+
* @param scheme - GPG or S_MIME to determine protocol and micalg values
|
|
1185
|
+
* @returns An IMimePart representing the multipart/signed structure
|
|
1186
|
+
*
|
|
1187
|
+
* @see RFC 3156 - MIME Security with OpenPGP (GPG)
|
|
1188
|
+
* @see RFC 5751 - S/MIME 3.2 Message Specification
|
|
1189
|
+
* @see Requirements 4.4, 8.4
|
|
1190
|
+
*/
|
|
1191
|
+
assembleMultipartSigned(bodyPart, signature, scheme) {
|
|
1192
|
+
// Generate a unique boundary string
|
|
1193
|
+
const randomBytes = (0, platformCrypto_1.getRandomBytes)(16);
|
|
1194
|
+
const boundaryId = Array.from(randomBytes)
|
|
1195
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
1196
|
+
.join('');
|
|
1197
|
+
const boundary = `----=_SignatureBoundary_${boundaryId}`;
|
|
1198
|
+
// Determine protocol and micalg based on scheme
|
|
1199
|
+
const isGpg = scheme === messageEncryptionScheme_1.MessageEncryptionScheme.GPG;
|
|
1200
|
+
const protocol = isGpg
|
|
1201
|
+
? 'application/pgp-signature'
|
|
1202
|
+
: 'application/pkcs7-signature';
|
|
1203
|
+
const micalg = isGpg ? 'pgp-sha256' : 'sha-256';
|
|
1204
|
+
// Build the signature part
|
|
1205
|
+
const signatureBytes = typeof signature === 'string'
|
|
1206
|
+
? new TextEncoder().encode(signature)
|
|
1207
|
+
: signature;
|
|
1208
|
+
const signaturePart = {
|
|
1209
|
+
contentType: (0, mimePart_1.createContentType)('application', isGpg ? 'pgp-signature' : 'pkcs7-signature', new Map([['name', isGpg ? 'signature.asc' : 'smime.p7s']])),
|
|
1210
|
+
contentDisposition: {
|
|
1211
|
+
type: 'attachment',
|
|
1212
|
+
filename: isGpg ? 'signature.asc' : 'smime.p7s',
|
|
1213
|
+
},
|
|
1214
|
+
contentTransferEncoding: isGpg
|
|
1215
|
+
? mimePart_1.ContentTransferEncoding.SevenBit
|
|
1216
|
+
: mimePart_1.ContentTransferEncoding.Base64,
|
|
1217
|
+
body: signatureBytes,
|
|
1218
|
+
size: signatureBytes.length,
|
|
1219
|
+
};
|
|
1220
|
+
// Build the multipart/signed container
|
|
1221
|
+
const multipartSigned = {
|
|
1222
|
+
contentType: (0, mimePart_1.createContentType)('multipart', 'signed', new Map([
|
|
1223
|
+
['protocol', protocol],
|
|
1224
|
+
['micalg', micalg],
|
|
1225
|
+
['boundary', boundary],
|
|
1226
|
+
])),
|
|
1227
|
+
parts: [bodyPart, signaturePart],
|
|
1228
|
+
size: bodyPart.size + signaturePart.size,
|
|
1229
|
+
};
|
|
1230
|
+
return multipartSigned;
|
|
1231
|
+
}
|
|
1103
1232
|
// ─── Configuration Access ───────────────────────────────────────────
|
|
1104
1233
|
/**
|
|
1105
1234
|
* Returns the current service configuration.
|