
                            S SK r S SKr S SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  \
R                  " S5      r " S	 S
\R                  R"                  5      r\" 5       rS rS r\" \R.                  5      S:w  a+  \" S\R.                  S    -  5        \R2                  " S5        O\R.                  S   r\R6                  " \R8                  " \R:                  S5      S   \R<                  " 5       S9u  rr \R6                  " \R8                  " \R:                  S5      S   \R<                  " 5       S9u  r!r \" \\!5      r"\RF                  " \\RH                  " \"5      SS05      r%\RL                  " \%5      RO                  5       r(\R6                  " \(\RR                  " 5       S9u  r*r \" \*5      u  r+r,r-r.\" S\,R_                  S5      < S\-< S\+< S\.< S3	5        g! \ a
    S SKJr   GNf = f)    N)decoder)encoder)univ)rfc2560)rfc2459)pem)         r
         c                   ,    \ rS rSrS rS rS rS rSrg)ValueOnlyBitStringEncoder   c                     gN  selfargss     >platform/gsutil/third_party/pyasn1-modules/tools/ocspclient.py	encodeTag#ValueOnlyBitStringEncoder.encodeTag           c                     gr   r   r   s     r   encodeLength&ValueOnlyBitStringEncoder.encodeLength"   r   r   c                  b    [         R                   R                  R                  " U 6 u  pUSS  U4$ )Nr	   )r   BitStringEncoderencodeValue)r   	substrateisConstructeds      r   r"   %ValueOnlyBitStringEncoder.encodeValue%   s3    #*??#C#C#O#OQU#V 	 }m++r   c                 &    U R                  S USSS9$ )NTr   )defModemaxChunkSize)encode)r   bitStringValues     r   __call__"ValueOnlyBitStringEncoder.__call__+   s    {{4A{NNr   r   N)	__name__
__module____qualname____firstlineno__r   r   r"   r+   __static_attributes__r   r   r   r   r      s    ,Or   r   c                 L   U R                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nX5:X  d*   UR                  5       < SUR                  5       < 35       e[        R                  " [        R
                  " U5      5      R                  5       nUR                  S5      R                  S5      n[        R                  " [        U5      5      R                  5       nUR                  S5      n	[        R                  " 5       n
U
R                  S5      R                  S5      nUR                  S	5      R                  S	5      nUR                  S
[        5        UR                  SU5        UR                  SU5        UR                  SU	5        [        R                  " 5       nUR                  S5      R                  S5      nUR                  SS5        UR                  S5      R                  S5      nUR                  SU
5        U$ )NtbsCertificatesubjectissuer
subjectPublicKeyInfosubjectPublicKeyserialNumberreqCerthashAlgorithm	algorithmissuerNameHashissuerKeyHash
tbsRequestversionv1requestListr   )getComponentByNameprettyPrinthashlibsha1r   r)   digestvalueOnlyBitStringEncoderr   RequestsetComponentByNamesha1oidOCSPRequestsetComponentByPosition)
issuerCertuserCertissuerTbsCertificateissuerSubjectuserTbsCertificate
userIssueruserIssuerHashissuerSubjectPublicKeyr>   userSerialNumberrequestr:   r;   ocspRequestr?   rB   s                   r   mkOcspRequestrY   3   s   %889IJ(;;IFM!445EF#66x@J& !!#Z%;%;%=) & \\z"fh  2DDE[\oo LL!"89fh  *<<^L ooG((3FFyQG..?RRSbcM$$[':/@>~/?@%%'K//=PPQ]^J!!)T2//>QQR_`K&&q'2r   c                    U R                  S5      nU[        R                  " S5      :X  d   UR                  5       5       eU R                  S5      nUR                  S5      nU[        R                  :X  d   UR                  5       5       eUR                  S5      n[
        R                  " U[        R                  " 5       S9u  pVUR                  S5      nUR                  S5      R                  S	5      nUR                  S
5      UR                  S5      UR                  S5      R                  5       UR                  S5      4$ )NresponseStatus
successfulresponseBytesresponseTyperesponseasn1SpectbsResponseData	responsesr   
producedAtcertID
certStatus
thisUpdate)
rC   r   OCSPResponseStatusrD   id_pkix_ocsp_basicr   decodeBasicOCSPResponsegetComponentByPositiongetName)	ocspResponser[   r]   r^   r_   basicOCSPResponse_rb   	response0s	            r   parseOcspResponserr   c   s(   !445EFNW77EEc~GaGaGccE 33ODM 33NCL7555Q|7O7O7QQ5//
;H">>7446 (::;LMO22;?VVWXYI 	**<8$$X.$$\2::<$$\2	 r   r   zLUsage:
$ cat CACertificate.pem userCertificate.pem | %s <ocsp-responder-url>r	   )z-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----r`   zContent-Typezapplication/ocsp-requestzCertificate ID r9   z is z at z till r6   )0rE   sysurllib2ImportErrorurllib.requestrW   pyasn1.codec.derr   r   pyasn1.typer   pyasn1_modulesr   r   r   ObjectIdentifierrK   r!   r   rH   rY   rr   lenargvprintexitocspUrlrj   readPemBlocksFromFilestdinCertificaterN   rp   rO   ocspReqrI   r)   httpRequrlopenreadhttpRspOCSPResponseocspRsprd   certIdrf   rg   rC   r   r   r   <module>r      s    
%
 % $  " " 


 4
5O @ @ O$ 67 -`2 sxx=A	 IKN88TU;W XHHRLhhqkG 		O	   "	
A nn		O	   "	! 
H
-
 //NN7/0
 //'
"
'
'
)
 ^^Gg.B.B.DE
->w-G *
FJ
 63L3L^3\3=z:W Xu  %$$%s   G* *G:9G: