o
    $ªZÙn  ã                   @   s¢  d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dlm	Z	 d d	lm
Z
 d d
lmZ edƒZG dd„ dejƒZG dd„ de
jƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG d d!„ d!ejƒZG d"d#„ d#ejƒZG d$d%„ d%ejƒZG d&d'„ d'ejƒZ G d(d)„ d)ejƒZ!G d*d+„ d+ej"ƒZ#G d,d-„ d-ejƒZ$G d.d/„ d/ejƒZ%G d0d1„ d1ejƒZ&G d2d3„ d3ej'ƒZ(G d4d5„ d5ej)ƒZ*G d6d7„ d7ejƒZ+G d8d9„ d9ejƒZ,G d:d;„ d;ejƒZ-G d<d=„ d=ejƒZ.G d>d?„ d?ejƒZ/G d@dA„ dAejƒZ0G dBdC„ dCejƒZ1G dDdE„ dEejƒZ2G dFdG„ dGejƒZ3G dHdI„ dIejƒZ4G dJdK„ dKejƒZ5G dLdM„ dMejƒZ6G dNdO„ dOejƒZ7e 8dP¡Z9G dQdR„ dRejƒZ:e 8dS¡Z;G dTdU„ dUej)ƒZ<e6ƒ j=e >ej?ej@dV¡dWZAG dXdY„ dYej"ƒZBG dZd[„ d[ejƒZCG d\d]„ d]ejƒZDG d^d_„ d_ejƒZEG d`da„ daejƒZFeFƒ e6_GeFƒ eA_GdbS )cé    )Úchar)Ú
constraint)Ú	namedtype)Únamedval)Útag)Úuniv)Úuseful)Úrfc2314)Úrfc2459)Úrfc2511Úinfc                   @   ó   e Zd ZdS )ÚKeyIdentifierN©Ú__name__Ú
__module__Ú__qualname__© r   r   ú8/usr/lib/python3/dist-packages/pyasn1_modules/rfc4210.pyr      ó    r   c                   @   r   )ÚCMPCertificateNr   r   r   r   r   r      r   r   c                   @   r   )ÚOOBCertNr   r   r   r   r   r   "   r   r   c                   @   r   )ÚCertAnnContentNr   r   r   r   r   r   &   r   r   c                   @   s,   e Zd ZdZe ¡ Zejj	e
 de¡ Z	dS )ÚPKIFreeTextz>
    PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
    é   N)r   r   r   Ú__doc__r   Ú
UTF8StringÚcomponentTyper   Ú
SequenceOfÚsubtypeSpecr   ÚValueSizeConstraintÚMAXr   r   r   r   r   *   s    r   c                   @   ó(   e Zd ZdZG dd„ dejƒZeƒ ZdS )ÚPollRepContentzÚ
         PollRepContent ::= SEQUENCE OF SEQUENCE {
         certReqId              INTEGER,
         checkAfter             INTEGER,  -- time in seconds
         reason                 PKIFreeText OPTIONAL
     }
    c                   @   s<   e Zd Ze e de ¡ ¡e de ¡ ¡e de	ƒ ¡¡Z
dS )zPollRepContent.CertReqÚ	certReqIdÚ
checkAfterÚreasonN)r   r   r   r   Ú
NamedTypesÚ	NamedTyper   ÚIntegerÚOptionalNamedTyper   r   r   r   r   r   ÚCertReq;   s    ýr+   N©r   r   r   r   r   ÚSequencer+   r   r   r   r   r   r#   2   s    
r#   c                   @   r"   )ÚPollReqContentzh
         PollReqContent ::= SEQUENCE OF SEQUENCE {
         certReqId              INTEGER
     }

    c                   @   s"   e Zd Ze e de ¡ ¡¡ZdS )zPollReqContent.CertReqr$   N)	r   r   r   r   r'   r(   r   r)   r   r   r   r   r   r+   M   s    ÿr+   Nr,   r   r   r   r   r.   E   s    
r.   c                   @   s4   e Zd ZdZe e de ¡ ¡e 	de 
¡ ¡¡ZdS )ÚInfoTypeAndValuez—
    InfoTypeAndValue ::= SEQUENCE {
     infoType               OBJECT IDENTIFIER,
     infoValue              ANY DEFINED BY infoType  OPTIONAL
    }ÚinfoTypeÚ	infoValueN)r   r   r   r   r   r'   r(   r   ÚObjectIdentifierr*   ÚAnyr   r   r   r   r   r/   U   s    þr/   c                   @   ó   e Zd Zeƒ ZdS )ÚGenRepContentN©r   r   r   r/   r   r   r   r   r   r5   a   ó    
r5   c                   @   r4   )ÚGenMsgContentNr6   r   r   r   r   r8   e   r7   r8   c                   @   r   )ÚPKIConfirmContentNr   r   r   r   r   r9   i   r   r9   c                   @   ó   e Zd Ze ¡ ZdS )ÚCRLAnnContentN)r   r   r   r
   ÚCertificateListr   r   r   r   r   r;   m   ó    r;   c                   @   s<   e Zd ZdZe e deƒ ¡e deƒ ¡e deƒ ¡¡ZdS )ÚCAKeyUpdAnnContentz£
    CAKeyUpdAnnContent ::= SEQUENCE {
         oldWithNew   CMPCertificate,
         newWithOld   CMPCertificate,
         newWithNew   CMPCertificate
     }
    Ú
oldWithNewÚ
newWithOldÚ
newWithNewN)	r   r   r   r   r   r'   r(   r   r   r   r   r   r   r>   q   ó    ýr>   c                   @   s4   e Zd ZdZe e de ¡ ¡e 	de
 ¡ ¡¡ZdS )Ú
RevDetailszŒ
    RevDetails ::= SEQUENCE {
         certDetails         CertTemplate,
         crlEntryDetails     Extensions       OPTIONAL
     }
    ÚcertDetailsÚcrlEntryDetailsN)r   r   r   r   r   r'   r(   r   ÚCertTemplater*   r
   Ú
Extensionsr   r   r   r   r   rC   €   s    þrC   c                   @   r4   )ÚRevReqContentN)r   r   r   rC   r   r   r   r   r   rH      r7   rH   c                   @   s^   e Zd ZdZe e deƒ je	 
e	je	jd¡d¡e de ¡ je	 
e	je	jd¡d¡¡ZdS )ÚCertOrEncCertz…
     CertOrEncCert ::= CHOICE {
         certificate     [0] CMPCertificate,
         encryptedCert   [1] EncryptedValue
     }
    Úcertificater   ©ÚexplicitTagÚencryptedCertr   N)r   r   r   r   r   r'   r(   r   Úsubtyper   ÚTagÚtagClassContextÚtagFormatConstructedr   ÚEncryptedValuer   r   r   r   r   rI   ‘   s    "$þrI   c                   @   sl   e Zd ZdZe e deƒ ¡e de	 
¡ je ejejd¡d¡e de	 ¡ je ejejd¡d¡¡ZdS )	ÚCertifiedKeyPairzÑ
    CertifiedKeyPair ::= SEQUENCE {
         certOrEncCert       CertOrEncCert,
         privateKey      [0] EncryptedValue      OPTIONAL,
         publicationInfo [1] PKIPublicationInfo  OPTIONAL
     }
    ÚcertOrEncCertÚ
privateKeyr   rK   ÚpublicationInfor   N)r   r   r   r   r   r'   r(   rI   r*   r   rR   rN   r   rO   rP   rQ   ÚPKIPublicationInfor   r   r   r   r   rS   ž   s    $$ýrS   c                   @   r:   )ÚPOPODecKeyRespContentN)r   r   r   r   r)   r   r   r   r   r   rX   ­   r=   rX   c                	   @   sB   e Zd ZdZe e de ¡ ¡e 	de
 ¡ ¡e 	de
 ¡ ¡¡ZdS )Ú	Challengezº
    Challenge ::= SEQUENCE {
         owf                 AlgorithmIdentifier  OPTIONAL,
         witness             OCTET STRING,
         challenge           OCTET STRING
     }
    ÚowfÚwitnessÚ	challengeN)r   r   r   r   r   r'   r*   r
   ÚAlgorithmIdentifierr(   r   ÚOctetStringr   r   r   r   r   rY   ±   s    ýrY   c                	   @   s&   e Zd ZdZe ddddddd¡Zd	S )
Ú	PKIStatusa+  
    PKIStatus ::= INTEGER {
         accepted                (0),
         grantedWithMods        (1),
         rejection              (2),
         waiting                (3),
         revocationWarning      (4),
         revocationNotification (5),
         keyUpdateWarning       (6)
     }
    )Úacceptedr   )ÚgrantedWithModsr   )Ú	rejectioné   )Úwaitingé   )ÚrevocationWarningé   )ÚrevocationNotificationé   )ÚkeyUpdateWarningé   N©r   r   r   r   r   ÚNamedValuesÚnamedValuesr   r   r   r   r_   À   s    ùr_   c                   @   sN   e Zd ZdZe dddddddd	d
dddddddddddddddddd¡ZdS )ÚPKIFailureInfoaÏ  
    PKIFailureInfo ::= BIT STRING {
         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)
    )ÚbadAlgr   )ÚbadMessageCheckr   )Ú
badRequestrc   )ÚbadTimere   )Ú	badCertIdrg   )ÚbadDataFormatri   )ÚwrongAuthorityrk   )ÚincorrectDataé   )ÚmissingTimeStampé   )ÚbadPOPé	   )ÚcertRevokedé
   )ÚcertConfirmedé   )ÚwrongIntegrityé   )ÚbadRecipientNonceé   )ÚtimeNotAvailableé   )ÚunacceptedPolicyé   )ÚunacceptedExtensioné   )ÚaddInfoNotAvailableé   )ÚbadSenderNonceé   )ÚbadCertTemplateé   )ÚsignerNotTrustedé   )ÚtransactionIdInUseé   )ÚunsupportedVersioné   )ÚnotAuthorizedé   )ÚsystemUnavailé   )ÚsystemFailureé   )ÚduplicateCertReqé   Nrl   r   r   r   r   ro   ×   s>    åro   c                   @   s<   e Zd ZdZe e deƒ ¡e de	ƒ ¡e de
ƒ ¡¡ZdS )ÚPKIStatusInfoz°
    PKIStatusInfo ::= SEQUENCE {
         status        PKIStatus,
         statusString  PKIFreeText     OPTIONAL,
         failInfo      PKIFailureInfo  OPTIONAL
     }
    ÚstatusÚstatusStringÚfailInfoN)r   r   r   r   r   r'   r(   r_   r*   r   ro   r   r   r   r   r   rŸ     rB   rŸ   c                   @   s>   e Zd ZdZe e deƒ ¡e de	 
¡ ¡e deƒ ¡¡ZdS )ÚErrorMsgContenta7  
    ErrorMsgContent ::= SEQUENCE {
         pKIStatusInfo          PKIStatusInfo,
         errorCode              INTEGER           OPTIONAL,
         -- implementation-specific error codes
         errorDetails           PKIFreeText       OPTIONAL
         -- implementation-specific error details
     }
    ÚpKIStatusInfoÚ	errorCodeÚerrorDetailsN)r   r   r   r   r   r'   r(   rŸ   r*   r   r)   r   r   r   r   r   r   r£   $  s    	ýr£   c                   @   s@   e Zd ZdZe e de ¡ ¡e de 	¡ ¡e 
deƒ ¡¡ZdS )Ú
CertStatusz”
    CertStatus ::= SEQUENCE {
        certHash    OCTET STRING,
        certReqId   INTEGER,
        statusInfo  PKIStatusInfo OPTIONAL
     }
    ÚcertHashr$   Ú
statusInfoN)r   r   r   r   r   r'   r(   r   r^   r)   r*   rŸ   r   r   r   r   r   r§   5  s    ýr§   c                   @   r4   )ÚCertConfirmContentN)r   r   r   r§   r   r   r   r   r   rª   D  r7   rª   c                   @   s\   e Zd ZdZe e deƒ ¡e de 	¡ ¡e de
 ¡ ¡e de
 ¡ ¡e de ¡ ¡¡ZdS )ÚRevAnnContenta  
    RevAnnContent ::= SEQUENCE {
         status              PKIStatus,
         certId              CertId,
         willBeRevokedAt     GeneralizedTime,
         badSinceDate        GeneralizedTime,
         crlDetails          Extensions  OPTIONAL
     }
    r    ÚcertIdÚwillBeRevokedAtÚbadSinceDateÚ
crlDetailsN)r   r   r   r   r   r'   r(   r_   r   ÚCertIdr   ÚGeneralizedTimer*   r
   rG   r   r   r   r   r   r«   H  s    	ûr«   c                   @   s   e Zd ZdZe e deƒ ¡e de	j
e ¡ dje de¡e ejejd¡d¡e de	j
e ¡ dje de¡e ejejd¡d¡¡Zd	S )
ÚRevRepContentaI  
    RevRepContent ::= SEQUENCE {
         status       SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
         revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId
                                             OPTIONAL,
         crls     [1] SEQUENCE SIZE (1..MAX) OF CertificateList
                                             OPTIONAL
    r    ÚrevCerts©r   r   r   ©r   rL   ÚcrlsN)r   r   r   r   r   r'   r(   rŸ   r*   r   r   r   r°   rN   r   r    r!   r   rO   rP   rQ   r
   r<   r   r   r   r   r   r²   [  s"    
þÿ
þÿør²   c                   @   s®   e Zd ZdZe e deƒ ¡e de	ƒ j
e ejejd¡d¡e deje	ƒ dj
e ejejd¡e de¡d	¡e d
ejeƒ dj
e ejejd¡e de¡d	¡¡ZdS )ÚKeyRecRepContenta  
    KeyRecRepContent ::= SEQUENCE {
         status                  PKIStatusInfo,
         newSigCert          [0] CMPCertificate OPTIONAL,
         caCerts             [1] SEQUENCE SIZE (1..MAX) OF
                                             CMPCertificate OPTIONAL,
         keyPairHist         [2] SEQUENCE SIZE (1..MAX) OF
                                             CertifiedKeyPair OPTIONAL
     }
    r    Ú
newSigCertr   rK   ÚcaCertsr´   r   )rL   r   ÚkeyPairHistrc   N)r   r   r   r   r   r'   r(   rŸ   r*   r   rN   r   rO   rP   rQ   r   r   r   r    r!   rS   r   r   r   r   r   r·   u  s(    
ÿÿ
þÿ
þór·   c                
   @   sL   e Zd ZdZe e de ¡ ¡e de	ƒ ¡e 
deƒ ¡e 
de ¡ ¡¡ZdS )ÚCertResponsezó
    CertResponse ::= SEQUENCE {
         certReqId           INTEGER,
         status              PKIStatusInfo,
         certifiedKeyPair    CertifiedKeyPair    OPTIONAL,
         rspInfo             OCTET STRING        OPTIONAL
     }
    r$   r    ÚcertifiedKeyPairÚrspInfoN)r   r   r   r   r   r'   r(   r   r)   rŸ   r*   rS   r^   r   r   r   r   r   r»   ”  s    ür»   c                   @   s`   e Zd ZdZe e deje	ƒ dj
e de¡e ejejd¡d¡e dejeƒ d¡¡ZdS )ÚCertRepMessagezÈ
    CertRepMessage ::= SEQUENCE {
         caPubs       [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
                          OPTIONAL,
         response         SEQUENCE OF CertResponse
     }
    ÚcaPubsr´   r   rµ   ÚresponseN)r   r   r   r   r   r'   r*   r   r   r   rN   r   r    r!   r   rO   rP   rQ   r(   r»   r   r   r   r   r   r¾   ¥  s    ÿþÿúr¾   c                   @   r4   )ÚPOPODecKeyChallContentN)r   r   r   rY   r   r   r   r   r   rÁ   ·  r7   rÁ   c                   @   sn   e Zd ZdZe e de ¡ j	e
 e
je
jd¡d¡e de ¡ j	e
 e
je
jd¡d¡e de ¡ ¡¡ZdS )	ÚOOBCertHashzÅ
    OOBCertHash ::= SEQUENCE {
         hashAlg     [0] AlgorithmIdentifier     OPTIONAL,
         certId      [1] CertId                  OPTIONAL,
         hashVal         BIT STRING
     }
    ÚhashAlgr   rK   r¬   r   ÚhashValN)r   r   r   r   r   r'   r*   r
   r]   rN   r   rO   rP   rQ   r   r°   r(   r   Ú	BitStringr   r   r   r   r   rÂ   »  s    ÿÿùrÂ   c                   @   s   e Zd ZdZe ¡ ZdS )ÚNestedMessageContentz.
    NestedMessageContent ::= PKIMessages
    N)r   r   r   r   r   r3   r   r   r   r   r   rÆ   Ð  s    rÆ   c                   @   s4   e Zd ZdZe e de ¡ ¡e de ¡ ¡¡Z	dS )ÚDHBMParametera1  
    DHBMParameter ::= SEQUENCE {
         owf                 AlgorithmIdentifier,
         -- AlgId for a One-Way Function (SHA-1 recommended)
         mac                 AlgorithmIdentifier
         -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
     }   -- or HMAC [RFC2104, RFC2202])
    rZ   ÚmacN)
r   r   r   r   r   r'   r(   r
   r]   r   r   r   r   r   rÇ   ×  s    þrÇ   z1.2.840.113533.7.66.30c                
   @   s`   e Zd ZdZe e de ¡ j	e
 dd¡d¡e de ¡ ¡e de ¡ ¡e de ¡ ¡¡Zd	S )
ÚPBMParameterzà
    PBMParameter ::= SEQUENCE {
         salt                OCTET STRING,
         owf                 AlgorithmIdentifier,
         iterationCount      INTEGER,
         mac                 AlgorithmIdentifier
     }
    Úsaltr   é€   )r   rZ   ÚiterationCountrÈ   N)r   r   r   r   r   r'   r(   r   r^   rN   r   r    r
   r]   r)   r   r   r   r   r   rÉ   é  s    ÿúrÉ   z1.2.840.113533.7.66.13c                   @   r   )ÚPKIProtectionNr   r   r   r   r   rÍ   ÿ  r   rÍ   r’   rK   c                %   @   s¢  e Zd ZdZe e de ¡ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e de ¡ j	e
 e
je
jd¡d¡e d	eƒ j	e
 e
je
jd
¡d¡e de ¡ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e de ¡ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e de ¡ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd¡d¡e de ¡ j	e
 e
je
jd¡d¡e deƒ j	e
 e
je
jd ¡d¡e d!eƒ j	e
 e
je
jd"¡d¡e d#eƒ j	e
 e
je
jd$¡d¡e d%eƒ j	e
 e
je
jd&¡d¡e d'eƒ j	e
 e
je
jd(¡d¡e d)eƒ j	e
 e
je
jd*¡d¡e d+e¡e d,eƒ j	e
 e
je
jd-¡d¡e d.eƒ j	e
 e
je
jd/¡d¡e d0eƒ j	e
 e
je
jd1¡d¡e d2eƒ j	e
 e
je
jd3¡d¡e d4e ƒ j	e
 e
je
jd5¡d¡e d6e!ƒ j	e
 e
je
jd7¡d¡¡Z"d8S )9ÚPKIBodyag  
    PKIBody ::= CHOICE {       -- message-specific body elements
         ir       [0]  CertReqMessages,        --Initialization Request
         ip       [1]  CertRepMessage,         --Initialization Response
         cr       [2]  CertReqMessages,        --Certification Request
         cp       [3]  CertRepMessage,         --Certification Response
         p10cr    [4]  CertificationRequest,   --imported from [PKCS10]
         popdecc  [5]  POPODecKeyChallContent, --pop Challenge
         popdecr  [6]  POPODecKeyRespContent,  --pop Response
         kur      [7]  CertReqMessages,        --Key Update Request
         kup      [8]  CertRepMessage,         --Key Update Response
         krr      [9]  CertReqMessages,        --Key Recovery Request
         krp      [10] KeyRecRepContent,       --Key Recovery Response
         rr       [11] RevReqContent,          --Revocation Request
         rp       [12] RevRepContent,          --Revocation Response
         ccr      [13] CertReqMessages,        --Cross-Cert. Request
         ccp      [14] CertRepMessage,         --Cross-Cert. Response
         ckuann   [15] CAKeyUpdAnnContent,     --CA Key Update Ann.
         cann     [16] CertAnnContent,         --Certificate Ann.
         rann     [17] RevAnnContent,          --Revocation Ann.
         crlann   [18] CRLAnnContent,          --CRL Announcement
         pkiconf  [19] PKIConfirmContent,      --Confirmation
         nested   [20] NestedMessageContent,   --Nested Message
         genm     [21] GenMsgContent,          --General Message
         genp     [22] GenRepContent,          --General Response
         error    [23] ErrorMsgContent,        --Error Message
         certConf [24] CertConfirmContent,     --Certificate confirm
         pollReq  [25] PollReqContent,         --Polling request
         pollRep  [26] PollRepContent          --Polling response

    Úirr   rK   Úipr   Úcrrc   Úcpre   Úp10crrg   Úpopdeccri   Úpopdecrrk   Úkurrx   Úkuprz   Úkrrr|   Úkrpr~   Úrrr€   Úrpr‚   Úccrr„   Úccpr†   Úckuannrˆ   ÚcannrŠ   ÚrannrŒ   ÚcrlannrŽ   Úpkiconfr   ÚnestedÚgenmr”   Úgenr–   Úerrorr˜   ÚcertConfrš   ÚpollReqrœ   ÚpollReprž   N)#r   r   r   r   r   r'   r(   r   ÚCertReqMessagesrN   r   rO   rP   rQ   r¾   r	   ÚCertificationRequestrÁ   rX   r·   rH   r²   r>   r   r«   r;   r9   ÚnestedMessageContentr8   r5   r£   rª   r.   r#   r   r   r   r   r   rÎ   	  s   
ÿÿÿÿ
ÿÿÿÿ
ÿÿÿÿÿÿ
ÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ úrÎ   c                   @   s   e Zd ZdZe e deje	 
dd¡d¡e de ¡ ¡e de ¡ ¡e de ¡ je ejejd	¡d
¡e de ¡ je ejejd¡d
¡e de ¡ je ejejd¡d
¡e de ¡ je ejejd¡d
¡e de ¡ je ejejd¡d
¡e de ¡ je ejejd¡d
¡e de ¡ je ejejd¡d
¡e deƒ je ejejd¡d
¡e dejeƒ je de¡e ejejd¡dd¡¡ZdS )Ú	PKIHeaderaè  
    PKIHeader ::= SEQUENCE {
    pvno                INTEGER     { cmp1999(1), cmp2000(2) },
    sender              GeneralName,
    recipient           GeneralName,
    messageTime     [0] GeneralizedTime         OPTIONAL,
    protectionAlg   [1] AlgorithmIdentifier     OPTIONAL,
    senderKID       [2] KeyIdentifier           OPTIONAL,
    recipKID        [3] KeyIdentifier           OPTIONAL,
    transactionID   [4] OCTET STRING            OPTIONAL,
    senderNonce     [5] OCTET STRING            OPTIONAL,
    recipNonce      [6] OCTET STRING            OPTIONAL,
    freeText        [7] PKIFreeText             OPTIONAL,
    generalInfo     [8] SEQUENCE SIZE (1..MAX) OF
                     InfoTypeAndValue     OPTIONAL
    }

    Úpvno)Úcmp1999r   )Úcmp2000rc   )rn   ÚsenderÚ	recipientÚmessageTimer   rK   ÚprotectionAlgr   Ú	senderKIDrc   ÚrecipKIDre   ÚtransactionIDrg   ÚsenderNonceri   Ú
recipNoncerk   ÚfreeTextrx   ÚgeneralInforz   rµ   r´   N) r   r   r   r   r   r'   r(   r   r)   r   rm   r
   ÚGeneralNamer*   r   r±   rN   r   rO   rP   ÚtagFormatSimpler]   rQ   r   r^   r   r   r/   r   r    r!   r   r   r   r   r   rí   ¶  sV    
ÿÿÿÿÿÿÿÿÿÿ
þÿÿèrí   c                   @   s0   e Zd ZdZe e deƒ ¡e deƒ ¡¡Z	dS )ÚProtectedPartzg
     ProtectedPart ::= SEQUENCE {
         header    PKIHeader,
         body      PKIBody
     }
    Úheaderr1   N)
r   r   r   r   r   r'   r(   rí   rÎ   r   r   r   r   r   rþ   ì  s    þrþ   c                   @   s†   e Zd ZdZe e deƒ ¡e deƒ ¡e 	de
ƒ je ejejd¡d¡e 	dejeƒ dje d	e¡e ejejd	¡d
¡¡ZdS )Ú
PKIMessagezé
    PKIMessage ::= SEQUENCE {
    header           PKIHeader,
    body             PKIBody,
    protection   [0] PKIProtection OPTIONAL,
    extraCerts   [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
                  OPTIONAL
     }rÿ   ÚbodyÚ
protectionr   rK   Ú
extraCertsr´   r   rµ   N)r   r   r   r   r   r'   r(   rí   rÎ   r*   rÍ   rN   r   rO   rP   rý   r   r   r   r   r    r!   rQ   r   r   r   r   r   r   ù  s$    ÿÿ
üÿûr   c                   @   s*   e Zd ZdZeƒ Zejje	 
de¡ ZdS )ÚPKIMessagesz>
    PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage
    r   N)r   r   r   r   r   r   r   r   r   r   r    r!   r   r   r   r   r    s    r  N)HÚpyasn1.typer   r   r   r   r   r   r   Úpyasn1_modulesr	   r
   r   Úfloatr!   r^   r   ÚCertificater   r   r   r   r   r#   r.   r-   r/   r5   r8   ÚNullr9   r;   r>   rC   rH   ÚChoicerI   rS   rX   rY   r)   r_   rÅ   ro   rŸ   r£   r§   rª   r«   r²   r·   r»   r¾   rÁ   rÂ   rÆ   rÇ   r2   Úid_DHBasedMacrÉ   Úid_PasswordBasedMacrÍ   rN   rO   rP   rQ   rì   rÎ   rí   rþ   r   r  Ú_componentTyper   r   r   r   Ú<module>   sx   
>

ÿ .6
