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::encode;
use dryoc::classic::crypto_onetimeauth::{
    crypto_onetimeauth, crypto_onetimeauth_keygen, crypto_onetimeauth_verify, Mac,
};

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::encode;
use dryoc::classic::crypto_onetimeauth::{
    crypto_onetimeauth_final, crypto_onetimeauth_init, crypto_onetimeauth_keygen,
    crypto_onetimeauth_update, crypto_onetimeauth_verify, Mac,
};

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

Functions

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

Type Definitions

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