use lib_q_prf::{
GoldKey256,
LegendreKey256,
};
use rand_core::{
CryptoRng,
Rng,
};
pub type PilotPrfTranscriptError = crate::dualring_prf::DualringPrfError;
pub type PilotPrfTranscriptMemberSecrets256 = crate::dualring_prf::DualringPrfMemberSecrets256;
pub type PilotPrfTranscriptSignature256 = crate::dualring_prf::DualringPrfSignature256;
pub type PilotPrfBatchItem256 = crate::dualring_prf::DualringPrfBatchItem256;
#[inline]
#[must_use]
pub fn pilot_prf_transcript_ring_digest(
members: &[PilotPrfTranscriptMemberSecrets256],
) -> [u8; 32] {
crate::dualring_prf::dualring_prf_ring_digest(members)
}
#[inline]
#[must_use = "signature may be invalid if the Result is not checked"]
pub fn pilot_prf_transcript_sign_u256<R: Rng + CryptoRng>(
rng: &mut R,
ring: &[PilotPrfTranscriptMemberSecrets256],
signer_index: usize,
leg_key: &LegendreKey256,
gold_key: &GoldKey256,
message: &[u8],
) -> Result<PilotPrfTranscriptSignature256, PilotPrfTranscriptError> {
crate::dualring_prf::dualring_prf_sign_u256(rng, ring, signer_index, leg_key, gold_key, message)
}
#[inline]
#[must_use = "verification outcome must be checked"]
pub fn pilot_prf_transcript_verify_u256(
ring: &[PilotPrfTranscriptMemberSecrets256],
signer_index: usize,
message: &[u8],
sig: &PilotPrfTranscriptSignature256,
) -> Result<(), PilotPrfTranscriptError> {
crate::dualring_prf::dualring_prf_verify_u256(ring, signer_index, message, sig)
}
#[inline]
#[must_use = "batch verification outcome must be checked"]
pub fn pilot_prf_transcript_verify_batch_u256(
ring: &[PilotPrfTranscriptMemberSecrets256],
items: &[PilotPrfBatchItem256],
) -> Result<(), PilotPrfTranscriptError> {
crate::dualring_prf::verify_dualring_prf_batch_u256(ring, items)
}