diff options
author | Rob Austein <sra@hactrn.net> | 2007-08-10 04:18:43 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-08-10 04:18:43 +0000 |
commit | 02c08f6fa5b119a74a1b66d62ecfc5d3ca8adc36 (patch) | |
tree | ad701e2d88dd8992d5ccd6ffe37cb9edb7f5e0f3 /pow/POW-0.7/lib/pkix.py | |
parent | cd0806578e330537a091f1f314b2ba2606f424a6 (diff) |
PKCS #10 support.
svn path=/pow/POW-0.7/lib/pkix.py; revision=855
Diffstat (limited to 'pow/POW-0.7/lib/pkix.py')
-rwxr-xr-x | pow/POW-0.7/lib/pkix.py | 41 |
1 files changed, 41 insertions, 0 deletions
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=''): |