96 lines
2.1 KiB
Python
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
|