Module diem_sdk::crypto[][src]

Modules

_once_cell

Overview

_serde_name

This crate provides a fast and reliable way to extract the Serde name of a Rust container.

compat

Wrapper structs for types that need RustCrypto traits implemented.

ed25519

This module provides an API for the PureEdDSA signature scheme over the ed25519 twisted Edwards curve as defined in RFC8032.

error

Rexport the error types needed for the various crypto traits

hash

This module defines traits and implementations of cryptographic hash functions for the Diem project.

hkdf

An implementation of HKDF, the HMAC-based Extract-and-Expand Key Derivation Function for the Diem project based on RFC 5869.

multi_ed25519

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

Noise is a protocol framework which we use in Diem to encrypt and authenticate communications between nodes of the network.

test_utils

Internal module containing convenience utility functions mainly for testing

traits

This module provides a generic set of traits for dealing with cryptographic primitives.

x25519

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

HashValue

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

Enums

CryptoMaterialError

An error type for key and signature validation issues, see ValidCryptoMaterial.

Traits

Genesis

A type family with a by-convention notion of genesis private key.

Length

The serialized length of the data that enables macro derived serialization and deserialization.

PrivateKey

A type family for key material that should remain secret and has an associated type of the PublicKey family.

PublicKey

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.

Signature

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.

SigningKey

A type family of valid keys that know how to sign.

Uniform

A type family for schemes which know how to generate key material from a cryptographically-secure [CryptoRng][::rand::CryptoRng].

ValidCryptoMaterial

Key or more generally crypto material with a notion of byte validation.

ValidCryptoMaterialStringExt

An extension to to/from Strings for ValidCryptoMaterial.

VerifyingKey

A type family of public keys that are used for signing.