use crate::SpiffeIdError;
use x509_parser::asn1_rs::Oid;
use x509_parser::error::X509Error;
#[derive(Debug, thiserror::Error, PartialEq)]
#[non_exhaustive]
pub enum CertificateError {
#[error("X.509 extension is missing: {0}")]
MissingX509Extension(Oid<'static>),
#[error("unexpected X.509 extension: {0}")]
UnexpectedExtension(String),
#[error("failed parsing X.509 certificate")]
ParseX509Certificate(#[from] X509Error),
#[error("certificate is missing SPIFFE ID in URI SAN")]
MissingSpiffeId,
#[error("certificate contains multiple URI SAN entries")]
MultipleUriSanEntries,
#[error("certificate contains multiple SPIFFE IDs in URI SAN")]
MultipleSpiffeIds,
#[error("certificate has too many URI SAN entries (max {max})")]
TooManyUriSanEntries {
max: usize,
},
#[error("certificate chain has too many certificates (max {max})")]
TooManyCertificates {
max: usize,
},
#[error("failed to parse SPIFFE ID from URI SAN: {0}")]
InvalidSpiffeId(#[from] SpiffeIdError),
}
#[derive(Debug, thiserror::Error, PartialEq)]
#[non_exhaustive]
pub enum PrivateKeyError {
#[error("failed decoding PKCS#8 private key")]
DecodePkcs8(pkcs8::Error),
}