use thiserror::Error;
#[derive(Debug, Error)]
pub enum VerificationError {
#[error("error-atproto-record-verification-1 No signatures field found in record")]
NoSignaturesField,
#[error("error-atproto-record-verification-2 Missing issuer field in signature object")]
MissingIssuerField,
#[error("error-atproto-record-verification-3 Missing signature field in signature object")]
MissingSignatureField,
#[error("error-atproto-record-verification-4 Record serialization failed: {error}")]
RecordSerializationFailed {
#[from]
error: serde_ipld_dagcbor::EncodeError<std::collections::TryReserveError>,
},
#[error("error-atproto-record-verification-5 Signature verification failed: {error}")]
SignatureVerificationFailed {
error: anyhow::Error,
},
#[error("error-atproto-record-verification-6 No valid signature found for issuer: {issuer}")]
NoValidSignatureForIssuer {
issuer: String,
},
#[error("error-atproto-record-verification-7 Signature object must be a JSON object")]
InvalidSignatureObjectType,
#[error("error-atproto-record-verification-8 Signature object missing field: {field}")]
SignatureObjectMissingField {
field: String,
},
#[error("error-atproto-record-verification-9 Key operation failed: {error}")]
KeyOperationFailed {
#[from]
error: atproto_identity::errors::KeyError,
},
#[error("error-atproto-record-verification-10 Signature decoding failed: {error}")]
SignatureDecodingFailed {
error: multibase::Error,
},
#[error("error-atproto-record-verification-11 Cryptographic validation failed: {error}")]
CryptographicValidationFailed {
error: atproto_identity::errors::KeyError,
},
}
#[derive(Debug, Error)]
pub enum AturiError {
#[error("error-atproto-record-aturi-1 Invalid AT-URI format: missing 'at://' prefix")]
MissingPrefix,
#[error("error-atproto-record-aturi-2 Invalid AT-URI format: trailing slash not permitted")]
TrailingSlash,
#[error("error-atproto-record-aturi-3 Authority component missing from AT-URI")]
AuthorityMissing,
#[error("error-atproto-record-aturi-4 Unsupported authority type: handle not permitted")]
HandleNotSupported,
#[error("error-atproto-record-aturi-5 Authority parsing failed: {error}")]
AuthorityParsingFailed {
#[from]
error: atproto_identity::errors::ResolveError,
},
#[error("error-atproto-record-aturi-6 Collection component missing from AT-URI")]
CollectionMissing,
#[error("error-atproto-record-aturi-7 Record key component missing from AT-URI")]
RecordKeyMissing,
#[error("error-atproto-record-aturi-8 Collection component cannot be empty")]
EmptyCollection,
#[error("error-atproto-record-aturi-9 Record key component cannot be empty")]
EmptyRecordKey,
}