#![cfg_attr(docsrs, feature(doc_cfg))]
#![forbid(unsafe_code)]
#![allow(unknown_lints)]
#![warn(absolute_paths_not_starting_with_crate)]
#![warn(elided_lifetimes_in_paths)]
#![warn(explicit_outlives_requirements)]
#![warn(meta_variable_misuse)]
#![warn(missing_copy_implementations)]
#![warn(missing_debug_implementations)]
#![warn(missing_docs)]
#![warn(non_ascii_idents)]
#![warn(noop_method_call)]
#![warn(rust_2018_idioms)]
#![warn(single_use_lifetimes)]
#![warn(trivial_casts)]
#![warn(unreachable_pub)]
#![warn(unused_crate_dependencies)]
#![warn(unused_extern_crates)]
#![warn(unused_lifetimes)]
#![warn(unused_results)]
#![doc = include_str!("../README.md")]
mod constants;
pub mod sign;
pub mod verify;
use std::io::{copy, Read};
#[doc(no_inline)]
pub use ed25519_dalek::{
Digest, Sha512, Signature, SignatureError, SigningKey, VerifyingKey, KEYPAIR_LENGTH,
PUBLIC_KEY_LENGTH, SIGNATURE_LENGTH,
};
pub fn prehash<I>(input: &mut I) -> std::io::Result<Sha512>
where
I: ?Sized + Read,
{
let mut prehashed_message = Sha512::new();
let _: u64 = copy(input, &mut prehashed_message)?;
Ok(prehashed_message)
}
#[non_exhaustive]
#[derive(Debug, thiserror::Error)]
#[error(transparent)]
pub enum ZipsignError {
GatherSignatureData(#[from] self::sign::GatherSignatureDataError),
ReadSigningKeys(#[from] self::sign::ReadSigningKeysError),
#[cfg(feature = "sign-tar")]
#[cfg_attr(docsrs, doc(cfg(feature = "sign-tar")))]
SignTar(#[from] self::sign::SignTarError),
#[cfg(feature = "sign-zip")]
#[cfg_attr(docsrs, doc(cfg(feature = "sign-zip")))]
SignZip(#[from] self::sign::SignZipError),
NoMatch(#[from] self::verify::NoMatch),
CollectKeys(#[from] self::verify::CollectKeysError),
ReadSignatures(#[from] self::verify::ReadSignaturesError),
#[cfg(feature = "verify-tar")]
#[cfg_attr(docsrs, doc(cfg(feature = "verify-tar")))]
VerifyTar(#[from] self::verify::VerifyTarError),
#[cfg(feature = "verify-zip")]
#[cfg_attr(docsrs, doc(cfg(feature = "verify-zip")))]
VerifyZip(#[from] self::verify::VerifyZipError),
Io(#[from] std::io::Error),
}