diff options
author | Ilya Etingof <etingof@gmail.com> | 2016-03-27 23:45:18 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2016-03-27 23:45:18 +0200 |
commit | 2a5c89cd9890d34a77e8d9e2d715cf6bbef7bbd1 (patch) | |
tree | 4618d152b7cb1dc854844d26ba9955bf19bb9573 /pyasn1_modules/rfc4210.py | |
parent | bc17ad0b90ec51a01b306a88e48fc22a7befb895 (diff) | |
download | pyasn1-modules-2a5c89cd9890d34a77e8d9e2d715cf6bbef7bbd1.tar.gz |
pep8 reformatted
Diffstat (limited to 'pyasn1_modules/rfc4210.py')
-rw-r--r-- | pyasn1_modules/rfc4210.py | 410 |
1 files changed, 236 insertions, 174 deletions
diff --git a/pyasn1_modules/rfc4210.py b/pyasn1_modules/rfc4210.py index 9edbf89..5fde668 100644 --- a/pyasn1_modules/rfc4210.py +++ b/pyasn1_modules/rfc4210.py @@ -8,18 +8,27 @@ # # Based on Alex Railean's work # -from pyasn1.type import tag,namedtype,namedval,univ,constraint,char,useful +from pyasn1.type import tag, namedtype, namedval, univ, constraint, char, useful from pyasn1_modules import rfc2459, rfc2511, rfc2314 MAX = 64 -class KeyIdentifier(univ.OctetString): pass -class CMPCertificate(rfc2459.Certificate): pass +class KeyIdentifier(univ.OctetString): + pass -class OOBCert(CMPCertificate): pass -class CertAnnContent(CMPCertificate): pass +class CMPCertificate(rfc2459.Certificate): + pass + + +class OOBCert(CMPCertificate): + pass + + +class CertAnnContent(CMPCertificate): + pass + class PKIFreeText(univ.SequenceOf): """ @@ -28,6 +37,7 @@ class PKIFreeText(univ.SequenceOf): componentType = char.UTF8String() subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX) + class PollRepContent(univ.SequenceOf): """ PollRepContent ::= SEQUENCE OF SEQUENCE { @@ -36,14 +46,17 @@ class PollRepContent(univ.SequenceOf): reason PKIFreeText OPTIONAL } """ + class CertReq(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('certReqId', univ.Integer()), namedtype.NamedType('checkAfter', univ.Integer()), namedtype.OptionalNamedType('reason', PKIFreeText()) ) + componentType = CertReq() + class PollReqContent(univ.SequenceOf): """ PollReqContent ::= SEQUENCE OF SEQUENCE { @@ -51,12 +64,15 @@ class PollReqContent(univ.SequenceOf): } """ + class CertReq(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('certReqId', univ.Integer()) ) + componentType = CertReq() + class InfoTypeAndValue(univ.Sequence): """ InfoTypeAndValue ::= SEQUENCE { @@ -68,17 +84,23 @@ class InfoTypeAndValue(univ.Sequence): namedtype.OptionalNamedType('infoValue', univ.Any()) ) + class GenRepContent(univ.SequenceOf): componentType = InfoTypeAndValue() + class GenMsgContent(univ.SequenceOf): componentType = InfoTypeAndValue() -class PKIConfirmContent(univ.Null): pass + +class PKIConfirmContent(univ.Null): + pass + class CRLAnnContent(univ.SequenceOf): componentType = rfc2459.CertificateList() + class CAKeyUpdAnnContent(univ.Sequence): """ CAKeyUpdAnnContent ::= SEQUENCE { @@ -93,6 +115,7 @@ class CAKeyUpdAnnContent(univ.Sequence): namedtype.NamedType('newWithNew', CMPCertificate()) ) + class RevDetails(univ.Sequence): """ RevDetails ::= SEQUENCE { @@ -104,10 +127,12 @@ class RevDetails(univ.Sequence): namedtype.NamedType('certDetails', rfc2511.CertTemplate()), namedtype.OptionalNamedType('crlEntryDetails', rfc2459.Extensions()) ) - + + class RevReqContent(univ.SequenceOf): componentType = RevDetails() + class CertOrEncCert(univ.Choice): """ CertOrEncCert ::= CHOICE { @@ -118,14 +143,15 @@ class CertOrEncCert(univ.Choice): componentType = namedtype.NamedTypes( namedtype.NamedType('certificate', CMPCertificate().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) - ) - ), + ) + ), namedtype.NamedType('encryptedCert', rfc2511.EncryptedValue().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) - ) ) + ) ) + class CertifiedKeyPair(univ.Sequence): """ CertifiedKeyPair ::= SEQUENCE { @@ -137,19 +163,20 @@ class CertifiedKeyPair(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('certOrEncCert', CertOrEncCert()), namedtype.OptionalNamedType('privateKey', rfc2511.EncryptedValue().subtype( - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) + ) + ), namedtype.OptionalNamedType('publicationInfo', rfc2511.PKIPublicationInfo().subtype( - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) - ) + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) ) + ) ) - + class POPODecKeyRespContent(univ.SequenceOf): componentType = univ.Integer() + class Challenge(univ.Sequence): """ Challenge ::= SEQUENCE { @@ -164,6 +191,7 @@ class Challenge(univ.Sequence): namedtype.NamedType('challenge', univ.OctetString()) ) + class PKIStatus(univ.Integer): """ PKIStatus ::= INTEGER { @@ -185,7 +213,8 @@ class PKIStatus(univ.Integer): ('revocationNotification', 5), ('keyUpdateWarning', 6) ) - + + class PKIFailureInfo(univ.BitString): """ PKIFailureInfo ::= BIT STRING { @@ -247,6 +276,7 @@ class PKIFailureInfo(univ.BitString): ('duplicateCertReq', 26) ) + class PKIStatusInfo(univ.Sequence): """ PKIStatusInfo ::= SEQUENCE { @@ -259,7 +289,8 @@ class PKIStatusInfo(univ.Sequence): namedtype.NamedType('status', PKIStatus()), namedtype.OptionalNamedType('statusString', PKIFreeText()), namedtype.OptionalNamedType('failInfo', PKIFailureInfo()) - ) + ) + class ErrorMsgContent(univ.Sequence): """ @@ -277,6 +308,7 @@ class ErrorMsgContent(univ.Sequence): namedtype.OptionalNamedType('errorDetails', PKIFreeText()) ) + class CertStatus(univ.Sequence): """ CertStatus ::= SEQUENCE { @@ -291,9 +323,11 @@ class CertStatus(univ.Sequence): namedtype.OptionalNamedType('statusInfo', PKIStatusInfo()) ) + class CertConfirmContent(univ.SequenceOf): componentType = CertStatus() + class RevAnnContent(univ.Sequence): """ RevAnnContent ::= SEQUENCE { @@ -312,6 +346,7 @@ class RevAnnContent(univ.Sequence): namedtype.OptionalNamedType('crlDetails', rfc2459.Extensions()) ) + class RevRepContent(univ.Sequence): """ RevRepContent ::= SEQUENCE { @@ -324,21 +359,22 @@ class RevRepContent(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('status', PKIStatusInfo()), namedtype.OptionalNamedType('revCerts', univ.SequenceOf( - componentType=rfc2511.CertId() - ).subtype( - subtypeSpec=constraint.ValueSizeConstraint(1, MAX), - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) - ) - ), + componentType=rfc2511.CertId() + ).subtype( + subtypeSpec=constraint.ValueSizeConstraint(1, MAX), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) + ) + ), namedtype.OptionalNamedType('crls', univ.SequenceOf( - componentType=rfc2459.CertificateList() - ).subtype( - subtypeSpec=constraint.ValueSizeConstraint(1, MAX), - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) - ) + componentType=rfc2459.CertificateList() + ).subtype( + subtypeSpec=constraint.ValueSizeConstraint(1, MAX), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) ) + ) ) + class KeyRecRepContent(univ.Sequence): """ KeyRecRepContent ::= SEQUENCE { @@ -354,24 +390,25 @@ class KeyRecRepContent(univ.Sequence): namedtype.NamedType('status', PKIStatusInfo()), namedtype.OptionalNamedType('newSigCert', CMPCertificate().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) - ) - ), + ) + ), namedtype.OptionalNamedType('caCerts', univ.SequenceOf( - componentType=CMPCertificate() - ).subtype( - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1), - subtypeSpec=constraint.ValueSizeConstraint(1, MAX) - ) - ), + componentType=CMPCertificate() + ).subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1), + subtypeSpec=constraint.ValueSizeConstraint(1, MAX) + ) + ), namedtype.OptionalNamedType('keyPairHist', univ.SequenceOf( - componentType=CertifiedKeyPair() - ).subtype( - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2), - subtypeSpec=constraint.ValueSizeConstraint(1, MAX) - ) + componentType=CertifiedKeyPair() + ).subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2), + subtypeSpec=constraint.ValueSizeConstraint(1, MAX) ) + ) ) - + + class CertResponse(univ.Sequence): """ CertResponse ::= SEQUENCE { @@ -388,6 +425,7 @@ class CertResponse(univ.Sequence): namedtype.OptionalNamedType('rspInfo', univ.OctetString()) ) + class CertRepMessage(univ.Sequence): """ CertRepMessage ::= SEQUENCE { @@ -398,20 +436,22 @@ class CertRepMessage(univ.Sequence): """ componentType = namedtype.NamedTypes( namedtype.OptionalNamedType('caPubs', univ.SequenceOf( - componentType=CMPCertificate() - ).subtype( - subtypeSpec=constraint.ValueSizeConstraint(1, MAX), - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1) - ) - ), + componentType=CMPCertificate() + ).subtype( + subtypeSpec=constraint.ValueSizeConstraint(1, MAX), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) + ) + ), namedtype.NamedType('response', univ.SequenceOf( - componentType=CertResponse()) - ) + componentType=CertResponse()) + ) ) + class POPODecKeyChallContent(univ.SequenceOf): componentType = Challenge() + class OOBCertHash(univ.Sequence): """ OOBCertHash ::= SEQUENCE { @@ -423,16 +463,17 @@ class OOBCertHash(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.OptionalNamedType('hashAlg', rfc2459.AlgorithmIdentifier().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,0) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) + ) + ), namedtype.OptionalNamedType('certId', rfc2511.CertId().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) + ) + ), namedtype.NamedType('hashVal', univ.BitString()) ) + # pyasn1 does not naturally handle recursive definitions, thus this hack: # NestedMessageContent ::= PKIMessages class NestedMessageContent(univ.SequenceOf): @@ -441,6 +482,7 @@ class NestedMessageContent(univ.SequenceOf): """ componentType = univ.Any() + class DHBMParameter(univ.Sequence): """ DHBMParameter ::= SEQUENCE { @@ -455,8 +497,10 @@ class DHBMParameter(univ.Sequence): namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier()) ) + id_DHBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.30') + class PBMParameter(univ.Sequence): """ PBMParameter ::= SEQUENCE { @@ -468,22 +512,28 @@ class PBMParameter(univ.Sequence): """ componentType = namedtype.NamedTypes( namedtype.NamedType('salt', univ.OctetString().subtype( - subtypeSpec=constraint.ValueSizeConstraint(0, 128) - ) - ), + subtypeSpec=constraint.ValueSizeConstraint(0, 128) + ) + ), namedtype.NamedType('owf', rfc2459.AlgorithmIdentifier()), namedtype.NamedType('iterationCount', univ.Integer()), namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier()) ) + id_PasswordBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.13') -class PKIProtection(univ.BitString): pass + +class PKIProtection(univ.BitString): + pass + # pyasn1 does not naturally handle recursive definitions, thus this hack: # NestedMessageContent ::= PKIMessages -nestedMessageContent = NestedMessageContent().subtype(explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20)) - +nestedMessageContent = NestedMessageContent().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 20)) + + class PKIBody(univ.Choice): """ PKIBody ::= CHOICE { -- message-specific body elements @@ -518,114 +568,114 @@ class PKIBody(univ.Choice): """ componentType = namedtype.NamedTypes( namedtype.NamedType('ir', rfc2511.CertReqMessages().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,0) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) + ) + ), namedtype.NamedType('ip', CertRepMessage().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) + ) + ), namedtype.NamedType('cr', rfc2511.CertReqMessages().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,2) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2) + ) + ), namedtype.NamedType('cp', CertRepMessage().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,3) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3) + ) + ), namedtype.NamedType('p10cr', rfc2314.CertificationRequest().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,4) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4) + ) + ), namedtype.NamedType('popdecc', POPODecKeyChallContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,5) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5) + ) + ), namedtype.NamedType('popdecr', POPODecKeyRespContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,6) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6) + ) + ), namedtype.NamedType('kur', rfc2511.CertReqMessages().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,7) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7) + ) + ), namedtype.NamedType('kup', CertRepMessage().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,8) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8) + ) + ), namedtype.NamedType('krr', rfc2511.CertReqMessages().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,9) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9) + ) + ), namedtype.NamedType('krp', KeyRecRepContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,10) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 10) + ) + ), namedtype.NamedType('rr', RevReqContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,11) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 11) + ) + ), namedtype.NamedType('rp', RevRepContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,12) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 12) + ) + ), namedtype.NamedType('ccr', rfc2511.CertReqMessages().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,13) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 13) + ) + ), namedtype.NamedType('ccp', CertRepMessage().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,14) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 14) + ) + ), namedtype.NamedType('ckuann', CAKeyUpdAnnContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,15) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 15) + ) + ), namedtype.NamedType('cann', CertAnnContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,16) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 16) + ) + ), namedtype.NamedType('rann', RevAnnContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,17) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 17) + ) + ), namedtype.NamedType('crlann', CRLAnnContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,18) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 18) + ) + ), namedtype.NamedType('pkiconf', PKIConfirmContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,19) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 19) + ) + ), namedtype.NamedType('nested', nestedMessageContent), -# namedtype.NamedType('nested', NestedMessageContent().subtype( -# explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20) -# ) -# ), + # namedtype.NamedType('nested', NestedMessageContent().subtype( + # explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20) + # ) + # ), namedtype.NamedType('genm', GenMsgContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,21) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 21) + ) + ), namedtype.NamedType('gen', GenRepContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,22) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 22) + ) + ), namedtype.NamedType('error', ErrorMsgContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,23) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 23) + ) + ), namedtype.NamedType('certConf', CertConfirmContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,24) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 24) + ) + ), namedtype.NamedType('pollReq', PollReqContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,25) - ) - ), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 25) + ) + ), namedtype.NamedType('pollRep', PollRepContent().subtype( - explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,26) - ) + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 26) ) + ) ) @@ -650,32 +700,40 @@ class PKIHeader(univ.Sequence): """ componentType = namedtype.NamedTypes( namedtype.NamedType('pvno', univ.Integer( - namedValues=namedval.NamedValues( - ('cmp1999', 1), - ('cmp2000', 2) - ) + namedValues=namedval.NamedValues( + ('cmp1999', 1), + ('cmp2000', 2) ) - ), + ) + ), namedtype.NamedType('sender', rfc2459.GeneralName()), namedtype.NamedType('recipient', rfc2459.GeneralName()), - namedtype.OptionalNamedType('messageTime', useful.GeneralizedTime().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), + namedtype.OptionalNamedType('messageTime', useful.GeneralizedTime().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.OptionalNamedType('protectionAlg', rfc2459.AlgorithmIdentifier().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))), - namedtype.OptionalNamedType('senderKID', rfc2459.KeyIdentifier().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))), - namedtype.OptionalNamedType('recipKID', rfc2459.KeyIdentifier().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))), - namedtype.OptionalNamedType('transactionID', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))), - namedtype.OptionalNamedType('senderNonce', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))), - namedtype.OptionalNamedType('recipNonce', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))), - namedtype.OptionalNamedType('freeText', PKIFreeText().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7))), + namedtype.OptionalNamedType('senderKID', rfc2459.KeyIdentifier().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))), + namedtype.OptionalNamedType('recipKID', rfc2459.KeyIdentifier().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))), + namedtype.OptionalNamedType('transactionID', univ.OctetString().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))), + namedtype.OptionalNamedType('senderNonce', univ.OctetString().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))), + namedtype.OptionalNamedType('recipNonce', univ.OctetString().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))), + namedtype.OptionalNamedType('freeText', PKIFreeText().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7))), namedtype.OptionalNamedType('generalInfo', - univ.SequenceOf( - componentType=InfoTypeAndValue().subtype( - subtypeSpec=constraint.ValueSizeConstraint(1, MAX), - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8) - ) - ) - ) - ) + univ.SequenceOf( + componentType=InfoTypeAndValue().subtype( + subtypeSpec=constraint.ValueSizeConstraint(1, MAX), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8) + ) + ) + ) + ) + class ProtectedPart(univ.Sequence): """ @@ -687,7 +745,8 @@ class ProtectedPart(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('header', PKIHeader()), namedtype.NamedType('infoValue', PKIBody()) - ) + ) + class PKIMessage(univ.Sequence): """ @@ -701,17 +760,19 @@ class PKIMessage(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('header', PKIHeader()), namedtype.NamedType('body', PKIBody()), - namedtype.OptionalNamedType('protection', PKIProtection().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), - namedtype.OptionalNamedType( 'extraCerts', - univ.SequenceOf( - componentType=CMPCertificate() - ).subtype( - subtypeSpec=constraint.ValueSizeConstraint(1, MAX), - explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) - ) - ) + namedtype.OptionalNamedType('protection', PKIProtection().subtype( + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), + namedtype.OptionalNamedType('extraCerts', + univ.SequenceOf( + componentType=CMPCertificate() + ).subtype( + subtypeSpec=constraint.ValueSizeConstraint(1, MAX), + explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) + ) + ) ) + class PKIMessages(univ.SequenceOf): """ PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage @@ -719,6 +780,7 @@ class PKIMessages(univ.SequenceOf): componentType = PKIMessage() subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX) + # pyasn1 does not naturally handle recursive definitions, thus this hack: # NestedMessageContent ::= PKIMessages NestedMessageContent.componentType = PKIMessages() |