ó
‚¾^Yc           @€ sQ   d  Z  d d l m Z m Z d d l Z d d l m Z d d l Z d „  Z	 d S(   s   Utility functions.iÿÿÿÿ(   t   with_statementt   print_functionN(   t   OptionParserc    	   
   C€ s=  t  d d d d ƒ }  |  j d d d d d	 d
 d d ƒ|  j d d d d d	 d
 d d ƒ|  j d d d d d d d$ d d ƒ|  j d d d d d d d% d d ƒ|  j t j ƒ \ } } | j rt d | j | j f d t j ƒt	 | j d ƒ  } | j
 ƒ  } Wd QXn2 t d | j d t j ƒt j j
 ƒ  j d  ƒ } t | ƒ t k sgt t | ƒ ƒ ‚ t j j j | | j ƒ } t j j | j | j ƒ } | j | j ƒ } | j rt d! | j | j f d t j ƒt	 | j d" ƒ  } | j | ƒ Wd QXn3 t d# | j d t j ƒt j j | j d  ƒ ƒ d S(&   s=   Reads a private key and outputs the corresponding public key.t   usages   usage: %prog [options]t   descriptions‚   Reads a private key and outputs the corresponding public key. Both private and public keys use the format described in PKCS#1 v1.5s   -is   --inputt   destt
   infilenamet   typet   stringt   helps1   Input filename. Reads from stdin if not specifieds   -os   --outputt   outfilenames2   Output filename. Writes to stdout of not specifieds   --informt   informs!   key format of input - default PEMt   choicest   PEMt   DERt   defaults	   --outformt   outforms"   key format of output - default PEMs(   Reading private key from %s in %s formatt   filet   rbNs+   Reading private key from stdin in %s formatt   asciis%   Writing public key to %s in %s formatt   wbs)   Writing public key to stdout in %s format(   R   R   (   R   R   (   R   t
   add_optiont
   parse_argst   syst   argvR   t   printR   t   stderrt   opent   readt   stdint   encodeR   t   bytest   AssertionErrort   rsat   keyt
   PrivateKeyt
   load_pkcs1t	   PublicKeyt   nt   et
   save_pkcs1R   R
   t   writet   stdoutt   decode(	   t   parsert   clit   cli_argst   infilet   in_datat   priv_keyt   pub_keyt   out_datat   outfile(    (    s%   /tmp/pip-build-kpPAdC/rsa/rsa/util.pyt   private_to_public   sB    		
$	
(
   t   __doc__t
   __future__R    R   R   t   optparseR   t   rsa.keyR!   R5   (    (    (    s%   /tmp/pip-build-kpPAdC/rsa/rsa/util.pyt   <module>   s
   