aboutsummaryrefslogtreecommitdiff
path: root/pow/POW-0.7/lib/pkix.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-08-10 04:18:43 +0000
committerRob Austein <sra@hactrn.net>2007-08-10 04:18:43 +0000
commit02c08f6fa5b119a74a1b66d62ecfc5d3ca8adc36 (patch)
treead701e2d88dd8992d5ccd6ffe37cb9edb7f5e0f3 /pow/POW-0.7/lib/pkix.py
parentcd0806578e330537a091f1f314b2ba2606f424a6 (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-xpow/POW-0.7/lib/pkix.py41
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=''):