1# coding: utf-8 2 3""" 4ASN.1 type classes for PDF signature structures. Adds extra oid mapping and 5value parsing to asn1crypto.x509.Extension() and asn1crypto.xms.CMSAttribute(). 6""" 7 8from __future__ import unicode_literals, division, absolute_import, print_function 9 10from .cms import CMSAttributeType, CMSAttribute 11from .core import ( 12 Boolean, 13 Integer, 14 Null, 15 ObjectIdentifier, 16 OctetString, 17 Sequence, 18 SequenceOf, 19 SetOf, 20) 21from .crl import CertificateList 22from .ocsp import OCSPResponse 23from .x509 import ( 24 Extension, 25 ExtensionId, 26 GeneralName, 27 KeyPurposeId, 28) 29 30 31class AdobeArchiveRevInfo(Sequence): 32 _fields = [ 33 ('version', Integer) 34 ] 35 36 37class AdobeTimestamp(Sequence): 38 _fields = [ 39 ('version', Integer), 40 ('location', GeneralName), 41 ('requires_auth', Boolean, {'optional': True, 'default': False}), 42 ] 43 44 45class OtherRevInfo(Sequence): 46 _fields = [ 47 ('type', ObjectIdentifier), 48 ('value', OctetString), 49 ] 50 51 52class SequenceOfCertificateList(SequenceOf): 53 _child_spec = CertificateList 54 55 56class SequenceOfOCSPResponse(SequenceOf): 57 _child_spec = OCSPResponse 58 59 60class SequenceOfOtherRevInfo(SequenceOf): 61 _child_spec = OtherRevInfo 62 63 64class RevocationInfoArchival(Sequence): 65 _fields = [ 66 ('crl', SequenceOfCertificateList, {'explicit': 0, 'optional': True}), 67 ('ocsp', SequenceOfOCSPResponse, {'explicit': 1, 'optional': True}), 68 ('other_rev_info', SequenceOfOtherRevInfo, {'explicit': 2, 'optional': True}), 69 ] 70 71 72class SetOfRevocationInfoArchival(SetOf): 73 _child_spec = RevocationInfoArchival 74 75 76ExtensionId._map['1.2.840.113583.1.1.9.2'] = 'adobe_archive_rev_info' 77ExtensionId._map['1.2.840.113583.1.1.9.1'] = 'adobe_timestamp' 78ExtensionId._map['1.2.840.113583.1.1.10'] = 'adobe_ppklite_credential' 79Extension._oid_specs['adobe_archive_rev_info'] = AdobeArchiveRevInfo 80Extension._oid_specs['adobe_timestamp'] = AdobeTimestamp 81Extension._oid_specs['adobe_ppklite_credential'] = Null 82KeyPurposeId._map['1.2.840.113583.1.1.5'] = 'pdf_signing' 83CMSAttributeType._map['1.2.840.113583.1.1.8'] = 'adobe_revocation_info_archival' 84CMSAttribute._oid_specs['adobe_revocation_info_archival'] = SetOfRevocationInfoArchival 85