package crypto
- Alphabetic
- Public
- Protected
Package Members
Type Members
- final case class AsymmetricEncrypted[+M](ciphertext: ByteString, encryptionAlgorithmSpec: EncryptionAlgorithmSpec, encryptedFor: Fingerprint) extends NoCopy with HasVersionedWrapper[AsymmetricEncrypted[_]] with Product with Serializable
Represents an asymmetric encrypted message.
Represents an asymmetric encrypted message.
- ciphertext
the encrypted message
- encryptionAlgorithmSpec
the encryption algorithm specification (e.g. RSA OAEP)
- encryptedFor
the public key of the recipient
- class Crypto extends NamedLogging with CloseableHealthElement with CompositeHealthElement[String, HealthQuasiComponent] with HealthComponent
Wrapper class to simplify crypto dependency management
- trait CryptoKey extends Product with Serializable
- sealed trait CryptoKeyFormat extends Product with Serializable with PrettyPrinting
- trait CryptoKeyPair[+PK <: PublicKey, +SK <: PrivateKey] extends HasVersionedWrapper[CryptoKeyPair[PublicKey, PrivateKey]] with Product with Serializable
- trait CryptoKeyPairKey extends CryptoKey
- trait CryptoPrivateApi extends EncryptionPrivateOps with SigningPrivateOps with CloseableHealthComponent
- trait CryptoPrivateStoreApi extends CryptoPrivateApi with EncryptionPrivateStoreOps with SigningPrivateStoreOps
- trait CryptoPureApi extends EncryptionOps with SigningOps with HmacOps with HashOps with RandomOps with PasswordBasedEncryptionOps
- sealed trait CryptoPureApiError extends Product with Serializable with PrettyPrinting
- final case class CryptoScheme[S](default: S, allowed: NonEmpty[Set[S]]) extends Product with Serializable
- final case class CryptoSchemes(signingKeySpecs: CryptoScheme[SigningKeySpec], signingAlgoSpecs: CryptoScheme[SigningAlgorithmSpec], encryptionKeySpecs: CryptoScheme[EncryptionKeySpec], encryptionAlgoSpecs: CryptoScheme[EncryptionAlgorithmSpec], symmetricKeySchemes: CryptoScheme[SymmetricKeyScheme], hashAlgorithms: CryptoScheme[HashAlgorithm], pbkdfSchemes: Option[CryptoScheme[PbkdfScheme]]) extends Product with Serializable
- sealed trait DecryptionError extends Product with Serializable with PrettyPrinting
- trait EcKeySpec extends AnyRef
Indicates that the key is based on elliptic curve cryptography.
- final case class Encrypted[+M] extends Product with Serializable
A tag to denote encrypted data.
- sealed trait EncryptionAlgorithmSpec extends Product with Serializable with PrettyPrinting with UniformCantonConfigValidation
Algorithm schemes for asymmetric/hybrid encryption.
- sealed trait EncryptionError extends Product with Serializable with PrettyPrinting
- sealed trait EncryptionKeyCreationError extends Product with Serializable with PrettyPrinting
- sealed trait EncryptionKeyGenerationError extends Product with Serializable with PrettyPrinting
- final case class EncryptionKeyPair(publicKey: EncryptionPublicKey, privateKey: EncryptionPrivateKey) extends CryptoKeyPair[EncryptionPublicKey, EncryptionPrivateKey] with Product with Serializable
- sealed trait EncryptionKeySpec extends Product with Serializable with PrettyPrinting with UniformCantonConfigValidation
An encryption key specification.
- trait EncryptionOps extends AnyRef
Encryption operations that do not require access to a private key store but operates with provided keys.
- final case class EncryptionPrivateKey extends PrivateKey with HasVersionedWrapper[EncryptionPrivateKey] with NoCopy with Product with Serializable
- trait EncryptionPrivateOps extends AnyRef
Encryption operations that require access to stored private keys.
- trait EncryptionPrivateStoreOps extends EncryptionPrivateOps
A default implementation with a private key store
- final case class EncryptionPublicKey extends PublicKey with PrettyPrinting with HasVersionedWrapper[EncryptionPublicKey] with Product with Serializable
- final case class EncryptionPublicKeyWithName(publicKey: EncryptionPublicKey, name: Option[KeyName]) extends PublicKeyWithName with PrettyPrinting with Product with Serializable
- final case class Fingerprint extends LengthLimitedStringWrapper with PrettyPrinting with Product with Serializable
a human readable fingerprint of a key that serves as a unique identifier
- trait HasFingerprint extends AnyRef
- final case class Hash extends HasCryptographicEvidence with Ordered[Hash] with PrettyPrinting with Product with Serializable
- sealed abstract class HashAlgorithm extends PrettyPrinting with UniformCantonConfigValidation
A Multi-hash compatible description of a hash algorithm
- trait HashBuilder extends AnyRef
The methods of HashBuilder change its internal state and return
this
for convenience.The methods of HashBuilder change its internal state and return
this
for convenience.Requirements for all implementations:
For any HashBuilder hb, it is computationally infeasible to find two sequences
as1
andas2
of calls toadd
such that the concatenation ofas1
differs from the concatenationas2
, yet their computed hashes are the same, i.e.,as1.foldLeft(hb)((hb, a) => hb.add(a)).finish
is the same asas2.foldLeft(hb)((hb, a) => hb.add(a)).finish
. - class HashBuilderFromMessageDigest extends HashBuilder
Constructs a HashBuilder from the specified java.security.MessageDigest ALWAYS use the apply method unless you know what you're doing.
- trait HashOps extends AnyRef
Trait only needed if we want to make the default algorithm configurable
- final class HashPurpose extends AnyVal
The purpose of a hash serves to avoid hash collisions due to equal encodings for different objects.
The purpose of a hash serves to avoid hash collisions due to equal encodings for different objects. It is in general not possible to derive the purpose of the hash from the hash alone.
Whenever a hash is computed using HashOps, a HashPurpose must be specified that gets included in the hash. To reliably prevent hash collisions, every HashPurpose object should be used only in a single place.
All HashPurpose objects must be created through the HashPurpose$.apply method, which checks that the id is fresh.
- final case class Hmac extends PrettyPrinting with Product with Serializable
- sealed abstract class HmacAlgorithm extends PrettyPrinting
- sealed trait HmacError extends Product with Serializable with PrettyPrinting
- trait HmacOps extends AnyRef
pure HMAC operations that do not require access to external keys.
- final case class HmacSecret extends PrettyPrinting with Product with Serializable
- final case class KeyName(str: String300) extends LengthLimitedStringWrapper with PrettyPrinting with Product with Serializable
- sealed trait KeyPurpose extends Product with Serializable with PrettyPrinting
- class LtHash16 extends AnyRef
A running digest of a set of bytes, where elements can be added and removed.
A running digest of a set of bytes, where elements can be added and removed.
Note that it's the caller's responsibility to ensure that the collection defined by the sequence of additions/removals is really a set. In particular:
- final case class Nonce extends HasCryptographicEvidence with Product with Serializable
- final case class PasswordBasedEncrypted(ciphertext: ByteString, symmetricKeyScheme: SymmetricKeyScheme, pbkdfScheme: PbkdfScheme, salt: SecureRandomness) extends HasVersionedWrapper[PasswordBasedEncrypted] with Product with Serializable
A password-based encrypted message
- sealed trait PasswordBasedEncryptionError extends Product with Serializable with PrettyPrinting
- final case class PasswordBasedEncryptionKey(key: SymmetricKey, salt: SecureRandomness) extends Product with Serializable
A symmetric key derived from a password
- trait PasswordBasedEncryptionOps extends AnyRef
Password-Based Encryption (PBE)
- sealed trait PbkdfScheme extends Product with Serializable with UniformCantonConfigValidation
Schemes for Password-Based Key Derivation Functions
- trait PrivateKey extends CryptoKeyPairKey
- trait PublicKey extends CryptoKeyPairKey
- trait PublicKeyWithName extends Product with Serializable with HasVersionedWrapper[PublicKeyWithName]
- trait RandomOps extends AnyRef
- final case class RequiredEncryptionSpecs(algorithms: NonEmpty[Set[EncryptionAlgorithmSpec]], keys: NonEmpty[Set[EncryptionKeySpec]]) extends Product with Serializable with PrettyPrinting
Required encryption algorithms and keys for asymmetric/hybrid encryption to be listed in the synchronizer.
Required encryption algorithms and keys for asymmetric/hybrid encryption to be listed in the synchronizer.
- algorithms
list of required encryption algorithm specifications
- keys
list of required encryption key specifications
- final case class RequiredSigningSpecs(algorithms: NonEmpty[Set[SigningAlgorithmSpec]], keys: NonEmpty[Set[SigningKeySpec]]) extends Product with Serializable with PrettyPrinting
Required signing algorithms and keys specifications to be supported by all synchronizer members.
Required signing algorithms and keys specifications to be supported by all synchronizer members.
- algorithms
list of required signing algorithm specifications
- keys
list of required signing key specifications
- final case class Salt extends PrettyPrinting with Product with Serializable
A (pseudo-)random salt used for hashing to prevent pre-computed hash attacks.
A (pseudo-)random salt used for hashing to prevent pre-computed hash attacks.
The algorithm that was used to generate/derive the salt is kept to support the verification of the salt generation.
- sealed trait SaltAlgorithm extends Product with Serializable with PrettyPrinting
Indicates the algorithm used to generate and derive salts.
- sealed trait SaltError extends Product with Serializable with PrettyPrinting
- final case class SaltSeed extends Product with Serializable
A seed to derive further salts from.
A seed to derive further salts from.
Unlike Salt this seed will not be shipped to another participant.
- final case class SecureRandomness extends HasCryptographicEvidence with HasToByteString with Product with Serializable
The class is a tag that denotes a byte string as a securely generated random value.
The class is a tag that denotes a byte string as a securely generated random value.
Not an AnyVal as we also want it to be a serializable value such that we can encrypt it.
- final case class SessionKeyAndReference(randomness: SecureRandomness, key: SymmetricKey, reference: AnyRef) extends Product with Serializable
The randomness and corresponding session key, as well as a temporary reference to it that lives as long as the cache lives.
- final case class SessionKeyInfo(sessionKeyAndReference: SessionKeyAndReference, encryptedBy: Option[AnyRef], encryptedSessionKeys: Seq[AsymmetricEncrypted[SecureRandomness]]) extends Product with Serializable
Information that is cached for each view and is to be re-used if another view has the same recipients and transparency can be respected.
Information that is cached for each view and is to be re-used if another view has the same recipients and transparency can be respected.
- sessionKeyAndReference
the randomness, the corresponding symmetric key used to encrypt the view, and a symbolic reference to use in the 'encryptedBy' field.
- encryptedBy
an optional symbolic reference for the parent session key (if it exists) that encrypts a view containing this session key’s randomness. This cache entry must be revoked if the reference no longer matches.
- encryptedSessionKeys
the randomness of the session key encrypted for each recipient.
- final case class Signature extends HasVersionedWrapper[Signature] with PrettyPrinting with Product with Serializable
- sealed trait SignatureCheckError extends Product with Serializable with PrettyPrinting
- final case class SignatureDelegation extends Product with Serializable
An extension to the signature to accommodate the necessary information to be able to use session signing keys for protocol messages.
- final case class SignatureDelegationValidityPeriod(fromInclusive: CantonTimestamp, periodLength: PositiveSeconds) extends PrettyPrinting with HasCryptographicEvidence with Product with Serializable
Defines the validity period of a session signing key delegation within a specific synchronizer timeframe.
Defines the validity period of a session signing key delegation within a specific synchronizer timeframe. This period starts at a creation 'from' timestamp and extends for a specified duration.
- fromInclusive
the inclusive timestamp, indicating when a delegation to the session key was created
- periodLength
the validity duration of the session key delegation in seconds
- sealed trait SignatureFormat extends Product with Serializable with PrettyPrinting
- sealed trait SigningAlgorithmSpec extends Product with Serializable with PrettyPrinting with UniformCantonConfigValidation
Algorithm schemes for signing.
- sealed trait SigningError extends Product with Serializable with PrettyPrinting
- sealed trait SigningKeyGenerationError extends Product with Serializable with PrettyPrinting
- final case class SigningKeyPair(publicKey: SigningPublicKey, privateKey: SigningPrivateKey) extends CryptoKeyPair[SigningPublicKey, SigningPrivateKey] with Product with Serializable
- sealed trait SigningKeySpec extends Product with Serializable with PrettyPrinting with UniformCantonConfigValidation
A signing key specification.
- sealed trait SigningKeyUsage extends Product with Serializable with PrettyPrinting
Only intended to be used for signing keys to distinguish keys used for generating the namespace, for identity delegations, authenticate members to a sequencer and signing protocol messages.
- trait SigningOps extends AnyRef
Signing operations that do not require access to a private key store but operates with provided keys.
- final case class SigningPrivateKey extends PrivateKey with HasVersionedWrapper[SigningPrivateKey] with Product with Serializable
- trait SigningPrivateOps extends AnyRef
Signing operations that require access to stored private keys.
- trait SigningPrivateStoreOps extends SigningPrivateOps
A default implementation with a private key store
- final case class SigningPublicKey extends PublicKey with PrettyPrinting with HasVersionedWrapper[SigningPublicKey] with Product with Serializable
- final case class SigningPublicKeyWithName(publicKey: SigningPublicKey, name: Option[KeyName]) extends PublicKeyWithName with PrettyPrinting with Product with Serializable
- final case class SymmetricKey(format: CryptoKeyFormat, key: ByteString, scheme: SymmetricKeyScheme) extends CryptoKey with HasVersionedWrapper[SymmetricKey] with NoCopy with Product with Serializable
- sealed trait SymmetricKeyScheme extends Product with Serializable with PrettyPrinting with UniformCantonConfigValidation
Key schemes for symmetric encryption.
- trait SyncCryptoApi extends AnyRef
impure part of the crypto api with access to private key store and knowledge about the current entity to key assoc
- class SyncCryptoApiParticipantProvider extends AnyRef
Crypto API Provider class
Crypto API Provider class
The utility class combines the information provided by the IPSclient, the pure crypto functions and the signing and decryption operations on a private key vault in order to automatically resolve the right keys to use for signing / decryption based on synchronizer and timestamp. This API is intended only for participants and covers all usages of protocol signing keys, thus, session keys will be used if they are enabled.
TODO(#23810): Reuse SyncCryptoApiParticipantProvider for all nodes and not only participants
- trait SyncCryptoClient[+T <: SyncCryptoApi] extends TopologyClientApi[T]
- sealed trait SyncCryptoError extends Product with Serializable with PrettyPrinting
- class SynchronizerCryptoClient extends SyncCryptoClient[SynchronizerSnapshotSyncCryptoApi] with HasFutureSupervision with NamedLogging with FlagCloseable
Crypto operations on a particular synchronizer
- final class SynchronizerCryptoPureApi extends CryptoPureApi
Wraps the CryptoPureApi to include static synchronizer parameters, ensuring that during signature verification and decryption (both asymmetric and symmetric), the static synchronizer parameters are explicitly checked.
Wraps the CryptoPureApi to include static synchronizer parameters, ensuring that during signature verification and decryption (both asymmetric and symmetric), the static synchronizer parameters are explicitly checked. This is crucial because a malicious counter participant could potentially use a downgraded scheme. For other methods, such as key generation, signing, or encryption by this (honest) participant, we rely on the synchronizer handshake to ensure that only supported schemes within the synchronizer are used.
TODO(#20714): decryption checks come in a separate PR
- class SynchronizerSnapshotSyncCryptoApi extends SyncCryptoApi with NamedLogging
crypto operations for a (synchronizer,timestamp)
- final case class X509CertificateDer extends Product with Serializable
A X509 Certificate serialized in DER format.
- sealed trait X509CertificateEncoder[Encoding] extends AnyRef
- final case class X509CertificatePem extends Product with Serializable
A X509 Certificate serialized in PEM format.
Value Members
- object AsymmetricEncrypted extends HasVersionedMessageCompanion[AsymmetricEncrypted[_]] with Serializable
- object Blake2xb
Derives Blake2xb on top of Blake2b as defined in: https://www.blake2.net/blake2x.pdf In particular, the parameters for Blake2b invocations are as specified in that document
- object Crypto
- object CryptoHandshakeValidator
- object CryptoKeyFormat extends Serializable
- object CryptoKeyPair extends HasVersionedMessageCompanion[CryptoKeyPair[PublicKey, PrivateKey]] with Serializable
- object CryptoKeyValidation
- object CryptoPureApiError extends Serializable
- object CryptoScheme extends Serializable
- object CryptoSchemes extends Serializable
- object DecryptionError extends Serializable
- object Encrypted extends Serializable
- object EncryptionAlgorithmSpec extends Serializable
- object EncryptionError extends Serializable
- object EncryptionKeyCreationError extends Serializable
- object EncryptionKeyGenerationError extends CommandErrorGroup with Serializable
- object EncryptionKeyPair extends Serializable
- object EncryptionKeySpec extends Serializable
- object EncryptionPrivateKey extends HasVersionedMessageCompanion[EncryptionPrivateKey] with Serializable
- object EncryptionPublicKey extends HasVersionedMessageCompanion[EncryptionPublicKey] with HasVersionedMessageCompanionDbHelpers[EncryptionPublicKey] with Serializable
- object EncryptionPublicKeyWithName extends Serializable
- object Fingerprint extends Serializable
- object Hash extends Serializable
- object HashAlgorithm
- object HashBuilderFromMessageDigest
- object HashPurpose
- object Hmac extends Serializable
- object HmacAlgorithm
- object HmacError extends Serializable
- object HmacSecret extends Serializable
- object InteractiveSubmission
- object KeyName extends LengthLimitedStringWrapperCompanion[String300, KeyName] with Serializable
- object KeyPurpose extends Serializable
- object LedgerApiCryptoConversions
Utility methods to convert between Canton crypto classes and their equivalent on the ledger API.
- object LtHash16
- object Nonce extends Serializable
- object PasswordBasedEncrypted extends HasVersionedMessageCompanion[PasswordBasedEncrypted] with Serializable
- object PasswordBasedEncryptionError extends Serializable
- object PbkdfScheme extends Serializable
- object PrivateKey extends Serializable
- object PseudoRandom
Pseudo randomness, MUST NOT be used for security-relevant operations.
- object PublicKey extends Serializable
- object PublicKeyWithName extends HasVersionedMessageCompanion[PublicKeyWithName] with Serializable
- object RequiredEncryptionSpecs extends Serializable
- object RequiredSigningSpecs extends Serializable
- object Salt extends Serializable
- object SaltAlgorithm extends Serializable
- object SaltError extends Serializable
- object SaltSeed extends Serializable
- object SecureRandomness extends Serializable
Cryptographically-secure randomness
- object Signature extends HasVersionedMessageCompanion[Signature] with HasVersionedMessageCompanionDbHelpers[Signature] with Serializable
- object SignatureCheckError extends Serializable
- object SignatureDelegation extends Serializable
- object SignatureFormat extends Serializable
- object SigningAlgorithmSpec extends Serializable
- object SigningError extends Serializable
- object SigningKeyGenerationError extends CommandErrorGroup with Serializable
- object SigningKeyPair extends Serializable
- object SigningKeySpec extends Serializable
- object SigningKeyUsage extends Serializable
- object SigningPrivateKey extends HasVersionedMessageCompanion[SigningPrivateKey] with Serializable
- object SigningPublicKey extends HasVersionedMessageCompanion[SigningPublicKey] with HasVersionedMessageCompanionDbHelpers[SigningPublicKey] with Serializable
- object SigningPublicKeyWithName extends Serializable
- object SymmetricKey extends HasVersionedMessageCompanion[SymmetricKey] with Serializable
- object SymmetricKeyScheme extends Serializable
- object SyncCryptoClient
- object SyncCryptoError extends Serializable
- object SynchronizerCryptoClient
- object X509CertificateDer extends X509CertificateEncoder[X509CertificateDer] with Serializable
- object X509CertificatePem extends X509CertificateEncoder[X509CertificatePem] with Serializable