Module crypto_onetimeauth

Source
Expand description

§One-time authentication

Implements one-time authentication using the Poly1305 algorithm, compatible with libsodium’s crypto_onetimeauth_* functions.

§Classic API single-part example

use base64::Engine as _;
use base64::engine::general_purpose;
use dryoc::classic::crypto_onetimeauth::{
    Mac, crypto_onetimeauth, crypto_onetimeauth_keygen, crypto_onetimeauth_verify,
};

let key = crypto_onetimeauth_keygen();
let mut mac = Mac::default();

crypto_onetimeauth(&mut mac, b"Data to authenticate", &key);

// This should be valid
crypto_onetimeauth_verify(&mac, b"Data to authenticate", &key).expect("failed to authenticate");

// This should not be valid
crypto_onetimeauth_verify(&mac, b"Invalid data", &key).expect_err("should not authenticate");

§Classic API multi-part example

use base64::Engine as _;
use base64::engine::general_purpose;
use dryoc::classic::crypto_onetimeauth::{
    Mac, crypto_onetimeauth_final, crypto_onetimeauth_init, crypto_onetimeauth_keygen,
    crypto_onetimeauth_update, crypto_onetimeauth_verify,
};

let key = crypto_onetimeauth_keygen();
let mut mac = Mac::default();

let mut state = crypto_onetimeauth_init(&key);
crypto_onetimeauth_update(&mut state, b"Multi-part");
crypto_onetimeauth_update(&mut state, b"data");
crypto_onetimeauth_final(state, &mut mac);

// This should be valid
crypto_onetimeauth_verify(&mac, b"Multi-partdata", &key).expect("failed to authenticate");

// This should not be valid
crypto_onetimeauth_verify(&mac, b"Invalid data", &key).expect_err("should not authenticate");

Structs§

OnetimeauthState
Internal state for crypto_onetimeauth.

Functions§

crypto_onetimeauth
Authenticates message using key, and places the result into mac. key should only be used once.
crypto_onetimeauth_final
Finalizes the message authentication code for state, and places the result into output.
crypto_onetimeauth_init
Initializes the incremental Poly1305-based one-time authentication.
crypto_onetimeauth_keygen
Generates a random key using copy_randombytes, suitable for use with crypto_onetimeauth_init and crypto_onetimeauth. The key should only be used once.
crypto_onetimeauth_update
Updates state for the one-time authentication function, based on input.
crypto_onetimeauth_verify
Verifies that mac is the correct authenticator for message using key. Returns Ok(()) if the message authentication code is valid.

Type Aliases§

Key
Key type for use with one-time authentication.
Mac
Message authentication code type for use with one-time authentication.