U vù¾f8 ã @ s¨ d Z ddlmZ ddlmZ ddlmZmZ ddlm Z ddl mZmZ ddl mZ ddlmZ dd lmZ dd lmZ ddlmZmZ ddlmZ G d d„ deƒZdS )z DSS keys. é )ÚInvalidSignature)Údefault_backend)ÚhashesÚ serialization)Údsa)Údecode_dss_signatureÚencode_dss_signature)Úutil)Ú zero_byte)ÚSSHException)ÚMessage)ÚBERÚBERException)ÚPKeyc @ sž e Zd ZdZdZd#dd„Zdd„ Zdd „ Zed d„ ƒZ dd „ Z dd„ Zdd„ Zd$dd„Z dd„ Zd%dd„Zd&dd„Zed'dd„ƒZdd„ Zdd „ Zd!d"„ ZdS )(ÚDSSKeyzX Representation of a DSS key which can be used to sign an verify SSH2 data. zssh-dssNc C sÞ d | _ d | _d | _d | _d | _d | _|d k r<| ||¡ d S |d k rT| ||¡ d S |d krl|d k rlt|ƒ}|d k rŠ|\| _ | _| _| _nB| j || j | j › dd | ¡ | _ | ¡ | _| ¡ | _| ¡ | _t | j ¡| _d S )Nz-cert-v01@openssh.com)ÚmsgZkey_typeZ cert_type)ÚpÚqÚgÚyÚxZpublic_blobÚ_from_private_keyÚ_from_private_key_filer Z_check_type_and_load_certÚnameZ get_mpintr Ú bit_lengthÚsize)Úselfr ÚdataÚfilenameÚpasswordÚvalsÚfile_obj© r" ú@/opt/alt/python38/lib/python3.8/site-packages/paramiko/dsskey.pyÚ__init__0 s4 ý zDSSKey.__init__c C sJ t ƒ }| | j¡ | | j¡ | | j¡ | | j¡ | | j¡ | ¡ S ©N) r Ú add_stringr Z add_mpintr r r r Úasbytes)r Úmr" r" r# r' U s zDSSKey.asbytesc C s | ¡ S r% )r' ©r r" r" r# Ú__str__^ s zDSSKey.__str__c C s | ¡ | j| j| j| jfS r% )Úget_namer r r r r) r" r" r# Ú_fieldsa s zDSSKey._fieldsc C s | j S r% )r r) r" r" r# r+ f s zDSSKey.get_namec C s | j S r% )r r) r" r" r# Úget_bitsi s zDSSKey.get_bitsc C s | j d k S r% )r r) r" r" r# Úcan_signl s zDSSKey.can_signc C sÐ t j| jt j| jt j| j| j| jdddj t ƒ d}| |t ¡ ¡}t|ƒ\}}tƒ }| | j¡ t |d¡}t |d¡} t|ƒdk ržtdt|ƒ | }t| ƒdk r¾tdt| ƒ | } | || ¡ |S )N©r r r ©r Úparameter_numbers©r Úpublic_numbers©Úbackendr é )r ÚDSAPrivateNumbersr ÚDSAPublicNumbersr ÚDSAParameterNumbersr r r Úprivate_keyr Úsignr ÚSHA1r r r&