[][src]Trait ece::Crypto

pub trait Crypto: Sized {
type RemotePublicKey: RemotePublicKey;
type LocalKeyPair: LocalKeyPair;
    fn public_key_from_raw(raw: &[u8]) -> Result<Self::RemotePublicKey>;
fn generate_ephemeral_keypair() -> Result<Self::LocalKeyPair>;
fn compute_ecdh_secret(
        remote: &Self::RemotePublicKey,
        local: &Self::LocalKeyPair
    ) -> Result<Vec<u8>>;
fn hkdf_sha256(
        salt: &[u8],
        secret: &[u8],
        info: &[u8],
        len: usize
    ) -> Result<Vec<u8>>;
fn aes_gcm_128_encrypt(
        key: &[u8],
        iv: &[u8],
        data: &[u8],
        tag_len: usize
    ) -> Result<Vec<u8>>;
fn aes_gcm_128_decrypt(
        key: &[u8],
        iv: &[u8],
        data: &[u8],
        tag: &[u8]
    ) -> Result<Vec<u8>>;
fn random(dest: &mut [u8]) -> Result<()>; }

Associated Types

Loading content...

Required methods

fn public_key_from_raw(raw: &[u8]) -> Result<Self::RemotePublicKey>

Construct a RemotePublicKey from raw bytes typically obtained in a HTTP ECE header.

fn generate_ephemeral_keypair() -> Result<Self::LocalKeyPair>

fn compute_ecdh_secret(
    remote: &Self::RemotePublicKey,
    local: &Self::LocalKeyPair
) -> Result<Vec<u8>>

fn hkdf_sha256(
    salt: &[u8],
    secret: &[u8],
    info: &[u8],
    len: usize
) -> Result<Vec<u8>>

fn aes_gcm_128_encrypt(
    key: &[u8],
    iv: &[u8],
    data: &[u8],
    tag_len: usize
) -> Result<Vec<u8>>

Should return [ciphertext, auth_tag].

fn aes_gcm_128_decrypt(
    key: &[u8],
    iv: &[u8],
    data: &[u8],
    tag: &[u8]
) -> Result<Vec<u8>>

fn random(dest: &mut [u8]) -> Result<()>

Loading content...

Implementors

impl Crypto for OpenSSLCrypto[src]

type RemotePublicKey = OpenSSLRemotePublicKey

type LocalKeyPair = OpenSSLLocalKeyPair

Loading content...