Current File : //usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyc |
�
�b�Xc @` se d d l m Z m Z m Z d d l m Z d d l m Z d d l m Z m
Z
d d l m Z m
Z
d d l m Z m Z m Z d � Z d � Z d � Z e j e � d
e f d � � Y� Z e j e � d e f d
� � Y� Z e j e j � d e f d � � Y� Z e j e j � d e f d � � Y� Z e j e j � d e f d � � Y� Z d S( i ( t absolute_importt divisiont print_function( t utils( t InvalidSignature( t _calculate_digest_and_algorithmt _truncate_digest( t hashest
serialization( t AsymmetricSignatureContextt AsymmetricVerificationContextt dsac C` sw | j j d � } | j j | | j j | | j j � | j | d | j j k � | j j | d � } t | | � S( s�
This function truncates digests that are longer than a given DS
key's length so they can be signed. OpenSSL does this for us in
1.0.0c+, leaving us with three releases (1.0.0, 1.0.0a, and 1.0.0b) where
this is a problem.
s BIGNUM **i ( t _ffit newt _libt DSA_get0_pqgt NULLt openssl_assertt BN_num_bitsR ( t dsa_cdatat digestt backendt qt
order_bits( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyt _truncate_digest_for_dsa s c C` s� | j j | j � } | j j d | � } | j j d � } | j j d | t | � | | | j � } | j | d k � | j | d � | j j | � | d S( Ns unsigned char[]s unsigned int *i i ( R t DSA_sizet
_dsa_cdataR R
t DSA_signt lenR t buffer( R t private_keyt datat sig_buf_lent sig_buft buflent res( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyt
_dsa_sig_sign$ s !c C` sS | j j d | t | � | t | � | j � } | d k rO | j � t � n d S( Ni i ( R t
DSA_verifyR R t _consume_errorsR ( R t
public_keyt signatureR R# ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyt _dsa_sig_verify4 s
'
t _DSAVerificationContextc B` s# e Z d � Z d � Z d � Z RS( c C` sC | | _ | | _ | | _ | | _ t j | j | j � | _ d S( N( t _backendt _public_keyt
_signaturet
_algorithmR t Hasht _hash_ctx( t selfR R'