
    =	f                         d dl Z d dlZd dlZd dl d dl d dlmZ d dlmZ d dl d dl	m
Z
mZ  G d de      Z G d d	e      Zy)
    N)*)utils)os_utils)PopenPIPEc                       e Zd Zd Zd Zy)DigiSign_Verificationc                      y N selfs    #/usr/share/hplip/base/validation.py__init__zDigiSign_Verification.__init__$           c                      y r   r   r   s    r   validatezDigiSign_Verification.validate'   r   r   N)__name__
__module____qualname__r   r   r   r   r   r	   r	   #   s    r   r	   c                   ,    e Zd Zd ZddZd Zd Zd Zy)GPG_Verificationc                    t        j                  dd      | _        t        j                         \  }| _        t        j                  j                  | j
                  d      | _	        t        j                  j                  | j                        s!	 t        j                  | j                  d       | j                          y # t        $ r% t        j                  d| j                  z         Y >w xY w)NgpgTz.gnupgi  zFailed to create %s)r   which_GPG_Verification__gpgr   getHPLIPDir_GPG_Verification__hplipdirospathjoin_GPG_Verification__gpg_direxistsmkdirOSErrorlogerror_GPG_Verification__change_owner)r   stss     r   r   zGPG_Verification.__init__,   s    [[t,
'335T_doox@
 ww~~dnn-B/ 	  B		/$..@ABs    C +C0/C0c                 X   	 t        j                  d       t        j                  | j                        }t	        j
                  | j                  |t        j                     |t        j                     |       y # t        $ r% t        j                  d| j                  z         Y y w xY w)Nr   z Failed to Change ownership of %s)r    umaskstatr   r   changeOwnerr#   ST_UIDST_GIDr&   r'   r(   )r   	Recursivess      r   __change_ownerzGPG_Verification.__change_owner;   su    	JHHQK(A  4;;4;;QZ[ 	JII8$..HI	Js   A8A; ;+B)(B)c                     | j                   d| j                  d|d|}t        j                  d|d|d       t	        j
                  |      \  }}t        j                  d| j                   ||fz         |S )N --homedir z! -no-permission-warning --verify  zVerifying file z
 : cmd = []z%s status: %d  output:%s)r   r#   r'   debugr   run)r   hplip_packagehplip_digsigcmdstatusoutputs         r   __gpg_checkzGPG_Verification.__gpg_checkD   sh    IMUYUcUceq  tA  B		mCHI3		,

F6/JJKr   c                     | j                   d| j                  dd}t        j                  d       t	        j
                  |      \  }}t        j                  |       | j                  d       |S )Nr5   z" --no-permission-warning --import z /usr/share/hplip/signing-key.asczImporting digital keyT)r   r#   r'   infor   r9   r8   r)   )r   r<   r=   r>   s       r   __acquire_gpg_keyz"GPG_Verification.__acquire_gpg_keyQ   s[     T^^-OQ 	()3		&D!r   c                    t         j                  d|d|d       | j                  st        t	        t              fS t
        j                  j                  |      st        t	        t        d|      fS t
        j                  j                  |      st        t	        t        d|      fS | j                         }|dk7  rt        t	        t              fS | j                  ||      }|dk7  rt        t	        t        d|      fS t        dfS )NzValidating z with z signature filer    )r'   r8   r   ERROR_GPG_CMD_NOT_FOUNDqueryStringr    r!   r$   ERROR_FILE_NOT_FOUNDERROR_DIGITAL_SIGN_NOT_FOUND"_GPG_Verification__acquire_gpg_keyERROR_UNABLE_TO_RECV_KEYS_GPG_Verification__gpg_checkERROR_DIGITAL_SIGN_BADERROR_SUCCESS)r   r:   r;   r=   s       r   r   zGPG_Verification.validate_   s    		=,WXzz*K8O,PPPww~~m,'5I1m)\\\ww~~l+/=Y[\^j1kkk'')Q;,k:S.TTT!!->Q;);7MqR_+``` "$$r   N)F)r   r   r   r   r)   rK   rI   r   r   r   r   r   r   +   s    J
%r   r   )r    r-   datetime
base.codesbase.stringsbaser   r   base.g
subprocessr   r   objectr	   r   r   r   r   <module>rU      s?   , 
        "F H%, H%r   