Your IP : 216.73.216.213
��Yf�
� @ s� d d l Z d d l Z d d l Z d d l Z d d � Z e d k r� e e j � d k r� e j j d e j d � e j
d � xR e j d d � D]= Z e j d � \ Z
Z e j j j e e
e e � � � q� We j
d � d S) � Nc s d d � � d � f d d � } t j j d � r� t j � } t | d � } | j d � | j � z# � d | | | f � \ } } Wd t j | � Xn � d | | f � \ } } | d
k r� t
d | | f � � | | � } | st d | | f � � | S)
Nc S s_ d d l m } m } m } | | d | d | d d �} | j � } | j j � } | | f S)Nr )�Popen�PIPE�STDOUT�stdout�stderr�shellT)�
subprocessr r r �waitr �read)�cmdr r r �proc�status�output� r �I/opt/alt/python35/lib64/python3.5/Tools/scripts/get-remote-certificate.py�subproc s
z)fetch_server_certificate.<locals>.subprocc s t j d | t j t j B� } | s) d St j � } t | d � } | j | j d � d � | j � z� | pz t j � } � d | | f � \ } } | d k r� t
d | | f � � t | d � } | j � } | j � t j
| � | SWd t j
| � Xd S) NsC ^([-]+BEGIN CERTIFICATE[-]+[\r]*\n.*[\r]*^[-]+END CERTIFICATE[-]+)$�wb� s
zopenssl x509 -in "%s" -out "%s"r z1OpenSSL x509 failed with status %s and output: %r�rb)�re�search� MULTILINE�DOTALL�tempfile�mktemp�open�write�group�close�RuntimeErrorr
�os�unlink) Zcertfile_contentsZoutfile�mZtn�fpZtn2r
r �data)r r r �strip_to_x509_cert s*
z4fetch_server_certificate.<locals>.strip_to_x509_cert�win�wzquit
z3openssl s_client -connect "%s:%s" -showcerts < "%s"z8openssl s_client -connect "%s:%s" -showcerts < /dev/nullr z4OpenSSL connect failed with status %s and output: %rz.Invalid response received from server at %s:%s)�sys�platform�
startswithr r r r r r r! r �
ValueError)�host�portr% Ztfiler# r
r Zcerttextr )r r �fetch_server_certificate s.
r. �__main__� z:Usage: %s HOSTNAME:PORTNUMBER [, HOSTNAME:PORTNUMBER...]
r �:)r r r( r r. �__name__�len�argvr r �exit�arg�splitr, r- r �buffer�intr r r r �<module> s <
&