class ExtKeyUsage(Extention): value = [ base.ObjectId('extKeyUsage'), base.Boolean(True), base.OctetString( "\x30\x10\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x04\x06\x04\x55\x1D\x25\x00" ) ]
class ContentInfo(base.Sequence): optional = [base.OctetString] infinite = True value = [base.ObjectId('data', name='data')]
class AttKeyPref(Attribute): value = [base.ObjectId('id-aa-encrypKeyPref'), base.Set([IssuerAndSerial(tag=0xA0)])] def setup(self, value): self.value[1].value[0].setup(value.value)
class AttSMIMECaps(Attribute): value = [base.ObjectId('smimeCapabilities'), base.Set([SMIMECaps()])]
def __init__(self, algo, val=None): value = [base.ObjectId(algo)] if val is not None: value += [base.Integer(val)] base.Sequence.__init__(self, value)
class AttMSEncryptionCert(Attribute): value = [base.ObjectId('Microsoft_Encryption_Cert'), base.Set([IssuerAndSerial()])] def setup(self, value): self.value[1].value[0].setup(value.value)
class AttMessageDigest(Attribute): value = [base.ObjectId('messageDigest'), base.Set([base.OctetString()])]
class AttSigningTime(Attribute): value = [base.ObjectId('signing-time'), base.Set([base.UTCTime()])]
class AttContentType(Attribute): value = [base.ObjectId('contentType'), base.Set([base.ObjectId('data')])]
class Attribute(base.Sequence): value = [base.ObjectId(), base.Set()] def setup(self, value): self.value[1].value[0].setup(value)
def __init__(self): self.contentType = base.ObjectId('signedData', name='contentType', check=True) self.signedData = SignedData() self.content = base.Optional(SignedData, [self.signedData], name='data', infinite=True) base.Sequence.__init__(self, [self.contentType, self.content])
class KeyUsage(Extention): value = [ base.ObjectId('keyUsage'), base.Boolean(True), base.OctetString("\x03\x02\x01\xFE") ]
class Extention(base.Sequence): value = [ base.ObjectId(name='extId'), base.Boolean(name='critical'), base.OctetString(name='value') ]
def __init__(self, algo='sha256WithRSAEncryption', **kwargs): base.Sequence.__init__(self, [base.ObjectId(algo, name="id"), base.Null()], **kwargs)
def __init__(self, objId, stringClass, default): self.holder = base.Sequence( [base.ObjectId(objId), stringClass(default)]) base.Set.__init__(self, [self.holder], name=objId)