Viewing File: /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyo
σ
θbXc @` 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' R( t algorithm( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyt __init__B s
c C` s | j j | d S( N( R0 t update( R1 R ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR4 J s c C` sJ | j j } t | j j | | j } t | j | j | j | d S( N( R0 t finalizeR R, R R+ R) R- ( R1 t data_to_verify( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyt verifyM s
( t __name__t
__module__R3 R4 R7 ( ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR* @ s t _DSASignatureContextc B` s# e Z d Z d Z d Z RS( c C` s: | | _ | | _ | | _ t j | j | j | _ d S( N( R+ t _private_keyR. R R/ R0 ( R1 R R R2 ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR3 Z s c C` s | j j | d S( N( R0 R4 ( R1 R ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR4 ` s c C` s@ | j j } t | j j | | j } t | j | j | S( N( R0 R5 R R; R R+ R$ ( R1 t data_to_sign( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR5 c s ( R8 R9 R3 R4 R5 ( ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR: X s t _DSAParametersc B` s# e Z d Z d Z d Z RS( c C` s | | _ | | _ d S( N( R+ R ( R1 R R ( ( sN /usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyR3 m s c C` s | j j j d } | j j j d } | j j j d } | j j j | j | | | | j j | d | j j j k | j j | d | j j j k | j j | d | j j j k t j d | j j
| d d | j j
| d d | j j
| d S( Ns BIGNUM **i t pR t g( R+ R R
R R R R R R t DSAParameterNumberst
_bn_to_int( R1 R>