use crate::*;
use libsodium_sys::crypto_generichash_state as HashState;
use zeroize::Zeroize;
#[repr(align(64))]
pub struct SignState {
pub h: HashState,
pub nonce: [u8; SCALARBYTES],
pub r: [u8; BYTES],
pub challenge: [u8; CHALLENGEBYTES]
}
impl Default for SignState {
fn default() -> Self {
Self {
h: HashState { opaque: [0u8; 384] },
nonce: [0u8; SCALARBYTES],
r: [0u8; BYTES],
challenge: [0u8; CHALLENGEBYTES]
}
}
}
impl Drop for SignState {
fn drop(&mut self) {
self.h.opaque.zeroize();
self.nonce.zeroize();
self.r.zeroize();
self.challenge.zeroize();
}
}