96 lines
2.1 KiB
Python

"""
Module for AdES reporting data.
Defines enums for all AdES validation statuses defined in ETSI EN 319 102-1,
clause 5.1.3.
"""
import enum
__all__ = [
'AdESStatus',
'AdESSubIndic',
'AdESPassed',
'AdESFailure',
'AdESIndeterminate',
]
# TODO document these
class AdESStatus(enum.Enum):
PASSED = enum.auto()
INDETERMINATE = enum.auto()
FAILED = enum.auto()
class AdESSubIndic:
@property
def status(self) -> AdESStatus:
raise NotImplementedError
@property
def standard_name(self):
raise NotImplementedError
class AdESPassed(AdESSubIndic, enum.Enum):
OK = enum.auto()
@property
def status(self) -> AdESStatus:
return AdESStatus.PASSED
@property
def standard_name(self):
return self.name
class AdESFailure(AdESSubIndic, enum.Enum):
FORMAT_FAILURE = enum.auto()
HASH_FAILURE = enum.auto()
SIG_CRYPTO_FAILURE = enum.auto()
REVOKED = enum.auto()
NOT_YET_VALID = enum.auto()
@property
def status(self):
return AdESStatus.FAILED
@property
def standard_name(self):
return self.name
class AdESIndeterminate(AdESSubIndic, enum.Enum):
SIG_CONSTRAINTS_FAILURE = enum.auto()
CHAIN_CONSTRAINTS_FAILURE = enum.auto()
CERTIFICATE_CHAIN_GENERAL_FAILURE = enum.auto()
CRYPTO_CONSTRAINTS_FAILURE = enum.auto()
EXPIRED = enum.auto()
NOT_YET_VALID = enum.auto()
POLICY_PROCESSING_ERROR = enum.auto()
SIGNATURE_POLICY_NOT_AVAILABLE = enum.auto()
TIMESTAMP_ORDER_FAILURE = enum.auto()
NO_SIGNING_CERTIFICATE_FOUND = enum.auto()
NO_CERTIFICATE_CHAIN_FOUND = enum.auto()
REVOKED_NO_POE = enum.auto()
REVOKED_CA_NO_POE = enum.auto()
OUT_OF_BOUNDS_NO_POE = enum.auto()
REVOCATION_OUT_OF_BOUNDS_NO_POE = enum.auto()
OUT_OF_BOUNDS_NOT_REVOKED = enum.auto()
CRYPTO_CONSTRAINTS_FAILURE_NO_POE = enum.auto()
NO_POE = enum.auto()
TRY_LATER = enum.auto()
SIGNED_DATA_NOT_FOUND = enum.auto()
GENERIC = enum.auto()
@property
def status(self):
return AdESStatus.INDETERMINATE
@property
def standard_name(self):
return self.name