U
    ڲg5o                     @   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                   @   s   e Zd ZdS )KeyIdentifierN__name__
__module____qualname__ r   r   :/tmp/pip-unpacked-wheel-mj5o32qq/pyasn1_modules/rfc4210.pyr      s   r   c                   @   s   e Zd ZdS )CMPCertificateNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )OOBCertNr   r   r   r   r   r   "   s   r   c                   @   s   e Zd ZdS )CertAnnContentNr   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 )PKIFreeTextz>
    PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
       N)r   r   r   __doc__r   Z
UTF8StringcomponentTyper   
SequenceOfsizeSpecr   ValueSizeConstraintMAXr   r   r   r   r   *   s   r   c                   @   s(   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	certReqIdZ
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                   @   s(   e Zd ZdZG dd dejZe ZdS )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
    }ZinfoType	infoValueN)r   r   r   r   r   r"   r#   r   ObjectIdentifierr%   Anyr   r   r   r   r   r*   U   s
   r*   c                   @   s   e Zd Ze ZdS )GenRepContentNr   r   r   r*   r   r   r   r   r   r.   a   s   r.   c                   @   s   e Zd Ze ZdS )GenMsgContentNr/   r   r   r   r   r0   e   s   r0   c                   @   s   e Zd ZdS )PKIConfirmContentNr   r   r   r   r   r1   i   s   r1   c                   @   s   e Zd Ze ZdS )CRLAnnContentN)r   r   r   r
   CertificateListr   r   r   r   r   r2   m   s   r2   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
     }
    Z
oldWithNewZ
newWithOldZ
newWithNewN)	r   r   r   r   r   r"   r#   r   r   r   r   r   r   r4   q   s   r4   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
     }
    ZcertDetailsZcrlEntryDetailsN)r   r   r   r   r   r"   r#   r   ZCertTemplater%   r
   
Extensionsr   r   r   r   r   r5      s
   r5   c                   @   s   e Zd Ze ZdS )RevReqContentN)r   r   r   r5   r   r   r   r   r   r7      s   r7   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
     }
    Zcertificater   explicitTagZencryptedCertr   N)r   r   r   r   r   r"   r#   r   subtyper   TagtagClassContexttagFormatConstructedr   EncryptedValuer   r   r   r   r   r8      s
   "$r8   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
     }
    ZcertOrEncCertZ
privateKeyr   r9   ZpublicationInfor   N)r   r   r   r   r   r"   r#   r8   r%   r   r?   r;   r   r<   r=   r>   ZPKIPublicationInfor   r   r   r   r   r@      s   $$r@   c                   @   s   e Zd Ze ZdS )POPODecKeyRespContentN)r   r   r   r   r$   r   r   r   r   r   rA      s   rA   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
     }
    owfZwitness	challengeN)r   r   r   r   r   r"   r%   r
   AlgorithmIdentifierr#   r   OctetStringr   r   r   r   r   rB      s   rB   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   )ZgrantedWithModsr   )Z	rejection   )Zwaiting   )ZrevocationWarning   )ZrevocationNotification   )ZkeyUpdateWarning   Nr   r   r   r   r   NamedValuesnamedValuesr   r   r   r   rG      s   rG   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)
    )ZbadAlgr   )ZbadMessageCheckr   )Z
badRequestrI   )ZbadTimerJ   )Z	badCertIdrK   )ZbadDataFormatrL   )ZwrongAuthorityrM   )ZincorrectData   )ZmissingTimeStamp   )ZbadPOP	   )ZcertRevoked
   )ZcertConfirmed   )ZwrongIntegrity   )ZbadRecipientNonce   )ZtimeNotAvailable   )ZunacceptedPolicy   )ZunacceptedExtension   )ZaddInfoNotAvailable   )ZbadSenderNonce   )ZbadCertTemplate   )ZsignerNotTrusted   )ZtransactionIdInUse   )ZunsupportedVersion   )ZnotAuthorized   )ZsystemUnavail   )ZsystemFailure   )ZduplicateCertReq   NrN   r   r   r   r   rQ      s<   rQ   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
     }
    statusZstatusStringZfailInfoN)r   r   r   r   r   r"   r#   rG   r%   r   rQ   r   r   r   r   r   rf     s   rf   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
     }
    ZpKIStatusInfoZ	errorCodeZerrorDetailsN)r   r   r   r   r   r"   r#   rf   r%   r   r$   r   r   r   r   r   r   rh   $  s   	rh   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
     }
    ZcertHashr    Z
statusInfoN)r   r   r   r   r   r"   r#   r   rF   r$   r%   rf   r   r   r   r   r   ri   5  s   ri   c                   @   s   e Zd Ze ZdS )CertConfirmContentN)r   r   r   ri   r   r   r   r   r   rj   D  s   rj   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
     }
    rg   certIdZwillBeRevokedAtZbadSinceDateZ
crlDetailsN)r   r   r   r   r   r"   r#   rG   r   CertIdr   GeneralizedTimer%   r
   r6   r   r   r   r   r   rk   H  s   	rk   c                   @   s   e Zd ZdZeedeje	 e
ded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
    rg   r   )r   r   ZrevCertsr   r   r   r:   ZcrlsN)r   r   r   r   r   r"   r#   r   r   rf   r   r   r   r%   r   rm   r;   r   r<   r=   r>   r
   r3   r   r   r   r   r   ro   [  s0    
 
 
ro   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
     }
    rg   Z
newSigCertr   r9   ZcaCertsrp   r   )r:   r   ZkeyPairHistrI   N)r   r   r   r   r   r"   r#   rf   r%   r   r;   r   r<   r=   r>   r   r   r   r   r   r@   r   r   r   r   r   rr   z  s*   
  

rr   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    rg   ZcertifiedKeyPairZrspInfoN)r   r   r   r   r   r"   r#   r   r$   rf   r%   r@   rF   r   r   r   r   r   rs     s   rs   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
     }
    ZcaPubsrp   r   rq   responseN)r   r   r   r   r   r"   r%   r   r   r   r;   r   r   r   r   r<   r=   r>   r#   rs   r   r   r   r   r   rt     s    
rt   c                   @   s   e Zd Ze ZdS )POPODecKeyChallContentN)r   r   r   rB   r   r   r   r   r   rv     s   rv   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
     }
    ZhashAlgr   r9   rl   r   ZhashValN)r   r   r   r   r   r"   r%   r
   rE   r;   r   r<   r=   r>   r   rm   r#   r   	BitStringr   r   r   r   r   rw     s     rw   c                   @   s   e Zd ZdZe ZdS )NestedMessageContentz.
    NestedMessageContent ::= PKIMessages
    N)r   r   r   r   r   r-   r   r   r   r   r   ry     s   ry   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])
    rC   macN)
r   r   r   r   r   r"   r#   r
   rE   r   r   r   r   r   rz     s
   rz   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
     }
    Zsaltr      )ZsubtypeSpecrC   ZiterationCountr{   N)r   r   r   r   r   r"   r#   r   rF   r;   r   r   r
   rE   r$   r   r   r   r   r   r|     s    r|   z1.2.840.113533.7.66.13c                   @   s   e Zd ZdS )PKIProtectionNr   r   r   r   r   r~     s   r~   r_   r9   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

    Zirr   r9   ipr   ZcrrI   cprJ   Zp10crrK   ZpopdeccrL   ZpopdecrrM   ZkurrR   ZkuprS   ZkrrrT   ZkrprU   rrrV   rprW   ZccrrX   ZccprY   ZckuannrZ   Zcannr[   Zrannr\   Zcrlannr]   Zpkiconfr^   nestedZgenmr`   genra   errorrb   ZcertConfrc   ZpollReqrd   ZpollRepre   N)#r   r   r   r   r   r"   r#   r   ZCertReqMessagesr;   r   r<   r=   r>   rt   r	   ZCertificationRequestrv   rA   rr   r7   ro   r4   r   rk   r2   r1   nestedMessageContentr0   r.   rh   rj   r)   r   r   r   r   r   r   r     sH                              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ddjeejej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
    }

    Zpvno)Zcmp1999r   )Zcmp2000rI   )rP   ZsenderZ	recipientZmessageTimer   r9   ZprotectionAlgr   Z	senderKIDrI   ZrecipKIDrJ   ZtransactionIDrK   ZsenderNoncerL   Z
recipNoncerM   ZfreeTextrR   ZgeneralInfo)r   rp   rS   N) r   r   r   r   r   r"   r#   r   r$   r   rO   r
   ZGeneralNamer%   r   rn   r;   r   r<   r=   tagFormatSimplerE   r>   r   rF   r   r   r*   r   r   r   r   r   r   r   r   r     sX    

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
     }
    headerr+   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   bodyZ
protectionr   r9   Z
extraCertsrp   r   rq   N)r   r   r   r   r   r"   r#   r   r   r%   r~   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 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)HZpyasn1.typer   r   r   r   r   r   r   Zpyasn1_modulesr	   r
   r   floatr   rF   r   ZCertificater   r   r   r   r   r   r)   r(   r*   r.   r0   ZNullr1   r2   r4   r5   r7   ZChoicer8   r@   rA   rB   r$   rG   rx   rQ   rf   rh   ri   rj   rk   ro   rr   rs   rt   rv   rw   ry   rz   r,   Zid_DHBasedMacr|   Zid_PasswordBasedMacr~   r;   r<   r=   r>   r   r   r   r   r   r   Z_componentTyper   r   r   r   <module>   sv   >

 .6
