rfc4210.py (14891B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\pyasn1_modules\rfc4210.py 2 from pyasn1.type import tag, namedtype, namedval, univ, constraint, char, useful 3 from pyasn1_modules import rfc2459, rfc2511, rfc2314 4 MAX = 64 5 6 class KeyIdentifier(univ.OctetString): 7 pass 8 9 10 class CMPCertificate(rfc2459.Certificate): 11 pass 12 13 14 class OOBCert(CMPCertificate): 15 pass 16 17 18 class CertAnnContent(CMPCertificate): 19 pass 20 21 22 class PKIFreeText(univ.SequenceOf): 23 componentType = char.UTF8String() 24 subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX) 25 26 27 class PollRepContent(univ.SequenceOf): 28 29 class CertReq(univ.Sequence): 30 componentType = namedtype.NamedTypes(namedtype.NamedType('certReqId', univ.Integer()), namedtype.NamedType('checkAfter', univ.Integer()), namedtype.OptionalNamedType('reason', PKIFreeText())) 31 32 componentType = CertReq() 33 34 35 class PollReqContent(univ.SequenceOf): 36 37 class CertReq(univ.Sequence): 38 componentType = namedtype.NamedTypes(namedtype.NamedType('certReqId', univ.Integer())) 39 40 componentType = CertReq() 41 42 43 class InfoTypeAndValue(univ.Sequence): 44 componentType = namedtype.NamedTypes(namedtype.NamedType('infoType', univ.ObjectIdentifier()), namedtype.OptionalNamedType('infoValue', univ.Any())) 45 46 47 class GenRepContent(univ.SequenceOf): 48 componentType = InfoTypeAndValue() 49 50 51 class GenMsgContent(univ.SequenceOf): 52 componentType = InfoTypeAndValue() 53 54 55 class PKIConfirmContent(univ.Null): 56 pass 57 58 59 class CRLAnnContent(univ.SequenceOf): 60 componentType = rfc2459.CertificateList() 61 62 63 class CAKeyUpdAnnContent(univ.Sequence): 64 componentType = namedtype.NamedTypes(namedtype.NamedType('oldWithNew', CMPCertificate()), namedtype.NamedType('newWithOld', CMPCertificate()), namedtype.NamedType('newWithNew', CMPCertificate())) 65 66 67 class RevDetails(univ.Sequence): 68 componentType = namedtype.NamedTypes(namedtype.NamedType('certDetails', rfc2511.CertTemplate()), namedtype.OptionalNamedType('crlEntryDetails', rfc2459.Extensions())) 69 70 71 class RevReqContent(univ.SequenceOf): 72 componentType = RevDetails() 73 74 75 class CertOrEncCert(univ.Choice): 76 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)))) 77 78 79 class CertifiedKeyPair(univ.Sequence): 80 componentType = namedtype.NamedTypes(namedtype.NamedType('certOrEncCert', CertOrEncCert()), namedtype.OptionalNamedType('privateKey', rfc2511.EncryptedValue().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))), namedtype.OptionalNamedType('publicationInfo', rfc2511.PKIPublicationInfo().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))) 81 82 83 class POPODecKeyRespContent(univ.SequenceOf): 84 componentType = univ.Integer() 85 86 87 class Challenge(univ.Sequence): 88 componentType = namedtype.NamedTypes(namedtype.OptionalNamedType('owf', rfc2459.AlgorithmIdentifier()), namedtype.NamedType('witness', univ.OctetString()), namedtype.NamedType('challenge', univ.OctetString())) 89 90 91 class PKIStatus(univ.Integer): 92 namedValues = namedval.NamedValues(('accepted', 0), ('grantedWithMods', 1), ('rejection', 2), ('waiting', 3), ('revocationWarning', 4), ('revocationNotification', 5), ('keyUpdateWarning', 6)) 93 94 95 class PKIFailureInfo(univ.BitString): 96 namedValues = namedval.NamedValues(('badAlg', 0), ('badMessageCheck', 1), ('badRequest', 2), ('badTime', 3), ('badCertId', 4), ('badDataFormat', 5), ('wrongAuthority', 6), ('incorrectData', 7), ('missingTimeStamp', 8), ('badPOP', 9), ('certRevoked', 10), ('certConfirmed', 11), ('wrongIntegrity', 12), ('badRecipientNonce', 13), ('timeNotAvailable', 14), ('unacceptedPolicy', 15), ('unacceptedExtension', 16), ('addInfoNotAvailable', 17), ('badSenderNonce', 18), ('badCertTemplate', 19), ('signerNotTrusted', 20), ('transactionIdInUse', 21), ('unsupportedVersion', 22), ('notAuthorized', 23), ('systemUnavail', 24), ('systemFailure', 25), ('duplicateCertReq', 26)) 97 98 99 class PKIStatusInfo(univ.Sequence): 100 componentType = namedtype.NamedTypes(namedtype.NamedType('status', PKIStatus()), namedtype.OptionalNamedType('statusString', PKIFreeText()), namedtype.OptionalNamedType('failInfo', PKIFailureInfo())) 101 102 103 class ErrorMsgContent(univ.Sequence): 104 componentType = namedtype.NamedTypes(namedtype.NamedType('pKIStatusInfo', PKIStatusInfo()), namedtype.OptionalNamedType('errorCode', univ.Integer()), namedtype.OptionalNamedType('errorDetails', PKIFreeText())) 105 106 107 class CertStatus(univ.Sequence): 108 componentType = namedtype.NamedTypes(namedtype.NamedType('certHash', univ.OctetString()), namedtype.NamedType('certReqId', univ.Integer()), namedtype.OptionalNamedType('statusInfo', PKIStatusInfo())) 109 110 111 class CertConfirmContent(univ.SequenceOf): 112 componentType = CertStatus() 113 114 115 class RevAnnContent(univ.Sequence): 116 componentType = namedtype.NamedTypes(namedtype.NamedType('status', PKIStatus()), namedtype.NamedType('certId', rfc2511.CertId()), namedtype.NamedType('willBeRevokedAt', useful.GeneralizedTime()), namedtype.NamedType('badSinceDate', useful.GeneralizedTime()), namedtype.OptionalNamedType('crlDetails', rfc2459.Extensions())) 117 118 119 class RevRepContent(univ.Sequence): 120 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))), namedtype.OptionalNamedType('crls', univ.SequenceOf(componentType=rfc2459.CertificateList()).subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX), explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))) 121 122 123 class KeyRecRepContent(univ.Sequence): 124 componentType = namedtype.NamedTypes(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))), namedtype.OptionalNamedType('keyPairHist', univ.SequenceOf(componentType=CertifiedKeyPair()).subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2), subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))) 125 126 127 class CertResponse(univ.Sequence): 128 componentType = namedtype.NamedTypes(namedtype.NamedType('certReqId', univ.Integer()), namedtype.NamedType('status', PKIStatusInfo()), namedtype.OptionalNamedType('certifiedKeyPair', CertifiedKeyPair()), namedtype.OptionalNamedType('rspInfo', univ.OctetString())) 129 130 131 class CertRepMessage(univ.Sequence): 132 componentType = namedtype.NamedTypes(namedtype.OptionalNamedType('caPubs', univ.SequenceOf(componentType=CMPCertificate()).subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX), explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))), namedtype.NamedType('response', univ.SequenceOf(componentType=CertResponse()))) 133 134 135 class POPODecKeyChallContent(univ.SequenceOf): 136 componentType = Challenge() 137 138 139 class OOBCertHash(univ.Sequence): 140 componentType = namedtype.NamedTypes(namedtype.OptionalNamedType('hashAlg', rfc2459.AlgorithmIdentifier().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))), namedtype.OptionalNamedType('certId', rfc2511.CertId().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))), namedtype.NamedType('hashVal', univ.BitString())) 141 142 143 class NestedMessageContent(univ.SequenceOf): 144 componentType = univ.Any() 145 146 147 class DHBMParameter(univ.Sequence): 148 componentType = namedtype.NamedTypes(namedtype.NamedType('owf', rfc2459.AlgorithmIdentifier()), namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier())) 149 150 151 id_DHBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.30') 152 153 class PBMParameter(univ.Sequence): 154 componentType = namedtype.NamedTypes(namedtype.NamedType('salt', univ.OctetString().subtype(subtypeSpec=constraint.ValueSizeConstraint(0, 128))), namedtype.NamedType('owf', rfc2459.AlgorithmIdentifier()), namedtype.NamedType('iterationCount', univ.Integer()), namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier())) 155 156 157 id_PasswordBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.13') 158 159 class PKIProtection(univ.BitString): 160 pass 161 162 163 nestedMessageContent = NestedMessageContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 20)) 164 165 class PKIBody(univ.Choice): 166 componentType = namedtype.NamedTypes(namedtype.NamedType('ir', rfc2511.CertReqMessages().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))), namedtype.NamedType('ip', CertRepMessage().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))), namedtype.NamedType('cr', rfc2511.CertReqMessages().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))), namedtype.NamedType('cp', CertRepMessage().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))), namedtype.NamedType('p10cr', rfc2314.CertificationRequest().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))), namedtype.NamedType('popdecc', POPODecKeyChallContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))), namedtype.NamedType('popdecr', POPODecKeyRespContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))), namedtype.NamedType('kur', rfc2511.CertReqMessages().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7))), namedtype.NamedType('kup', CertRepMessage().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))), namedtype.NamedType('krr', rfc2511.CertReqMessages().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9))), namedtype.NamedType('krp', KeyRecRepContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 10))), namedtype.NamedType('rr', RevReqContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 11))), namedtype.NamedType('rp', RevRepContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 12))), namedtype.NamedType('ccr', rfc2511.CertReqMessages().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 13))), namedtype.NamedType('ccp', CertRepMessage().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 14))), namedtype.NamedType('ckuann', CAKeyUpdAnnContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 15))), namedtype.NamedType('cann', CertAnnContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 16))), namedtype.NamedType('rann', RevAnnContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 17))), namedtype.NamedType('crlann', CRLAnnContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 18))), namedtype.NamedType('pkiconf', PKIConfirmContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 19))), namedtype.NamedType('nested', nestedMessageContent), namedtype.NamedType('genm', GenMsgContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 21))), namedtype.NamedType('gen', GenRepContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 22))), namedtype.NamedType('error', ErrorMsgContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 23))), namedtype.NamedType('certConf', CertConfirmContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 24))), namedtype.NamedType('pollReq', PollReqContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 25))), namedtype.NamedType('pollRep', PollRepContent().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 26)))) 167 168 169 class PKIHeader(univ.Sequence): 170 componentType = namedtype.NamedTypes(namedtype.NamedType('pvno', univ.Integer(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('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('generalInfo', univ.SequenceOf(componentType=InfoTypeAndValue().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX), explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8))))) 171 172 173 class ProtectedPart(univ.Sequence): 174 componentType = namedtype.NamedTypes(namedtype.NamedType('header', PKIHeader()), namedtype.NamedType('infoValue', PKIBody())) 175 176 177 class PKIMessage(univ.Sequence): 178 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)))) 179 180 181 class PKIMessages(univ.SequenceOf): 182 componentType = PKIMessage() 183 subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX) 184 185 186 NestedMessageContent.componentType = PKIMessages() 187 nestedMessageContent.componentType = PKIMessages()