Module diem_sdk::crypto

source ·

Modules

  • Overview
  • This crate provides a fast and reliable way to extract the Serde name of a Rust container.
  • Wrapper structs for types that need RustCrypto traits implemented.
  • This module provides an API for the PureEdDSA signature scheme over the ed25519 twisted Edwards curve as defined in RFC8032.
  • Rexport the error types needed for the various crypto traits
  • This module defines traits and implementations of cryptographic hash functions for the Diem project.
  • An implementation of HKDF, the HMAC-based Extract-and-Expand Key Derivation Function for the Diem project based on RFC 5869.
  • This module provides an API for the accountable threshold multi-sig PureEdDSA signature scheme over the ed25519 twisted Edwards curve as defined in RFC8032.
  • Noise is a protocol framework which we use in Diem to encrypt and authenticate communications between nodes of the network.
  • Internal module containing convenience utility functions mainly for testing
  • This module provides a generic set of traits for dealing with cryptographic primitives.
  • This module provides the Validate trait and Validatable type in order to aid in deferred validation.
  • An abstraction of x25519 elliptic curve keys required for Diffie-Hellman key exchange in the Diem project. Ideally, only x25519::PrivateKey and x25519::PublicKey should be used throughout the codebase, until the bytes are actually used in cryptographic operations.

Structs

  • Output value of our hash function. Intentionally opaque for safety and modularity.

Enums

Traits

  • A type family with a by-convention notion of genesis private key.
  • The serialized length of the data that enables macro derived serialization and deserialization.
  • A type family for key material that should remain secret and has an associated type of the PublicKey family.
  • A type for key material that can be publicly shared, and in asymmetric fashion, can be obtained from a PrivateKey reference. This convertibility requirement ensures the existence of a deterministic, canonical public key construction from a private key.
  • A type family for signature material that knows which public key type is needed to verify it, and given such a public key, knows how to verify.
  • A type family of valid keys that know how to sign.
  • A type family for schemes which know how to generate key material from a cryptographically-secure CryptoRng.
  • Key or more generally crypto material with a notion of byte validation.
  • An extension to to/from Strings for ValidCryptoMaterial.
  • A type family of public keys that are used for signing.