ts-mls 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +196 -0
- package/dist/src/IncomingMessageAction.d.ts +10 -0
- package/dist/src/IncomingMessageAction.js +2 -0
- package/dist/src/IncomingMessageAction.js.map +1 -0
- package/dist/src/authenticatedContent.d.ts +32 -0
- package/dist/src/authenticatedContent.js +26 -0
- package/dist/src/authenticatedContent.js.map +1 -0
- package/dist/src/authenticationService.d.ts +7 -0
- package/dist/src/authenticationService.js +6 -0
- package/dist/src/authenticationService.js.map +1 -0
- package/dist/src/capabilities.d.ts +14 -0
- package/dist/src/capabilities.js +28 -0
- package/dist/src/capabilities.js.map +1 -0
- package/dist/src/clientConfig.d.ts +21 -0
- package/dist/src/clientConfig.js +13 -0
- package/dist/src/clientConfig.js.map +1 -0
- package/dist/src/clientState.d.ts +122 -0
- package/dist/src/clientState.js +547 -0
- package/dist/src/clientState.js.map +1 -0
- package/dist/src/codec/number.d.ts +10 -0
- package/dist/src/codec/number.js +56 -0
- package/dist/src/codec/number.js.map +1 -0
- package/dist/src/codec/optional.d.ts +4 -0
- package/dist/src/codec/optional.js +20 -0
- package/dist/src/codec/optional.js.map +1 -0
- package/dist/src/codec/tlsDecoder.d.ts +14 -0
- package/dist/src/codec/tlsDecoder.js +78 -0
- package/dist/src/codec/tlsDecoder.js.map +1 -0
- package/dist/src/codec/tlsEncoder.d.ts +9 -0
- package/dist/src/codec/tlsEncoder.js +23 -0
- package/dist/src/codec/tlsEncoder.js.map +1 -0
- package/dist/src/codec/variableLength.d.ts +11 -0
- package/dist/src/codec/variableLength.js +95 -0
- package/dist/src/codec/variableLength.js.map +1 -0
- package/dist/src/commit.d.ts +10 -0
- package/dist/src/commit.js +9 -0
- package/dist/src/commit.js.map +1 -0
- package/dist/src/contentType.d.ts +12 -0
- package/dist/src/contentType.js +12 -0
- package/dist/src/contentType.js.map +1 -0
- package/dist/src/createCommit.d.ts +32 -0
- package/dist/src/createCommit.js +250 -0
- package/dist/src/createCommit.js.map +1 -0
- package/dist/src/createMessage.d.ts +24 -0
- package/dist/src/createMessage.js +32 -0
- package/dist/src/createMessage.js.map +1 -0
- package/dist/src/credential.d.ts +21 -0
- package/dist/src/credential.js +31 -0
- package/dist/src/credential.js.map +1 -0
- package/dist/src/credentialType.d.ts +11 -0
- package/dist/src/credentialType.js +11 -0
- package/dist/src/credentialType.js.map +1 -0
- package/dist/src/crypto/aead.d.ts +8 -0
- package/dist/src/crypto/aead.js +69 -0
- package/dist/src/crypto/aead.js.map +1 -0
- package/dist/src/crypto/ciphersuite.d.ts +51 -0
- package/dist/src/crypto/ciphersuite.js +245 -0
- package/dist/src/crypto/ciphersuite.js.map +1 -0
- package/dist/src/crypto/hash.d.ts +8 -0
- package/dist/src/crypto/hash.js +32 -0
- package/dist/src/crypto/hash.js.map +1 -0
- package/dist/src/crypto/hpke.d.ts +51 -0
- package/dist/src/crypto/hpke.js +109 -0
- package/dist/src/crypto/hpke.js.map +1 -0
- package/dist/src/crypto/kdf.d.ts +12 -0
- package/dist/src/crypto/kdf.js +42 -0
- package/dist/src/crypto/kdf.js.map +1 -0
- package/dist/src/crypto/kem.d.ts +3 -0
- package/dist/src/crypto/kem.js +49 -0
- package/dist/src/crypto/kem.js.map +1 -0
- package/dist/src/crypto/rng.d.ts +4 -0
- package/dist/src/crypto/rng.js +6 -0
- package/dist/src/crypto/rng.js.map +1 -0
- package/dist/src/crypto/signature.d.ts +12 -0
- package/dist/src/crypto/signature.js +127 -0
- package/dist/src/crypto/signature.js.map +1 -0
- package/dist/src/customCredential.d.ts +2 -0
- package/dist/src/customCredential.js +11 -0
- package/dist/src/customCredential.js.map +1 -0
- package/dist/src/defaultCapabilities.d.ts +2 -0
- package/dist/src/defaultCapabilities.js +12 -0
- package/dist/src/defaultCapabilities.js.map +1 -0
- package/dist/src/defaultExtensionType.d.ts +13 -0
- package/dist/src/defaultExtensionType.js +14 -0
- package/dist/src/defaultExtensionType.js.map +1 -0
- package/dist/src/defaultProposalType.d.ts +15 -0
- package/dist/src/defaultProposalType.js +16 -0
- package/dist/src/defaultProposalType.js.map +1 -0
- package/dist/src/extension.d.ts +18 -0
- package/dist/src/extension.js +30 -0
- package/dist/src/extension.js.map +1 -0
- package/dist/src/externalProposal.d.ts +7 -0
- package/dist/src/externalProposal.js +40 -0
- package/dist/src/externalProposal.js.map +1 -0
- package/dist/src/externalSender.d.ts +9 -0
- package/dist/src/externalSender.js +7 -0
- package/dist/src/externalSender.js.map +1 -0
- package/dist/src/framedContent.d.ts +113 -0
- package/dist/src/framedContent.js +131 -0
- package/dist/src/framedContent.js.map +1 -0
- package/dist/src/grease.d.ts +16 -0
- package/dist/src/grease.js +29 -0
- package/dist/src/grease.js.map +1 -0
- package/dist/src/groupContext.d.ts +19 -0
- package/dist/src/groupContext.js +44 -0
- package/dist/src/groupContext.js.map +1 -0
- package/dist/src/groupInfo.d.ts +26 -0
- package/dist/src/groupInfo.js +47 -0
- package/dist/src/groupInfo.js.map +1 -0
- package/dist/src/groupSecrets.d.ts +10 -0
- package/dist/src/groupSecrets.js +8 -0
- package/dist/src/groupSecrets.js.map +1 -0
- package/dist/src/hpkeCiphertext.d.ts +8 -0
- package/dist/src/hpkeCiphertext.js +6 -0
- package/dist/src/hpkeCiphertext.js.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.js +24 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/keyPackage.d.ts +38 -0
- package/dist/src/keyPackage.js +72 -0
- package/dist/src/keyPackage.js.map +1 -0
- package/dist/src/keyPackageEqualityConfig.d.ts +7 -0
- package/dist/src/keyPackageEqualityConfig.js +10 -0
- package/dist/src/keyPackageEqualityConfig.js.map +1 -0
- package/dist/src/keyRetentionConfig.d.ts +6 -0
- package/dist/src/keyRetentionConfig.js +6 -0
- package/dist/src/keyRetentionConfig.js.map +1 -0
- package/dist/src/keySchedule.d.ts +24 -0
- package/dist/src/keySchedule.js +43 -0
- package/dist/src/keySchedule.js.map +1 -0
- package/dist/src/leafNode.d.ts +78 -0
- package/dist/src/leafNode.js +87 -0
- package/dist/src/leafNode.js.map +1 -0
- package/dist/src/leafNodeSource.d.ts +12 -0
- package/dist/src/leafNodeSource.js +12 -0
- package/dist/src/leafNodeSource.js.map +1 -0
- package/dist/src/lifetime.d.ts +9 -0
- package/dist/src/lifetime.js +13 -0
- package/dist/src/lifetime.js.map +1 -0
- package/dist/src/lifetimeConfig.d.ts +5 -0
- package/dist/src/lifetimeConfig.js +5 -0
- package/dist/src/lifetimeConfig.js.map +1 -0
- package/dist/src/message.d.ts +42 -0
- package/dist/src/message.js +45 -0
- package/dist/src/message.js.map +1 -0
- package/dist/src/messageProtection.d.ts +36 -0
- package/dist/src/messageProtection.js +128 -0
- package/dist/src/messageProtection.js.map +1 -0
- package/dist/src/messageProtectionPublic.d.ts +17 -0
- package/dist/src/messageProtectionPublic.js +99 -0
- package/dist/src/messageProtectionPublic.js.map +1 -0
- package/dist/src/mlsError.d.ts +24 -0
- package/dist/src/mlsError.js +49 -0
- package/dist/src/mlsError.js.map +1 -0
- package/dist/src/nodeType.d.ts +11 -0
- package/dist/src/nodeType.js +11 -0
- package/dist/src/nodeType.js.map +1 -0
- package/dist/src/paddingConfig.d.ts +9 -0
- package/dist/src/paddingConfig.js +8 -0
- package/dist/src/paddingConfig.js.map +1 -0
- package/dist/src/parentHash.d.ts +16 -0
- package/dist/src/parentHash.js +103 -0
- package/dist/src/parentHash.js.map +1 -0
- package/dist/src/parentNode.d.ts +9 -0
- package/dist/src/parentNode.js +11 -0
- package/dist/src/parentNode.js.map +1 -0
- package/dist/src/pathSecrets.d.ts +10 -0
- package/dist/src/pathSecrets.js +31 -0
- package/dist/src/pathSecrets.js.map +1 -0
- package/dist/src/presharedkey.d.ts +51 -0
- package/dist/src/presharedkey.js +59 -0
- package/dist/src/presharedkey.js.map +1 -0
- package/dist/src/privateKeyPath.d.ts +12 -0
- package/dist/src/privateKeyPath.js +21 -0
- package/dist/src/privateKeyPath.js.map +1 -0
- package/dist/src/privateMessage.d.ts +41 -0
- package/dist/src/privateMessage.js +114 -0
- package/dist/src/privateMessage.js.map +1 -0
- package/dist/src/processMessages.d.ts +26 -0
- package/dist/src/processMessages.js +196 -0
- package/dist/src/processMessages.js.map +1 -0
- package/dist/src/proposal.d.ts +97 -0
- package/dist/src/proposal.js +91 -0
- package/dist/src/proposal.js.map +1 -0
- package/dist/src/proposalOrRefType.d.ts +25 -0
- package/dist/src/proposalOrRefType.js +31 -0
- package/dist/src/proposalOrRefType.js.map +1 -0
- package/dist/src/protocolVersion.d.ts +9 -0
- package/dist/src/protocolVersion.js +10 -0
- package/dist/src/protocolVersion.js.map +1 -0
- package/dist/src/pskIndex.d.ts +7 -0
- package/dist/src/pskIndex.js +18 -0
- package/dist/src/pskIndex.js.map +1 -0
- package/dist/src/publicMessage.d.ts +29 -0
- package/dist/src/publicMessage.js +71 -0
- package/dist/src/publicMessage.js.map +1 -0
- package/dist/src/ratchetTree.d.ts +46 -0
- package/dist/src/ratchetTree.js +254 -0
- package/dist/src/ratchetTree.js.map +1 -0
- package/dist/src/requiredCapabilities.d.ts +10 -0
- package/dist/src/requiredCapabilities.js +8 -0
- package/dist/src/requiredCapabilities.js.map +1 -0
- package/dist/src/resumption.d.ts +18 -0
- package/dist/src/resumption.js +74 -0
- package/dist/src/resumption.js.map +1 -0
- package/dist/src/secretTree.d.ts +29 -0
- package/dist/src/secretTree.js +137 -0
- package/dist/src/secretTree.js.map +1 -0
- package/dist/src/sender.d.ts +56 -0
- package/dist/src/sender.js +81 -0
- package/dist/src/sender.js.map +1 -0
- package/dist/src/transcriptHash.d.ts +14 -0
- package/dist/src/transcriptHash.js +23 -0
- package/dist/src/transcriptHash.js.map +1 -0
- package/dist/src/treeHash.d.ts +27 -0
- package/dist/src/treeHash.js +70 -0
- package/dist/src/treeHash.js.map +1 -0
- package/dist/src/treemath.d.ts +14 -0
- package/dist/src/treemath.js +87 -0
- package/dist/src/treemath.js.map +1 -0
- package/dist/src/unappliedProposals.d.ts +7 -0
- package/dist/src/unappliedProposals.js +9 -0
- package/dist/src/unappliedProposals.js.map +1 -0
- package/dist/src/updatePath.d.ts +34 -0
- package/dist/src/updatePath.js +163 -0
- package/dist/src/updatePath.js.map +1 -0
- package/dist/src/util/addToMap.d.ts +1 -0
- package/dist/src/util/addToMap.js +6 -0
- package/dist/src/util/addToMap.js.map +1 -0
- package/dist/src/util/array.d.ts +2 -0
- package/dist/src/util/array.js +9 -0
- package/dist/src/util/array.js.map +1 -0
- package/dist/src/util/byteArray.d.ts +3 -0
- package/dist/src/util/byteArray.js +27 -0
- package/dist/src/util/byteArray.js.map +1 -0
- package/dist/src/util/constantTimeCompare.d.ts +1 -0
- package/dist/src/util/constantTimeCompare.js +10 -0
- package/dist/src/util/constantTimeCompare.js.map +1 -0
- package/dist/src/util/enumHelpers.d.ts +4 -0
- package/dist/src/util/enumHelpers.js +28 -0
- package/dist/src/util/enumHelpers.js.map +1 -0
- package/dist/src/util/repeat.d.ts +1 -0
- package/dist/src/util/repeat.js +8 -0
- package/dist/src/util/repeat.js.map +1 -0
- package/dist/src/welcome.d.ts +29 -0
- package/dist/src/welcome.js +46 -0
- package/dist/src/welcome.js.map +1 -0
- package/dist/src/wireformat.d.ts +13 -0
- package/dist/src/wireformat.js +14 -0
- package/dist/src/wireformat.js.map +1 -0
- package/dist/test/base64.test.d.ts +1 -0
- package/dist/test/base64.test.js +87 -0
- package/dist/test/base64.test.js.map +1 -0
- package/dist/test/codec/authenticatedContent.test.d.ts +1 -0
- package/dist/test/codec/authenticatedContent.test.js +38 -0
- package/dist/test/codec/authenticatedContent.test.js.map +1 -0
- package/dist/test/codec/capabilities.test.d.ts +1 -0
- package/dist/test/codec/capabilities.test.js +26 -0
- package/dist/test/codec/capabilities.test.js.map +1 -0
- package/dist/test/codec/commit.test.d.ts +1 -0
- package/dist/test/codec/commit.test.js +15 -0
- package/dist/test/codec/commit.test.js.map +1 -0
- package/dist/test/codec/composite.test.d.ts +1 -0
- package/dist/test/codec/composite.test.js +61 -0
- package/dist/test/codec/composite.test.js.map +1 -0
- package/dist/test/codec/contentType.test.d.ts +1 -0
- package/dist/test/codec/contentType.test.js +12 -0
- package/dist/test/codec/contentType.test.js.map +1 -0
- package/dist/test/codec/credential.test.d.ts +1 -0
- package/dist/test/codec/credential.test.js +17 -0
- package/dist/test/codec/credential.test.js.map +1 -0
- package/dist/test/codec/credentialType.test.d.ts +1 -0
- package/dist/test/codec/credentialType.test.js +12 -0
- package/dist/test/codec/credentialType.test.js.map +1 -0
- package/dist/test/codec/encryptedGroupSecrets.test.d.ts +1 -0
- package/dist/test/codec/encryptedGroupSecrets.test.js +18 -0
- package/dist/test/codec/encryptedGroupSecrets.test.js.map +1 -0
- package/dist/test/codec/extension.test.d.ts +1 -0
- package/dist/test/codec/extension.test.js +20 -0
- package/dist/test/codec/extension.test.js.map +1 -0
- package/dist/test/codec/extensionType.test.d.ts +1 -0
- package/dist/test/codec/extensionType.test.js +12 -0
- package/dist/test/codec/extensionType.test.js.map +1 -0
- package/dist/test/codec/externalSender.test.d.ts +1 -0
- package/dist/test/codec/externalSender.test.js +20 -0
- package/dist/test/codec/externalSender.test.js.map +1 -0
- package/dist/test/codec/framedContent.test.d.ts +1 -0
- package/dist/test/codec/framedContent.test.js +26 -0
- package/dist/test/codec/framedContent.test.js.map +1 -0
- package/dist/test/codec/groupContext.test.d.ts +1 -0
- package/dist/test/codec/groupContext.test.js +30 -0
- package/dist/test/codec/groupContext.test.js.map +1 -0
- package/dist/test/codec/groupInfo.test.d.ts +1 -0
- package/dist/test/codec/groupInfo.test.js +45 -0
- package/dist/test/codec/groupInfo.test.js.map +1 -0
- package/dist/test/codec/groupSecrets.test.d.ts +1 -0
- package/dist/test/codec/groupSecrets.test.js +16 -0
- package/dist/test/codec/groupSecrets.test.js.map +1 -0
- package/dist/test/codec/hpkeCiphertext.test.d.ts +1 -0
- package/dist/test/codec/hpkeCiphertext.test.js +13 -0
- package/dist/test/codec/hpkeCiphertext.test.js.map +1 -0
- package/dist/test/codec/keyPackage.test.d.ts +1 -0
- package/dist/test/codec/keyPackage.test.js +58 -0
- package/dist/test/codec/keyPackage.test.js.map +1 -0
- package/dist/test/codec/keyPackageTBS.test.d.ts +1 -0
- package/dist/test/codec/keyPackageTBS.test.js +59 -0
- package/dist/test/codec/keyPackageTBS.test.js.map +1 -0
- package/dist/test/codec/leafNode.test.d.ts +1 -0
- package/dist/test/codec/leafNode.test.js +43 -0
- package/dist/test/codec/leafNode.test.js.map +1 -0
- package/dist/test/codec/leafNodeData.test.d.ts +1 -0
- package/dist/test/codec/leafNodeData.test.js +36 -0
- package/dist/test/codec/leafNodeData.test.js.map +1 -0
- package/dist/test/codec/leafNodeSource.test.d.ts +1 -0
- package/dist/test/codec/leafNodeSource.test.js +15 -0
- package/dist/test/codec/leafNodeSource.test.js.map +1 -0
- package/dist/test/codec/lifetime.test.d.ts +1 -0
- package/dist/test/codec/lifetime.test.js +12 -0
- package/dist/test/codec/lifetime.test.js.map +1 -0
- package/dist/test/codec/message.test.d.ts +1 -0
- package/dist/test/codec/message.test.js +100 -0
- package/dist/test/codec/message.test.js.map +1 -0
- package/dist/test/codec/nodeType.test.d.ts +1 -0
- package/dist/test/codec/nodeType.test.js +12 -0
- package/dist/test/codec/nodeType.test.js.map +1 -0
- package/dist/test/codec/number.test.d.ts +1 -0
- package/dist/test/codec/number.test.js +74 -0
- package/dist/test/codec/number.test.js.map +1 -0
- package/dist/test/codec/optional.test.d.ts +1 -0
- package/dist/test/codec/optional.test.js +42 -0
- package/dist/test/codec/optional.test.js.map +1 -0
- package/dist/test/codec/padding.test.d.ts +1 -0
- package/dist/test/codec/padding.test.js +40 -0
- package/dist/test/codec/padding.test.js.map +1 -0
- package/dist/test/codec/parentHash.test.d.ts +1 -0
- package/dist/test/codec/parentHash.test.js +13 -0
- package/dist/test/codec/parentHash.test.js.map +1 -0
- package/dist/test/codec/parentNode.test.d.ts +1 -0
- package/dist/test/codec/parentNode.test.js +22 -0
- package/dist/test/codec/parentNode.test.js.map +1 -0
- package/dist/test/codec/presharedkey.test.d.ts +1 -0
- package/dist/test/codec/presharedkey.test.js +35 -0
- package/dist/test/codec/presharedkey.test.js.map +1 -0
- package/dist/test/codec/privateContentAAD.test.d.ts +1 -0
- package/dist/test/codec/privateContentAAD.test.js +30 -0
- package/dist/test/codec/privateContentAAD.test.js.map +1 -0
- package/dist/test/codec/privateMessage.test.d.ts +1 -0
- package/dist/test/codec/privateMessage.test.js +36 -0
- package/dist/test/codec/privateMessage.test.js.map +1 -0
- package/dist/test/codec/proposal.test.d.ts +1 -0
- package/dist/test/codec/proposal.test.js +44 -0
- package/dist/test/codec/proposal.test.js.map +1 -0
- package/dist/test/codec/proposalOrRef.test.d.ts +1 -0
- package/dist/test/codec/proposalOrRef.test.js +12 -0
- package/dist/test/codec/proposalOrRef.test.js.map +1 -0
- package/dist/test/codec/proposalOrRefType.test.d.ts +1 -0
- package/dist/test/codec/proposalOrRefType.test.js +12 -0
- package/dist/test/codec/proposalOrRefType.test.js.map +1 -0
- package/dist/test/codec/proposalType.test.d.ts +1 -0
- package/dist/test/codec/proposalType.test.js +12 -0
- package/dist/test/codec/proposalType.test.js.map +1 -0
- package/dist/test/codec/protocolVersion.test.d.ts +1 -0
- package/dist/test/codec/protocolVersion.test.js +9 -0
- package/dist/test/codec/protocolVersion.test.js.map +1 -0
- package/dist/test/codec/pskId.test.d.ts +1 -0
- package/dist/test/codec/pskId.test.js +18 -0
- package/dist/test/codec/pskId.test.js.map +1 -0
- package/dist/test/codec/pskInfo.test.d.ts +1 -0
- package/dist/test/codec/pskInfo.test.js +12 -0
- package/dist/test/codec/pskInfo.test.js.map +1 -0
- package/dist/test/codec/pskLabel.test.d.ts +1 -0
- package/dist/test/codec/pskLabel.test.js +26 -0
- package/dist/test/codec/pskLabel.test.js.map +1 -0
- package/dist/test/codec/pskType.test.d.ts +1 -0
- package/dist/test/codec/pskType.test.js +12 -0
- package/dist/test/codec/pskType.test.js.map +1 -0
- package/dist/test/codec/publicMessage.test.d.ts +1 -0
- package/dist/test/codec/publicMessage.test.js +39 -0
- package/dist/test/codec/publicMessage.test.js.map +1 -0
- package/dist/test/codec/ratchetTree.test.d.ts +1 -0
- package/dist/test/codec/ratchetTree.test.js +83 -0
- package/dist/test/codec/ratchetTree.test.js.map +1 -0
- package/dist/test/codec/requiredCapabilities.test.d.ts +1 -0
- package/dist/test/codec/requiredCapabilities.test.js +30 -0
- package/dist/test/codec/requiredCapabilities.test.js.map +1 -0
- package/dist/test/codec/resumptionPSKUsage.test.d.ts +1 -0
- package/dist/test/codec/resumptionPSKUsage.test.js +15 -0
- package/dist/test/codec/resumptionPSKUsage.test.js.map +1 -0
- package/dist/test/codec/reuseGuard.test.d.ts +1 -0
- package/dist/test/codec/reuseGuard.test.js +9 -0
- package/dist/test/codec/reuseGuard.test.js.map +1 -0
- package/dist/test/codec/roundtrip.d.ts +3 -0
- package/dist/test/codec/roundtrip.js +8 -0
- package/dist/test/codec/roundtrip.js.map +1 -0
- package/dist/test/codec/sender.test.d.ts +1 -0
- package/dist/test/codec/sender.test.js +18 -0
- package/dist/test/codec/sender.test.js.map +1 -0
- package/dist/test/codec/senderData.test.d.ts +1 -0
- package/dist/test/codec/senderData.test.js +12 -0
- package/dist/test/codec/senderData.test.js.map +1 -0
- package/dist/test/codec/senderDataAAD.test.d.ts +1 -0
- package/dist/test/codec/senderDataAAD.test.js +12 -0
- package/dist/test/codec/senderDataAAD.test.js.map +1 -0
- package/dist/test/codec/senderType.test.d.ts +1 -0
- package/dist/test/codec/senderType.test.js +18 -0
- package/dist/test/codec/senderType.test.js.map +1 -0
- package/dist/test/codec/transcriptHash.test.d.ts +1 -0
- package/dist/test/codec/transcriptHash.test.js +38 -0
- package/dist/test/codec/transcriptHash.test.js.map +1 -0
- package/dist/test/codec/treeHash.test.d.ts +1 -0
- package/dist/test/codec/treeHash.test.js +17 -0
- package/dist/test/codec/treeHash.test.js.map +1 -0
- package/dist/test/codec/updatePath.test.d.ts +1 -0
- package/dist/test/codec/updatePath.test.js +81 -0
- package/dist/test/codec/updatePath.test.js.map +1 -0
- package/dist/test/codec/updatePathNode.test.d.ts +1 -0
- package/dist/test/codec/updatePathNode.test.js +23 -0
- package/dist/test/codec/updatePathNode.test.js.map +1 -0
- package/dist/test/codec/varLengthEncoding.test.d.ts +1 -0
- package/dist/test/codec/varLengthEncoding.test.js +90 -0
- package/dist/test/codec/varLengthEncoding.test.js.map +1 -0
- package/dist/test/codec/welcome.test.d.ts +1 -0
- package/dist/test/codec/welcome.test.js +25 -0
- package/dist/test/codec/welcome.test.js.map +1 -0
- package/dist/test/codec/wireformat.test.d.ts +1 -0
- package/dist/test/codec/wireformat.test.js +21 -0
- package/dist/test/codec/wireformat.test.js.map +1 -0
- package/dist/test/crypto/aead.test.d.ts +1 -0
- package/dist/test/crypto/aead.test.js +44 -0
- package/dist/test/crypto/aead.test.js.map +1 -0
- package/dist/test/crypto/hpke.test.d.ts +1 -0
- package/dist/test/crypto/hpke.test.js +58 -0
- package/dist/test/crypto/hpke.test.js.map +1 -0
- package/dist/test/crypto/keyMatch.d.ts +7 -0
- package/dist/test/crypto/keyMatch.js +22 -0
- package/dist/test/crypto/keyMatch.js.map +1 -0
- package/dist/test/extensionsEqual.test.d.ts +1 -0
- package/dist/test/extensionsEqual.test.js +51 -0
- package/dist/test/extensionsEqual.test.js.map +1 -0
- package/dist/test/groupinfo.test.d.ts +1 -0
- package/dist/test/groupinfo.test.js +40 -0
- package/dist/test/groupinfo.test.js.map +1 -0
- package/dist/test/scenario/common.d.ts +8 -0
- package/dist/test/scenario/common.js +41 -0
- package/dist/test/scenario/common.js.map +1 -0
- package/dist/test/scenario/customExtensions.test.d.ts +1 -0
- package/dist/test/scenario/customExtensions.test.js +56 -0
- package/dist/test/scenario/customExtensions.test.js.map +1 -0
- package/dist/test/scenario/customProposal.test.d.ts +1 -0
- package/dist/test/scenario/customProposal.test.js +71 -0
- package/dist/test/scenario/customProposal.test.js.map +1 -0
- package/dist/test/scenario/epochOutOfOrder.test.d.ts +1 -0
- package/dist/test/scenario/epochOutOfOrder.test.js +162 -0
- package/dist/test/scenario/epochOutOfOrder.test.js.map +1 -0
- package/dist/test/scenario/externalAddProposal.test.d.ts +1 -0
- package/dist/test/scenario/externalAddProposal.test.js +69 -0
- package/dist/test/scenario/externalAddProposal.test.js.map +1 -0
- package/dist/test/scenario/externalJoin.test.d.ts +1 -0
- package/dist/test/scenario/externalJoin.test.js +51 -0
- package/dist/test/scenario/externalJoin.test.js.map +1 -0
- package/dist/test/scenario/externalJoinResync.test.d.ts +1 -0
- package/dist/test/scenario/externalJoinResync.test.js +59 -0
- package/dist/test/scenario/externalJoinResync.test.js.map +1 -0
- package/dist/test/scenario/externalProposal.test.d.ts +1 -0
- package/dist/test/scenario/externalProposal.test.js +69 -0
- package/dist/test/scenario/externalProposal.test.js.map +1 -0
- package/dist/test/scenario/externalPsk.test.d.ts +1 -0
- package/dist/test/scenario/externalPsk.test.js +73 -0
- package/dist/test/scenario/externalPsk.test.js.map +1 -0
- package/dist/test/scenario/externalPskJoin.test.d.ts +1 -0
- package/dist/test/scenario/externalPskJoin.test.js +51 -0
- package/dist/test/scenario/externalPskJoin.test.js.map +1 -0
- package/dist/test/scenario/generationOutOfOrder.test.d.ts +1 -0
- package/dist/test/scenario/generationOutOfOrder.test.js +111 -0
- package/dist/test/scenario/generationOutOfOrder.test.js.map +1 -0
- package/dist/test/scenario/grease.test.d.ts +1 -0
- package/dist/test/scenario/grease.test.js +44 -0
- package/dist/test/scenario/grease.test.js.map +1 -0
- package/dist/test/scenario/largeGroupFullLifecycle.test.d.ts +1 -0
- package/dist/test/scenario/largeGroupFullLifecycle.test.js +127 -0
- package/dist/test/scenario/largeGroupFullLifecycle.test.js.map +1 -0
- package/dist/test/scenario/leaveProposal.test.d.ts +1 -0
- package/dist/test/scenario/leaveProposal.test.js +77 -0
- package/dist/test/scenario/leaveProposal.test.js.map +1 -0
- package/dist/test/scenario/multipleJoinsAtOnce.test.d.ts +1 -0
- package/dist/test/scenario/multipleJoinsAtOnce.test.js +48 -0
- package/dist/test/scenario/multipleJoinsAtOnce.test.js.map +1 -0
- package/dist/test/scenario/oneToOneJoin.test.d.ts +1 -0
- package/dist/test/scenario/oneToOneJoin.test.js +98 -0
- package/dist/test/scenario/oneToOneJoin.test.js.map +1 -0
- package/dist/test/scenario/ratchetTreeExtension.test.d.ts +1 -0
- package/dist/test/scenario/ratchetTreeExtension.test.js +48 -0
- package/dist/test/scenario/ratchetTreeExtension.test.js.map +1 -0
- package/dist/test/scenario/reinit.test.d.ts +1 -0
- package/dist/test/scenario/reinit.test.js +57 -0
- package/dist/test/scenario/reinit.test.js.map +1 -0
- package/dist/test/scenario/rejectIncomingMessage.test.d.ts +1 -0
- package/dist/test/scenario/rejectIncomingMessage.test.js +67 -0
- package/dist/test/scenario/rejectIncomingMessage.test.js.map +1 -0
- package/dist/test/scenario/remove.test.d.ts +1 -0
- package/dist/test/scenario/remove.test.js +68 -0
- package/dist/test/scenario/remove.test.js.map +1 -0
- package/dist/test/scenario/requiredCapabilites.test.d.ts +1 -0
- package/dist/test/scenario/requiredCapabilites.test.js +65 -0
- package/dist/test/scenario/requiredCapabilites.test.js.map +1 -0
- package/dist/test/scenario/resumption.test.d.ts +1 -0
- package/dist/test/scenario/resumption.test.js +43 -0
- package/dist/test/scenario/resumption.test.js.map +1 -0
- package/dist/test/scenario/threePartyJoin.test.d.ts +1 -0
- package/dist/test/scenario/threePartyJoin.test.js +56 -0
- package/dist/test/scenario/threePartyJoin.test.js.map +1 -0
- package/dist/test/scenario/update.test.d.ts +1 -0
- package/dist/test/scenario/update.test.js +50 -0
- package/dist/test/scenario/update.test.js.map +1 -0
- package/dist/test/test-vectors/cryptoBasics.test.d.ts +1 -0
- package/dist/test/test-vectors/cryptoBasics.test.js +60 -0
- package/dist/test/test-vectors/cryptoBasics.test.js.map +1 -0
- package/dist/test/test-vectors/deserialization.test.d.ts +1 -0
- package/dist/test/test-vectors/deserialization.test.js +13 -0
- package/dist/test/test-vectors/deserialization.test.js.map +1 -0
- package/dist/test/test-vectors/keySchedule.test.d.ts +1 -0
- package/dist/test/test-vectors/keySchedule.test.js +48 -0
- package/dist/test/test-vectors/keySchedule.test.js.map +1 -0
- package/dist/test/test-vectors/messageProtection.test.d.ts +1 -0
- package/dist/test/test-vectors/messageProtection.test.js +215 -0
- package/dist/test/test-vectors/messageProtection.test.js.map +1 -0
- package/dist/test/test-vectors/messages.test.d.ts +1 -0
- package/dist/test/test-vectors/messages.test.js +136 -0
- package/dist/test/test-vectors/messages.test.js.map +1 -0
- package/dist/test/test-vectors/passiveClientScenarios.test.d.ts +1 -0
- package/dist/test/test-vectors/passiveClientScenarios.test.js +86 -0
- package/dist/test/test-vectors/passiveClientScenarios.test.js.map +1 -0
- package/dist/test/test-vectors/pskSecret.test.d.ts +1 -0
- package/dist/test/test-vectors/pskSecret.test.js +18 -0
- package/dist/test/test-vectors/pskSecret.test.js.map +1 -0
- package/dist/test/test-vectors/secretTree.test.d.ts +1 -0
- package/dist/test/test-vectors/secretTree.test.js +48 -0
- package/dist/test/test-vectors/secretTree.test.js.map +1 -0
- package/dist/test/test-vectors/transcriptHashes.test.d.ts +1 -0
- package/dist/test/test-vectors/transcriptHashes.test.js +26 -0
- package/dist/test/test-vectors/transcriptHashes.test.js.map +1 -0
- package/dist/test/test-vectors/treeOperations.test.d.ts +1 -0
- package/dist/test/test-vectors/treeOperations.test.js +45 -0
- package/dist/test/test-vectors/treeOperations.test.js.map +1 -0
- package/dist/test/test-vectors/treeValidation.test.d.ts +1 -0
- package/dist/test/test-vectors/treeValidation.test.js +36 -0
- package/dist/test/test-vectors/treeValidation.test.js.map +1 -0
- package/dist/test/test-vectors/treekem.test.d.ts +1 -0
- package/dist/test/test-vectors/treekem.test.js +100 -0
- package/dist/test/test-vectors/treekem.test.js.map +1 -0
- package/dist/test/test-vectors/treemath.test.d.ts +1 -0
- package/dist/test/test-vectors/treemath.test.js +55 -0
- package/dist/test/test-vectors/treemath.test.js.map +1 -0
- package/dist/test/test-vectors/welcome.test.d.ts +1 -0
- package/dist/test/test-vectors/welcome.test.js +40 -0
- package/dist/test/test-vectors/welcome.test.js.map +1 -0
- package/dist/test/validation/proposalValidation.test.d.ts +1 -0
- package/dist/test/validation/proposalValidation.test.js +231 -0
- package/dist/test/validation/proposalValidation.test.js.map +1 -0
- package/dist/test/validation/ratchetTreeValidation.test.d.ts +1 -0
- package/dist/test/validation/ratchetTreeValidation.test.js +51 -0
- package/dist/test/validation/ratchetTreeValidation.test.js.map +1 -0
- package/dist/test/validation/resumptionValidation.test.d.ts +1 -0
- package/dist/test/validation/resumptionValidation.test.js +79 -0
- package/dist/test/validation/resumptionValidation.test.js.map +1 -0
- package/dist/test_vectors/crypto-basics.json +303 -0
- package/dist/test_vectors/deserialization.json +58 -0
- package/dist/test_vectors/key-schedule.json +926 -0
- package/dist/test_vectors/message-protection.json +142 -0
- package/dist/test_vectors/messages.json +5702 -0
- package/dist/test_vectors/passive-client-handling-commit.json +2683 -0
- package/dist/test_vectors/passive-client-random.json +2657 -0
- package/dist/test_vectors/passive-client-welcome.json +814 -0
- package/dist/test_vectors/psk_secret.json +2382 -0
- package/dist/test_vectors/secret-tree.json +4846 -0
- package/dist/test_vectors/transcript-hashes.json +58 -0
- package/dist/test_vectors/tree-math.json +8156 -0
- package/dist/test_vectors/tree-operations.json +47 -0
- package/dist/test_vectors/tree-validation.json +6204 -0
- package/dist/test_vectors/treekem.json +14859 -0
- package/dist/test_vectors/welcome.json +51 -0
- package/package.json +108 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { encodeVarLenData } from "../codec/variableLength";
|
|
2
|
+
import { DependencyError } from "../mlsError";
|
|
3
|
+
export async function signWithLabel(signKey, label, content, s) {
|
|
4
|
+
return s.sign(signKey, new Uint8Array([...encodeVarLenData(new TextEncoder().encode(`MLS 1.0 ${label}`)), ...encodeVarLenData(content)]));
|
|
5
|
+
}
|
|
6
|
+
export async function verifyWithLabel(publicKey, label, content, signature, s) {
|
|
7
|
+
return s.verify(publicKey, new Uint8Array([...encodeVarLenData(new TextEncoder().encode(`MLS 1.0 ${label}`)), ...encodeVarLenData(content)]), signature);
|
|
8
|
+
}
|
|
9
|
+
export async function makeNobleSignatureImpl(alg) {
|
|
10
|
+
switch (alg) {
|
|
11
|
+
case "Ed25519":
|
|
12
|
+
try {
|
|
13
|
+
const { ed25519 } = await import("@noble/curves/ed25519");
|
|
14
|
+
return {
|
|
15
|
+
async sign(signKey, message) {
|
|
16
|
+
return ed25519.sign(message, signKey);
|
|
17
|
+
},
|
|
18
|
+
async verify(publicKey, message, signature) {
|
|
19
|
+
return ed25519.verify(signature, message, publicKey);
|
|
20
|
+
},
|
|
21
|
+
async keygen() {
|
|
22
|
+
const signKey = ed25519.utils.randomPrivateKey();
|
|
23
|
+
return { signKey, publicKey: ed25519.getPublicKey(signKey) };
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
throw new DependencyError("Optional dependency '@noble/curves' is not installed. Please install it to use this feature.");
|
|
29
|
+
}
|
|
30
|
+
case "Ed448":
|
|
31
|
+
try {
|
|
32
|
+
const { ed448 } = await import("@noble/curves/ed448");
|
|
33
|
+
return {
|
|
34
|
+
async sign(signKey, message) {
|
|
35
|
+
return ed448.sign(message, signKey);
|
|
36
|
+
},
|
|
37
|
+
async verify(publicKey, message, signature) {
|
|
38
|
+
return ed448.verify(signature, message, publicKey);
|
|
39
|
+
},
|
|
40
|
+
async keygen() {
|
|
41
|
+
const signKey = ed448.utils.randomPrivateKey();
|
|
42
|
+
return { signKey, publicKey: ed448.getPublicKey(signKey) };
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
throw new DependencyError("Optional dependency '@noble/curves' is not installed. Please install it to use this feature.");
|
|
48
|
+
}
|
|
49
|
+
case "P256":
|
|
50
|
+
try {
|
|
51
|
+
const { p256 } = await import("@noble/curves/nist");
|
|
52
|
+
return {
|
|
53
|
+
async sign(signKey, message) {
|
|
54
|
+
return p256.sign(message, signKey, { prehash: true }).toCompactRawBytes();
|
|
55
|
+
},
|
|
56
|
+
async verify(publicKey, message, signature) {
|
|
57
|
+
return p256.verify(signature, message, publicKey, { prehash: true });
|
|
58
|
+
},
|
|
59
|
+
async keygen() {
|
|
60
|
+
const signKey = p256.utils.randomPrivateKey();
|
|
61
|
+
return { signKey, publicKey: p256.getPublicKey(signKey) };
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
throw new DependencyError("Optional dependency '@noble/curves' is not installed. Please install it to use this feature.");
|
|
67
|
+
}
|
|
68
|
+
case "P384":
|
|
69
|
+
try {
|
|
70
|
+
const { p384 } = await import("@noble/curves/nist");
|
|
71
|
+
return {
|
|
72
|
+
async sign(signKey, message) {
|
|
73
|
+
return p384.sign(message, signKey, { prehash: true }).toCompactRawBytes();
|
|
74
|
+
},
|
|
75
|
+
async verify(publicKey, message, signature) {
|
|
76
|
+
return p384.verify(signature, message, publicKey, { prehash: true });
|
|
77
|
+
},
|
|
78
|
+
async keygen() {
|
|
79
|
+
const signKey = p384.utils.randomPrivateKey();
|
|
80
|
+
return { signKey, publicKey: p384.getPublicKey(signKey) };
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
throw new DependencyError("Optional dependency '@noble/curves' is not installed. Please install it to use this feature.");
|
|
86
|
+
}
|
|
87
|
+
case "P521":
|
|
88
|
+
try {
|
|
89
|
+
const { p521 } = await import("@noble/curves/nist");
|
|
90
|
+
return {
|
|
91
|
+
async sign(signKey, message) {
|
|
92
|
+
return p521.sign(message, signKey, { prehash: true }).toCompactRawBytes();
|
|
93
|
+
},
|
|
94
|
+
async verify(publicKey, message, signature) {
|
|
95
|
+
return p521.verify(signature, message, publicKey, { prehash: true });
|
|
96
|
+
},
|
|
97
|
+
async keygen() {
|
|
98
|
+
const signKey = p521.utils.randomPrivateKey();
|
|
99
|
+
return { signKey, publicKey: p521.getPublicKey(signKey) };
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
throw new DependencyError("Optional dependency '@noble/curves' is not installed. Please install it to use this feature.");
|
|
105
|
+
}
|
|
106
|
+
case "ML-DSA-87":
|
|
107
|
+
try {
|
|
108
|
+
const { ml_dsa87 } = await import("@noble/post-quantum/ml-dsa");
|
|
109
|
+
return {
|
|
110
|
+
async sign(signKey, message) {
|
|
111
|
+
return ml_dsa87.sign(signKey, message);
|
|
112
|
+
},
|
|
113
|
+
async verify(publicKey, message, signature) {
|
|
114
|
+
return ml_dsa87.verify(publicKey, message, signature);
|
|
115
|
+
},
|
|
116
|
+
async keygen() {
|
|
117
|
+
const keys = ml_dsa87.keygen(crypto.getRandomValues(new Uint8Array(32)));
|
|
118
|
+
return { signKey: keys.secretKey, publicKey: keys.publicKey };
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
throw new DependencyError("Optional dependency '@noble/post-quantum' is not installed. Please install it to use this feature.");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/crypto/signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function createCustomCredentialType(credentialId) {
|
|
2
|
+
return credentialId.toString();
|
|
3
|
+
}
|
|
4
|
+
export function createCustomCredential(credentialId, data) {
|
|
5
|
+
const result = {
|
|
6
|
+
credentialType: createCustomCredentialType(credentialId),
|
|
7
|
+
data,
|
|
8
|
+
};
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=customCredential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customCredential.js","sourceRoot":"","sources":["../../src/customCredential.ts"],"names":[],"mappings":"AAGA,SAAS,0BAA0B,CAAC,YAAoB;IACtD,OAAO,YAAY,CAAC,QAAQ,EAAwB,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,YAAoB,EAAE,IAAgB;IAC3E,MAAM,MAAM,GAAqB;QAC/B,cAAc,EAAE,0BAA0B,CAAC,YAAY,CAAC;QACxD,IAAI;KACL,CAAA;IACD,OAAO,MAA+B,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ciphersuites } from "./crypto/ciphersuite";
|
|
2
|
+
import { greaseCapabilities, defaultGreaseConfig } from "./grease";
|
|
3
|
+
export function defaultCapabilities() {
|
|
4
|
+
return greaseCapabilities(defaultGreaseConfig, {
|
|
5
|
+
versions: ["mls10"],
|
|
6
|
+
ciphersuites: Object.keys(ciphersuites),
|
|
7
|
+
extensions: [],
|
|
8
|
+
proposals: [],
|
|
9
|
+
credentials: ["basic", "x509"],
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=defaultCapabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultCapabilities.js","sourceRoot":"","sources":["../../src/defaultCapabilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAElE,MAAM,UAAU,mBAAmB;IACjC,OAAO,kBAAkB,CAAC,mBAAmB,EAAE;QAC7C,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAsB;QAC5D,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Decoder } from "./codec/tlsDecoder";
|
|
2
|
+
import { Encoder } from "./codec/tlsEncoder";
|
|
3
|
+
export declare const defaultExtensionTypes: {
|
|
4
|
+
readonly application_id: 1;
|
|
5
|
+
readonly ratchet_tree: 2;
|
|
6
|
+
readonly required_capabilities: 3;
|
|
7
|
+
readonly external_pub: 4;
|
|
8
|
+
readonly external_senders: 5;
|
|
9
|
+
};
|
|
10
|
+
export type DefaultExtensionTypeName = keyof typeof defaultExtensionTypes;
|
|
11
|
+
export type DefaultExtensionTypeValue = (typeof defaultExtensionTypes)[DefaultExtensionTypeName];
|
|
12
|
+
export declare const encodeDefaultExtensionType: Encoder<DefaultExtensionTypeName>;
|
|
13
|
+
export declare const decodeDefaultExtensionType: Decoder<DefaultExtensionTypeName>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { decodeUint16, encodeUint16 } from "./codec/number";
|
|
2
|
+
import { mapDecoderOption } from "./codec/tlsDecoder";
|
|
3
|
+
import { contramapEncoder } from "./codec/tlsEncoder";
|
|
4
|
+
import { enumNumberToKey } from "./util/enumHelpers";
|
|
5
|
+
export const defaultExtensionTypes = {
|
|
6
|
+
application_id: 1,
|
|
7
|
+
ratchet_tree: 2,
|
|
8
|
+
required_capabilities: 3,
|
|
9
|
+
external_pub: 4,
|
|
10
|
+
external_senders: 5,
|
|
11
|
+
};
|
|
12
|
+
export const encodeDefaultExtensionType = contramapEncoder(encodeUint16, (n) => defaultExtensionTypes[n]);
|
|
13
|
+
export const decodeDefaultExtensionType = mapDecoderOption(decodeUint16, enumNumberToKey(defaultExtensionTypes));
|
|
14
|
+
//# sourceMappingURL=defaultExtensionType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultExtensionType.js","sourceRoot":"","sources":["../../src/defaultExtensionType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAW,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAW,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,qBAAqB,EAAE,CAAC;IACxB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;CACX,CAAA;AAKV,MAAM,CAAC,MAAM,0BAA0B,GAAsC,gBAAgB,CAC3F,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAChC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAsC,gBAAgB,CAC3F,YAAY,EACZ,eAAe,CAAC,qBAAqB,CAAC,CACvC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Decoder } from "./codec/tlsDecoder";
|
|
2
|
+
import { Encoder } from "./codec/tlsEncoder";
|
|
3
|
+
export declare const defaultProposalTypes: {
|
|
4
|
+
readonly add: 1;
|
|
5
|
+
readonly update: 2;
|
|
6
|
+
readonly remove: 3;
|
|
7
|
+
readonly psk: 4;
|
|
8
|
+
readonly reinit: 5;
|
|
9
|
+
readonly external_init: 6;
|
|
10
|
+
readonly group_context_extensions: 7;
|
|
11
|
+
};
|
|
12
|
+
export type DefaultProposalTypeName = keyof typeof defaultProposalTypes;
|
|
13
|
+
export type DefaultProposalTypeValue = (typeof defaultProposalTypes)[DefaultProposalTypeName];
|
|
14
|
+
export declare const encodeDefaultProposalType: Encoder<DefaultProposalTypeName>;
|
|
15
|
+
export declare const decodeDefaultProposalType: Decoder<DefaultProposalTypeName>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { decodeUint16, encodeUint16 } from "./codec/number";
|
|
2
|
+
import { mapDecoderOption } from "./codec/tlsDecoder";
|
|
3
|
+
import { contramapEncoder } from "./codec/tlsEncoder";
|
|
4
|
+
import { enumNumberToKey } from "./util/enumHelpers";
|
|
5
|
+
export const defaultProposalTypes = {
|
|
6
|
+
add: 1,
|
|
7
|
+
update: 2,
|
|
8
|
+
remove: 3,
|
|
9
|
+
psk: 4,
|
|
10
|
+
reinit: 5,
|
|
11
|
+
external_init: 6,
|
|
12
|
+
group_context_extensions: 7,
|
|
13
|
+
};
|
|
14
|
+
export const encodeDefaultProposalType = contramapEncoder(encodeUint16, (n) => defaultProposalTypes[n]);
|
|
15
|
+
export const decodeDefaultProposalType = mapDecoderOption(decodeUint16, enumNumberToKey(defaultProposalTypes));
|
|
16
|
+
//# sourceMappingURL=defaultProposalType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultProposalType.js","sourceRoot":"","sources":["../../src/defaultProposalType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAW,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAW,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC;IAChB,wBAAwB,EAAE,CAAC;CACnB,CAAA;AAKV,MAAM,CAAC,MAAM,yBAAyB,GAAqC,gBAAgB,CACzF,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAqC,gBAAgB,CACzF,YAAY,EACZ,eAAe,CAAC,oBAAoB,CAAC,CACtC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Decoder } from "./codec/tlsDecoder";
|
|
2
|
+
import { Encoder } from "./codec/tlsEncoder";
|
|
3
|
+
import { DefaultExtensionTypeName } from "./defaultExtensionType";
|
|
4
|
+
export type ExtensionType = DefaultExtensionTypeName | number;
|
|
5
|
+
export declare const encodeExtensionType: Encoder<ExtensionType>;
|
|
6
|
+
export declare const decodeExtensionType: Decoder<ExtensionType>;
|
|
7
|
+
export type Extension = {
|
|
8
|
+
extensionType: ExtensionType;
|
|
9
|
+
extensionData: Uint8Array;
|
|
10
|
+
};
|
|
11
|
+
export declare const encodeExtension: Encoder<Extension>;
|
|
12
|
+
export declare const decodeExtension: Decoder<Extension>;
|
|
13
|
+
export declare function extensionEqual(a: Extension, b: Extension): boolean;
|
|
14
|
+
export declare function extensionsEqual(a: Extension[], b: Extension[]): boolean;
|
|
15
|
+
export declare function extensionsSupportedByCapabilities(requiredExtensions: Extension[], capabilities: {
|
|
16
|
+
extensions: number[];
|
|
17
|
+
}): boolean;
|
|
18
|
+
export declare function extensionTypeToNumber(t: ExtensionType): number;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { decodeUint16, encodeUint16 } from "./codec/number";
|
|
2
|
+
import { mapDecoders, orDecoder } from "./codec/tlsDecoder";
|
|
3
|
+
import { contramapEncoders } from "./codec/tlsEncoder";
|
|
4
|
+
import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength";
|
|
5
|
+
import { decodeDefaultExtensionType, encodeDefaultExtensionType, defaultExtensionTypes, } from "./defaultExtensionType";
|
|
6
|
+
import { constantTimeEqual } from "./util/constantTimeCompare";
|
|
7
|
+
export const encodeExtensionType = (t) => typeof t === "number" ? encodeUint16(t) : encodeDefaultExtensionType(t);
|
|
8
|
+
export const decodeExtensionType = orDecoder(decodeDefaultExtensionType, decodeUint16);
|
|
9
|
+
export const encodeExtension = contramapEncoders([encodeExtensionType, encodeVarLenData], (e) => [e.extensionType, e.extensionData]);
|
|
10
|
+
export const decodeExtension = mapDecoders([decodeExtensionType, decodeVarLenData], (extensionType, extensionData) => ({ extensionType, extensionData }));
|
|
11
|
+
export function extensionEqual(a, b) {
|
|
12
|
+
return a.extensionType === b.extensionType && constantTimeEqual(a.extensionData, b.extensionData);
|
|
13
|
+
}
|
|
14
|
+
export function extensionsEqual(a, b) {
|
|
15
|
+
if (a.length !== b.length)
|
|
16
|
+
return false;
|
|
17
|
+
return a.every((val, i) => extensionEqual(val, b[i]));
|
|
18
|
+
}
|
|
19
|
+
export function extensionsSupportedByCapabilities(requiredExtensions, capabilities) {
|
|
20
|
+
return requiredExtensions
|
|
21
|
+
.filter((ex) => !isDefaultExtension(ex.extensionType))
|
|
22
|
+
.every((ex) => capabilities.extensions.includes(extensionTypeToNumber(ex.extensionType)));
|
|
23
|
+
}
|
|
24
|
+
function isDefaultExtension(t) {
|
|
25
|
+
return typeof t !== "number";
|
|
26
|
+
}
|
|
27
|
+
export function extensionTypeToNumber(t) {
|
|
28
|
+
return typeof t === "number" ? t : defaultExtensionTypes[t];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAW,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAW,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAE1B,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAI9D,MAAM,CAAC,MAAM,mBAAmB,GAA2B,CAAC,CAAC,EAAE,EAAE,CAC/D,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,mBAAmB,GAA2B,SAAS,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAA;AAO9G,MAAM,CAAC,MAAM,eAAe,GAAuB,iBAAiB,CAClE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,EACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAU,CACnD,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAuB,WAAW,CAC5D,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,EACvC,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CACrE,CAAA;AAED,MAAM,UAAU,cAAc,CAAC,CAAY,EAAE,CAAY;IACvD,OAAO,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,CAAA;AACnG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAc,EAAE,CAAc;IAC5D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACvC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,kBAA+B,EAC/B,YAAsC;IAEtC,OAAO,kBAAkB;SACtB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;SACrD,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAgB;IAC1C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAAgB;IACpD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CiphersuiteImpl } from "./crypto/ciphersuite";
|
|
2
|
+
import { GroupInfo } from "./groupInfo";
|
|
3
|
+
import { KeyPackage, PrivateKeyPackage } from "./keyPackage";
|
|
4
|
+
import { MLSMessage } from "./message";
|
|
5
|
+
import { Proposal } from "./proposal";
|
|
6
|
+
export declare function proposeAddExternal(groupInfo: GroupInfo, keyPackage: KeyPackage, privateKeyPackage: PrivateKeyPackage, cs: CiphersuiteImpl, authenticatedData?: Uint8Array): Promise<MLSMessage>;
|
|
7
|
+
export declare function proposeExternal(groupInfo: GroupInfo, proposal: Proposal, signaturePublicKey: Uint8Array, signaturePrivateKey: Uint8Array, cs: CiphersuiteImpl): Promise<MLSMessage>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { extensionsSupportedByCapabilities } from "./extension";
|
|
2
|
+
import { decodeExternalSender } from "./externalSender";
|
|
3
|
+
import { protectExternalProposalPublic } from "./messageProtectionPublic";
|
|
4
|
+
import { UsageError, ValidationError } from "./mlsError";
|
|
5
|
+
import { constantTimeEqual } from "./util/constantTimeCompare";
|
|
6
|
+
export async function proposeAddExternal(groupInfo, keyPackage, privateKeyPackage, cs, authenticatedData = new Uint8Array()) {
|
|
7
|
+
const allExtensionsSupported = extensionsSupportedByCapabilities(groupInfo.groupContext.extensions, keyPackage.leafNode.capabilities);
|
|
8
|
+
if (!allExtensionsSupported)
|
|
9
|
+
throw new UsageError("client does not support every extension in the GroupContext");
|
|
10
|
+
const proposal = {
|
|
11
|
+
proposalType: "add",
|
|
12
|
+
add: {
|
|
13
|
+
keyPackage,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const result = await protectExternalProposalPublic(privateKeyPackage.signaturePrivateKey, groupInfo.groupContext, authenticatedData, proposal, { senderType: "new_member_proposal" }, cs);
|
|
17
|
+
return {
|
|
18
|
+
wireformat: "mls_public_message",
|
|
19
|
+
version: groupInfo.groupContext.version,
|
|
20
|
+
publicMessage: result.publicMessage,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export async function proposeExternal(groupInfo, proposal, signaturePublicKey, signaturePrivateKey, cs) {
|
|
24
|
+
const authenticatedData = new Uint8Array();
|
|
25
|
+
const externalSenderExtensionIndex = groupInfo.extensions.findIndex((ex) => {
|
|
26
|
+
if (ex.extensionType !== "external_senders")
|
|
27
|
+
return false;
|
|
28
|
+
const decoded = decodeExternalSender(ex.extensionData, 0);
|
|
29
|
+
if (decoded === undefined)
|
|
30
|
+
throw new ValidationError("Could not decode external_sender extension");
|
|
31
|
+
return constantTimeEqual(decoded[0].signaturePublicKey, signaturePublicKey);
|
|
32
|
+
});
|
|
33
|
+
const result = await protectExternalProposalPublic(signaturePrivateKey, groupInfo.groupContext, authenticatedData, proposal, { senderType: "external", senderIndex: externalSenderExtensionIndex }, cs);
|
|
34
|
+
return {
|
|
35
|
+
wireformat: "mls_public_message",
|
|
36
|
+
version: groupInfo.groupContext.version,
|
|
37
|
+
publicMessage: result.publicMessage,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=externalProposal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"externalProposal.js","sourceRoot":"","sources":["../../src/externalProposal.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,iCAAiC,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAIvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,UAAsB,EACtB,iBAAoC,EACpC,EAAmB,EACnB,oBAAgC,IAAI,UAAU,EAAE;IAEhD,MAAM,sBAAsB,GAAG,iCAAiC,CAC9D,SAAS,CAAC,YAAY,CAAC,UAAU,EACjC,UAAU,CAAC,QAAQ,CAAC,YAAY,CACjC,CAAA;IACD,IAAI,CAAC,sBAAsB;QAAE,MAAM,IAAI,UAAU,CAAC,6DAA6D,CAAC,CAAA;IAEhH,MAAM,QAAQ,GAAa;QACzB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE;YACH,UAAU;SACX;KACF,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,iBAAiB,CAAC,mBAAmB,EACrC,SAAS,CAAC,YAAY,EACtB,iBAAiB,EACjB,QAAQ,EACR,EAAE,UAAU,EAAE,qBAAqB,EAAE,EACrC,EAAE,CACH,CAAA;IAED,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAoB,EACpB,QAAkB,EAClB,kBAA8B,EAC9B,mBAA+B,EAC/B,EAAmB;IAEnB,MAAM,iBAAiB,GAAe,IAAI,UAAU,EAAE,CAAA;IAEtD,MAAM,4BAA4B,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAa,EAAW,EAAE;QAC7F,IAAI,EAAE,CAAC,aAAa,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAA;QACzD,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;QAEzD,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,eAAe,CAAC,4CAA4C,CAAC,CAAA;QAElG,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,mBAAmB,EACnB,SAAS,CAAC,YAAY,EACtB,iBAAiB,EACjB,QAAQ,EACR,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,4BAA4B,EAAE,EACrE,EAAE,CACH,CAAA;IAED,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Decoder } from "./codec/tlsDecoder";
|
|
2
|
+
import { Encoder } from "./codec/tlsEncoder";
|
|
3
|
+
import { Credential } from "./credential";
|
|
4
|
+
export type ExternalSender = {
|
|
5
|
+
signaturePublicKey: Uint8Array;
|
|
6
|
+
credential: Credential;
|
|
7
|
+
};
|
|
8
|
+
export declare const encodeExternalSender: Encoder<ExternalSender>;
|
|
9
|
+
export declare const decodeExternalSender: Decoder<ExternalSender>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { mapDecoders } from "./codec/tlsDecoder";
|
|
2
|
+
import { contramapEncoders } from "./codec/tlsEncoder";
|
|
3
|
+
import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength";
|
|
4
|
+
import { decodeCredential, encodeCredential } from "./credential";
|
|
5
|
+
export const encodeExternalSender = contramapEncoders([encodeVarLenData, encodeCredential], (e) => [e.signaturePublicKey, e.credential]);
|
|
6
|
+
export const decodeExternalSender = mapDecoders([decodeVarLenData, decodeCredential], (signaturePublicKey, credential) => ({ signaturePublicKey, credential }));
|
|
7
|
+
//# sourceMappingURL=externalSender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"externalSender.js","sourceRoot":"","sources":["../../src/externalSender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAW,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAc,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAO7E,MAAM,CAAC,MAAM,oBAAoB,GAA4B,iBAAiB,CAC5E,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,UAAU,CAAU,CACrD,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAA4B,WAAW,CACtE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EACpC,CAAC,kBAAkB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC,CACzE,CAAA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Decoder } from "./codec/tlsDecoder";
|
|
2
|
+
import { Encoder } from "./codec/tlsEncoder";
|
|
3
|
+
import { Commit } from "./commit";
|
|
4
|
+
import { ContentTypeName } from "./contentType";
|
|
5
|
+
import { CiphersuiteImpl } from "./crypto/ciphersuite";
|
|
6
|
+
import { Hash } from "./crypto/hash";
|
|
7
|
+
import { Signature } from "./crypto/signature";
|
|
8
|
+
import { GroupContext } from "./groupContext";
|
|
9
|
+
import { WireformatName } from "./wireformat";
|
|
10
|
+
import { Proposal } from "./proposal";
|
|
11
|
+
import { ProtocolVersionName } from "./protocolVersion";
|
|
12
|
+
import { Sender, SenderExternal, SenderMember, SenderNewMemberCommit, SenderNewMemberProposal } from "./sender";
|
|
13
|
+
export type FramedContentInfo = FramedContentApplicationData | FramedContentProposalData | FramedContentCommitData;
|
|
14
|
+
export type FramedContentApplicationData = {
|
|
15
|
+
contentType: "application";
|
|
16
|
+
applicationData: Uint8Array;
|
|
17
|
+
};
|
|
18
|
+
export type FramedContentProposalData = {
|
|
19
|
+
contentType: "proposal";
|
|
20
|
+
proposal: Proposal;
|
|
21
|
+
};
|
|
22
|
+
export type FramedContentCommitData = {
|
|
23
|
+
contentType: "commit";
|
|
24
|
+
commit: Commit;
|
|
25
|
+
};
|
|
26
|
+
export declare const encodeFramedContentApplicationData: Encoder<FramedContentApplicationData>;
|
|
27
|
+
export declare const encodeFramedContentProposalData: Encoder<FramedContentProposalData>;
|
|
28
|
+
export declare const encodeFramedContentCommitData: Encoder<FramedContentCommitData>;
|
|
29
|
+
export declare const encodeFramedContentInfo: Encoder<FramedContentInfo>;
|
|
30
|
+
export declare const decodeFramedContentApplicationData: Decoder<FramedContentApplicationData>;
|
|
31
|
+
export declare const decodeFramedContentProposalData: Decoder<FramedContentProposalData>;
|
|
32
|
+
export declare const decodeFramedContentCommitData: Decoder<FramedContentCommitData>;
|
|
33
|
+
export declare const decodeFramedContentInfo: Decoder<FramedContentInfo>;
|
|
34
|
+
export declare function toTbs(content: FramedContent, wireformat: WireformatName, context: GroupContext): FramedContentTBS;
|
|
35
|
+
export type FramedContent = FramedContentData & FramedContentInfo;
|
|
36
|
+
export type FramedContentData = {
|
|
37
|
+
groupId: Uint8Array;
|
|
38
|
+
epoch: bigint;
|
|
39
|
+
sender: Sender;
|
|
40
|
+
authenticatedData: Uint8Array;
|
|
41
|
+
};
|
|
42
|
+
export type FramedContentMember = FramedContent & {
|
|
43
|
+
sender: SenderMember;
|
|
44
|
+
};
|
|
45
|
+
export type FramedContentNewMemberCommit = FramedContent & {
|
|
46
|
+
sender: SenderNewMemberCommit;
|
|
47
|
+
};
|
|
48
|
+
export type FramedContentExternal = FramedContent & {
|
|
49
|
+
sender: SenderExternal;
|
|
50
|
+
};
|
|
51
|
+
export type FramedContentNewMemberProposal = FramedContent & {
|
|
52
|
+
sender: SenderNewMemberProposal;
|
|
53
|
+
};
|
|
54
|
+
export type FramedContentCommit = FramedContentData & FramedContentCommitData;
|
|
55
|
+
export type FramedContentApplicationOrProposal = FramedContentData & (FramedContentApplicationData | FramedContentProposalData);
|
|
56
|
+
export declare const encodeFramedContent: Encoder<FramedContent>;
|
|
57
|
+
export declare const decodeFramedContent: Decoder<FramedContent>;
|
|
58
|
+
type SenderInfo = SenderInfoMember | SenderInfoNewMemberCommit | SenderInfoExternal | SenderInfoNewMemberProposal;
|
|
59
|
+
type SenderInfoMember = {
|
|
60
|
+
senderType: "member";
|
|
61
|
+
context: GroupContext;
|
|
62
|
+
};
|
|
63
|
+
type SenderInfoNewMemberCommit = {
|
|
64
|
+
senderType: "new_member_commit";
|
|
65
|
+
context: GroupContext;
|
|
66
|
+
};
|
|
67
|
+
type SenderInfoExternal = {
|
|
68
|
+
senderType: "external";
|
|
69
|
+
};
|
|
70
|
+
type SenderInfoNewMemberProposal = {
|
|
71
|
+
senderType: "new_member_proposal";
|
|
72
|
+
};
|
|
73
|
+
export declare const encodeSenderInfo: Encoder<SenderInfo>;
|
|
74
|
+
export type FramedContentTBS = {
|
|
75
|
+
protocolVersion: ProtocolVersionName;
|
|
76
|
+
wireformat: WireformatName;
|
|
77
|
+
content: FramedContent;
|
|
78
|
+
} & SenderInfo;
|
|
79
|
+
export type FramedContentTBSCommit = FramedContentTBS & {
|
|
80
|
+
content: FramedContentCommit;
|
|
81
|
+
};
|
|
82
|
+
export type FramedContentTBSApplicationOrProposal = FramedContentTBS & {
|
|
83
|
+
content: FramedContentApplicationOrProposal;
|
|
84
|
+
};
|
|
85
|
+
export type FramedContentTBSExternal = FramedContentTBS & (SenderInfoExternal | SenderInfoNewMemberCommit | SenderInfoNewMemberProposal);
|
|
86
|
+
export declare const encodeFramedContentTBS: Encoder<FramedContentTBS>;
|
|
87
|
+
export type FramedContentAuthData = FramedContentAuthDataCommit | FramedContentAuthDataApplicationOrProposal;
|
|
88
|
+
export type FramedContentAuthDataCommit = {
|
|
89
|
+
signature: Uint8Array;
|
|
90
|
+
} & FramedContentAuthDataContentCommit;
|
|
91
|
+
export type FramedContentAuthDataApplicationOrProposal = {
|
|
92
|
+
signature: Uint8Array;
|
|
93
|
+
} & FramedContentAuthDataContentApplicationOrProposal;
|
|
94
|
+
type FramedContentAuthDataContentCommit = {
|
|
95
|
+
contentType: "commit";
|
|
96
|
+
confirmationTag: Uint8Array;
|
|
97
|
+
};
|
|
98
|
+
type FramedContentAuthDataContentApplicationOrProposal = {
|
|
99
|
+
contentType: Exclude<ContentTypeName, "commit">;
|
|
100
|
+
};
|
|
101
|
+
export declare const encodeFramedContentAuthData: Encoder<FramedContentAuthData>;
|
|
102
|
+
export declare const decodeFramedContentAuthDataCommit: Decoder<FramedContentAuthDataContentCommit>;
|
|
103
|
+
export declare function decodeFramedContentAuthData(contentType: ContentTypeName): Decoder<FramedContentAuthData>;
|
|
104
|
+
export declare function verifyFramedContentSignature(signKey: Uint8Array, wireformat: WireformatName, content: FramedContent, auth: FramedContentAuthData, context: GroupContext, s: Signature): Promise<boolean>;
|
|
105
|
+
export declare function signFramedContentTBS(signKey: Uint8Array, tbs: FramedContentTBS, s: Signature): Promise<Uint8Array>;
|
|
106
|
+
export declare function signFramedContentApplicationOrProposal(signKey: Uint8Array, tbs: FramedContentTBSApplicationOrProposal, cs: CiphersuiteImpl): Promise<FramedContentAuthDataApplicationOrProposal>;
|
|
107
|
+
export declare function createConfirmationTag(confirmationKey: Uint8Array, confirmedTranscriptHash: Uint8Array, h: Hash): Promise<Uint8Array>;
|
|
108
|
+
export declare function verifyConfirmationTag(confirmationKey: Uint8Array, tag: Uint8Array, confirmedTranscriptHash: Uint8Array, h: Hash): Promise<boolean>;
|
|
109
|
+
export declare function createContentCommitSignature(groupContext: GroupContext, wireformat: WireformatName, c: Commit, sender: Sender, authenticatedData: Uint8Array, signKey: Uint8Array, s: Signature): Promise<{
|
|
110
|
+
framedContent: FramedContentCommit;
|
|
111
|
+
signature: Uint8Array;
|
|
112
|
+
}>;
|
|
113
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { decodeUint64, encodeUint64 } from "./codec/number";
|
|
2
|
+
import { flatMapDecoder, mapDecoder, mapDecoders } from "./codec/tlsDecoder";
|
|
3
|
+
import { contramapEncoder, contramapEncoders } from "./codec/tlsEncoder";
|
|
4
|
+
import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength";
|
|
5
|
+
import { decodeCommit, encodeCommit } from "./commit";
|
|
6
|
+
import { decodeContentType, encodeContentType } from "./contentType";
|
|
7
|
+
import { signWithLabel, verifyWithLabel } from "./crypto/signature";
|
|
8
|
+
import { encodeGroupContext } from "./groupContext";
|
|
9
|
+
import { encodeWireformat } from "./wireformat";
|
|
10
|
+
import { decodeProposal, encodeProposal } from "./proposal";
|
|
11
|
+
import { encodeProtocolVersion } from "./protocolVersion";
|
|
12
|
+
import { decodeSender, encodeSender, } from "./sender";
|
|
13
|
+
export const encodeFramedContentApplicationData = contramapEncoders([encodeContentType, encodeVarLenData], (f) => [f.contentType, f.applicationData]);
|
|
14
|
+
export const encodeFramedContentProposalData = contramapEncoders([encodeContentType, encodeProposal], (f) => [f.contentType, f.proposal]);
|
|
15
|
+
export const encodeFramedContentCommitData = contramapEncoders([encodeContentType, encodeCommit], (f) => [f.contentType, f.commit]);
|
|
16
|
+
export const encodeFramedContentInfo = (fc) => {
|
|
17
|
+
switch (fc.contentType) {
|
|
18
|
+
case "application":
|
|
19
|
+
return encodeFramedContentApplicationData(fc);
|
|
20
|
+
case "proposal":
|
|
21
|
+
return encodeFramedContentProposalData(fc);
|
|
22
|
+
case "commit":
|
|
23
|
+
return encodeFramedContentCommitData(fc);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export const decodeFramedContentApplicationData = mapDecoder(decodeVarLenData, (applicationData) => ({ contentType: "application", applicationData }));
|
|
27
|
+
export const decodeFramedContentProposalData = mapDecoder(decodeProposal, (proposal) => ({ contentType: "proposal", proposal }));
|
|
28
|
+
export const decodeFramedContentCommitData = mapDecoder(decodeCommit, (commit) => ({
|
|
29
|
+
contentType: "commit",
|
|
30
|
+
commit,
|
|
31
|
+
}));
|
|
32
|
+
export const decodeFramedContentInfo = flatMapDecoder(decodeContentType, (contentType) => {
|
|
33
|
+
switch (contentType) {
|
|
34
|
+
case "application":
|
|
35
|
+
return decodeFramedContentApplicationData;
|
|
36
|
+
case "proposal":
|
|
37
|
+
return decodeFramedContentProposalData;
|
|
38
|
+
case "commit":
|
|
39
|
+
return decodeFramedContentCommitData;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
export function toTbs(content, wireformat, context) {
|
|
43
|
+
return { protocolVersion: context.version, wireformat, content, senderType: content.sender.senderType, context };
|
|
44
|
+
}
|
|
45
|
+
export const encodeFramedContent = contramapEncoders([encodeVarLenData, encodeUint64, encodeSender, encodeVarLenData, encodeFramedContentInfo], (fc) => [fc.groupId, fc.epoch, fc.sender, fc.authenticatedData, fc]);
|
|
46
|
+
export const decodeFramedContent = mapDecoders([decodeVarLenData, decodeUint64, decodeSender, decodeVarLenData, decodeFramedContentInfo], (groupId, epoch, sender, authenticatedData, info) => ({
|
|
47
|
+
groupId,
|
|
48
|
+
epoch,
|
|
49
|
+
sender,
|
|
50
|
+
authenticatedData,
|
|
51
|
+
...info,
|
|
52
|
+
}));
|
|
53
|
+
export const encodeSenderInfo = (info) => {
|
|
54
|
+
switch (info.senderType) {
|
|
55
|
+
case "member":
|
|
56
|
+
case "new_member_commit":
|
|
57
|
+
return encodeGroupContext(info.context);
|
|
58
|
+
case "external":
|
|
59
|
+
case "new_member_proposal":
|
|
60
|
+
return new Uint8Array();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
export const encodeFramedContentTBS = contramapEncoders([encodeProtocolVersion, encodeWireformat, encodeFramedContent, encodeSenderInfo], (f) => [f.protocolVersion, f.wireformat, f.content, f]);
|
|
64
|
+
const encodeFramedContentAuthDataContent = (authData) => {
|
|
65
|
+
switch (authData.contentType) {
|
|
66
|
+
case "commit":
|
|
67
|
+
return encodeFramedContentAuthDataCommit(authData);
|
|
68
|
+
case "application":
|
|
69
|
+
case "proposal":
|
|
70
|
+
return new Uint8Array();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const encodeFramedContentAuthDataCommit = contramapEncoder(encodeVarLenData, (data) => data.confirmationTag);
|
|
74
|
+
export const encodeFramedContentAuthData = contramapEncoders([encodeVarLenData, encodeFramedContentAuthDataContent], (d) => [d.signature, d]);
|
|
75
|
+
export const decodeFramedContentAuthDataCommit = mapDecoder(decodeVarLenData, (confirmationTag) => ({
|
|
76
|
+
contentType: "commit",
|
|
77
|
+
confirmationTag,
|
|
78
|
+
}));
|
|
79
|
+
export function decodeFramedContentAuthData(contentType) {
|
|
80
|
+
switch (contentType) {
|
|
81
|
+
case "commit":
|
|
82
|
+
return mapDecoders([decodeVarLenData, decodeFramedContentAuthDataCommit], (signature, commitData) => ({
|
|
83
|
+
signature,
|
|
84
|
+
...commitData,
|
|
85
|
+
}));
|
|
86
|
+
case "application":
|
|
87
|
+
case "proposal":
|
|
88
|
+
return mapDecoder(decodeVarLenData, (signature) => ({
|
|
89
|
+
signature,
|
|
90
|
+
contentType,
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function verifyFramedContentSignature(signKey, wireformat, content, auth, context, s) {
|
|
95
|
+
return verifyWithLabel(signKey, "FramedContentTBS", encodeFramedContentTBS(toTbs(content, wireformat, context)), auth.signature, s);
|
|
96
|
+
}
|
|
97
|
+
export function signFramedContentTBS(signKey, tbs, s) {
|
|
98
|
+
return signWithLabel(signKey, "FramedContentTBS", encodeFramedContentTBS(tbs), s);
|
|
99
|
+
}
|
|
100
|
+
export async function signFramedContentApplicationOrProposal(signKey, tbs, cs) {
|
|
101
|
+
const signature = await signFramedContentTBS(signKey, tbs, cs.signature);
|
|
102
|
+
return {
|
|
103
|
+
contentType: tbs.content.contentType,
|
|
104
|
+
signature,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function createConfirmationTag(confirmationKey, confirmedTranscriptHash, h) {
|
|
108
|
+
return h.mac(confirmationKey, confirmedTranscriptHash);
|
|
109
|
+
}
|
|
110
|
+
export function verifyConfirmationTag(confirmationKey, tag, confirmedTranscriptHash, h) {
|
|
111
|
+
return h.verifyMac(confirmationKey, tag, confirmedTranscriptHash);
|
|
112
|
+
}
|
|
113
|
+
export async function createContentCommitSignature(groupContext, wireformat, c, sender, authenticatedData, signKey, s) {
|
|
114
|
+
const tbs = {
|
|
115
|
+
protocolVersion: groupContext.version,
|
|
116
|
+
wireformat,
|
|
117
|
+
content: {
|
|
118
|
+
contentType: "commit",
|
|
119
|
+
commit: c,
|
|
120
|
+
groupId: groupContext.groupId,
|
|
121
|
+
epoch: groupContext.epoch,
|
|
122
|
+
sender,
|
|
123
|
+
authenticatedData,
|
|
124
|
+
},
|
|
125
|
+
senderType: "member",
|
|
126
|
+
context: groupContext,
|
|
127
|
+
};
|
|
128
|
+
const signature = await signFramedContentTBS(signKey, tbs, s);
|
|
129
|
+
return { framedContent: tbs.content, signature };
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=framedContent.js.map
|