From 02c08f6fa5b119a74a1b66d62ecfc5d3ca8adc36 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Fri, 10 Aug 2007 04:18:43 +0000 Subject: PKCS #10 support. svn path=/pow/POW-0.7/lib/pkix.py; revision=855 --- pow/POW-0.7/lib/pkix.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'pow/POW-0.7/lib/pkix.py') diff --git a/pow/POW-0.7/lib/pkix.py b/pow/POW-0.7/lib/pkix.py index c2559522..eb2b513d 100755 --- a/pow/POW-0.7/lib/pkix.py +++ b/pow/POW-0.7/lib/pkix.py @@ -1112,6 +1112,47 @@ class CertificateList(Sequence): return rsa.verify( self.signature.get(), digest.digest(), digestType ) #---------- CRL ----------# +#---------- PKCS10 ----------# + +# My ASN.1 foo isn't quite up to X.501 or PKCS #10, so this is partly +# based on a dump of what OpenSSL generates. Seems to work, but I +# could be wrong. I'm fairly certain that I don't really understand +# the X.501 Attribute definition. + +class PKCS10AttributeSet(SetOf): + def __init__(self, optional=0, default=''): + SetOf.__init__(self, Extensions, optional, default) + +class PKCS10Attribute(Sequence): + def __init__(self, optional=0, default=''): + self.oid = Oid() + self.value = PKCS10AttributeSet() + contents = [ self.oid, self.value ] + Sequence.__init__(self, contents, optional, default) + +class PKCS10Attributes(SetOf): + def __init__(self, optional=0, default=''): + SetOf.__init__(self, PKCS10Attribute, optional, default) + +class CertificationRequestInfo(Sequence): + def __init__(self, optional=0, default=''): + self.version = Integer() + self.subject = Name() + self.subjectPublicKeyInfo = SubjectPublicKeyInfo() + self.attributes = PKCS10Attributes() + self.attributes.implied( CLASS_CONTEXT, FORM_CONSTRUCTED, 0 ) + contents = [ self.version, self.subject, self.subjectPublicKeyInfo, self.attributes ] + Sequence.__init__(self, contents, optional, default) + +class CertificationRequest(Sequence): + def __init__(self, optional=0, default=''): + self.certificationRequestInfo = CertificationRequestInfo() + self.signatureAlgorithm = AlgorithmIdentifier() + self.signatureValue = AltBitString() + contents = [ self.certificationRequestInfo, self.signatureAlgorithm, self.signatureValue ] + Sequence.__init__(self, contents, optional, default) + +#---------- PKCS10 ----------# #---------- GeneralNames object support ----------# class OtherName(Sequence): def __init__(self, optional=0, default=''): -- cgit v1.2.3