Current File : //usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyc
�
�b�Xc@`sddlmZmZmZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZm
Z
mZddlmZmZmZd�Zd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d �Z-d!�Z.id"e
j/j06d#e
j/j16d$e
j/j26d%e
j/j36d&e
j/j46d'e
j/j56d(e
j/j66d)e
j/j76Z8d*�Z9d+�Z:d,�Z;d-�Z<ie'ej=6e+ej>6e%ej?6e*ej@6e*ejA6e.ejB6e&ejC6e ejD6e(ejE6e9ejF6eejG6e$ejH6e:ejI6e;ejJ6ZKie*ejA6e&ejC6e(ejE6eejL6ZMie*ejN6eejO6eejP6ZQdS(.i(tabsolute_importtdivisiontprint_functionN(tutilstx509(t_CRL_ENTRY_REASON_ENUM_TO_CODEt_DISTPOINT_TYPE_FULLNAMEt_DISTPOINT_TYPE_RELATIVENAME(tCRLEntryExtensionOIDtExtensionOIDtNameOIDcC`sb|j|�}|jj||jj�}|jj||jj�}|j||jjk�|S(s
    Converts a python integer to an ASN1_INTEGER. The returned ASN1_INTEGER
    will not be garbage collected (to support adding them to structs that take
    ownership of the object). Be sure to register it for GC if it will be
    discarded after use.

    (t
_int_to_bnt_ffitgct_libtBN_freetBN_to_ASN1_INTEGERtNULLtopenssl_assert(tbackendtxti((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_asn1_ints
cC`s.t||�}|jj||jj�}|S(N(RRR
RtASN1_INTEGER_free(RRR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_asn1_int_gc*scC`s>|jj�}|jj|||�}|j|dk�|S(s@
    Create an ASN1_OCTET_STRING from a Python byte string.
    i(RtASN1_OCTET_STRING_newtASN1_OCTET_STRING_setR(Rtdatatlengthtstres((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_asn1_str0scC`sV|jj�}|jj||jd�t|jd���}|j|dk�|S(s�
    Create an ASN1_UTF8STRING from a Python unicode string.
    This object will be an ASN1_STRING with UTF8 type in OpenSSL and
    can be decoded with ASN1_STRING_to_UTF8.
    tutf8i(RtASN1_UTF8STRING_newtASN1_STRING_settencodetlenR(RtstringRR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_asn1_utf8_str:s
	'cC`s1t|||�}|jj||jj�}|S(N(RRR
RtASN1_OCTET_STRING_free(RRRR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_asn1_str_gcHscC`st||j�S(N(Rt
skip_certs(Rtinhibit_any_policy((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_inhibit_any_policyNscC`s�|jj�}x�|jD]{}d}xl|D]d}t||�}|jj||jj�}|jj||d|�}|j|dk�d}q,WqW|S(sP
    The X509_NAME created will not be gc'd. Use _encode_name_gc if needed.
    ii����i(	Rt
X509_NAME_newtrdnst_encode_name_entryRR
tX509_NAME_ENTRY_freetX509_NAME_add_entryR(Rtnametsubjecttrdntset_flagt	attributet
name_entryR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_nameRs
		cC`s.t||�}|jj||jj�}|S(N(R7RR
RtX509_NAME_free(Rt
attributesR2((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_name_gcfscC`s[|jj�}xE|D]=}t||�}|jj||�}|j|dk�qW|S(s9
    The sk_X50_NAME_ENTRY created will not be gc'd.
    i(Rtsk_X509_NAME_ENTRY_new_nullR.tsk_X509_NAME_ENTRY_pushR(RR9tstackR5R6R((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_sk_name_entryls
cC`s||jjd�}t||jj�}|jtjkrH|jj}n|jj	}|jj
|jj|||d�}|S(NR i����(
tvalueR#t_txt2obj_gctoidt
dotted_stringR
tCOUNTRY_NAMERtMBSTRING_ASCt
MBSTRING_UTF8tX509_NAME_ENTRY_create_by_OBJRR(RR5R?tobjttypeR6((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyR.xs	cC`st||j�S(N(Rt
crl_number(RRI((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_crl_number�scC`sv|jj�}|j||jjk�|jj||jj�}|jj|t|j	�}|j|dk�|S(Ni(
RtASN1_ENUMERATED_newRRRR
tASN1_ENUMERATED_freetASN1_ENUMERATED_setRtreason(Rt
crl_reasontasn1enumR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_crl_reason�s	cC`se|jj|jjtj|jj���}|j||jjk�|jj	||jj
�}|S(N(RtASN1_GENERALIZEDTIME_setRRtcalendarttimegmtinvalidity_datet	timetupleRR
tASN1_GENERALIZEDTIME_free(RRUttime((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_invalidity_date�s	cC`s^|jj�}|j||jjk�|jj||jj�}x|D]}|jj�}|j||jjk�|jj||�}|j|dk�t	||j
j�}||_|j
rJ|jj�}|j||jjk�xX|j
D]M}|jj�}	|j|	|jjk�|jj||	�}|j|dk�t|tj�r�t	|tjj�|	_t||jd�t|jd���|	j_q�t|tj�s�t�t	|tjj�|	_|jj�}
|j|
|jjk�|
|	j_ |j!r1t"||j!�|
_#nt$||j%�|
_&q�W||_'qJqJW|S(Nitascii((Rtsk_POLICYINFO_new_nullRRRR
tsk_POLICYINFO_freetPOLICYINFO_newtsk_POLICYINFO_pusht_txt2objtpolicy_identifierRBtpolicyidtpolicy_qualifierstsk_POLICYQUALINFO_new_nulltPOLICYQUALINFO_newtsk_POLICYQUALINFO_pusht
isinstancetsixt	text_typeRtOID_CPS_QUALIFIERtpqualidRR#R$tdtcpsurit
UserNoticetAssertionErrortOID_CPS_USER_NOTICEtUSERNOTICE_newt
usernoticet
explicit_textR&texptextt_encode_notice_referencetnotice_referencet	noticereft
qualifiers(Rtcertificate_policiestcptpolicy_infotpiRRAtpqist	qualifiertpqitun((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_certificate_policies�sL
		!	cC`s�|dkr|jjS|jj�}|j||jjk�t||j�|_|jj�}||_	xH|j
D]=}t||�}|jj||�}|j|dk�quW|SdS(Ni(
tNoneRRRt
NOTICEREF_newRR&torganizationtsk_ASN1_INTEGER_new_nullt	noticenostnotice_numbersRtsk_ASN1_INTEGER_push(Rtnoticetnrtnotice_stacktnumbertnumR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyRt�s
	cC`sA|jd�}|jj|d�}|j||jjk�|S(s_
    Converts a Python string with an ASN.1 object ID in dotted form to a
    ASN1_OBJECT.
    RZi(R#RtOBJ_txt2objRRR(RR1RG((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyR_�scC`s.t||�}|jj||jj�}|S(N(R_RR
RtASN1_OBJECT_free(RR1RG((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyR@�scC`st|dd�S(sg
    The OCSP No Check extension is defined as a null ASN.1 value embedded in
    an ASN.1 string.
    si(R((Rtext((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_ocsp_nocheck�scC`s�|jj}|jj�}|jj||jj�}||d|j�}|j|dk�||d|j�}|j|dk�||d|j	�}|j|dk�||d|j
�}|j|dk�||d|j�}|j|dk�||d|j�}|j|dk�||d|j
�}|j|dk�|jr�||d|j�}|j|dk�||d	|j�}|j|dk�nJ||dd�}|j|dk�||d	d�}|j|dk�|S(
Niiiiiiiii(RtASN1_BIT_STRING_set_bittASN1_BIT_STRING_newRR
tASN1_BIT_STRING_freetdigital_signatureRtcontent_commitmenttkey_enciphermenttdata_enciphermentt
key_agreementt
key_cert_signtcrl_signt
encipher_onlyt
decipher_only(Rt	key_usagetset_bittkuR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_key_usages6	cC`s�|jj�}|j||jjk�|jj||jj�}|jdk	rvt	||jt
|j��|_n|jdk	r�t
||j�|_n|jdk	r�t||j�|_n|S(N(RtAUTHORITY_KEYID_newRRRR
tAUTHORITY_KEYID_freetkey_identifierR�RR$tkeyidtauthority_cert_issuert_encode_general_namestissuertauthority_cert_serial_numberRtserial(Rtauthority_keyidtakid((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt _encode_authority_key_identifier!scC`sv|jj�}|jj||jj�}|jr9dnd|_|jrr|jdk	rrt||j�|_	n|S(Ni�i(
RtBASIC_CONSTRAINTS_newRR
tBASIC_CONSTRAINTS_freetcatpath_lengthR�Rtpathlen(Rtbasic_constraintstconstraints((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_basic_constraints9s	cC`s�|jj�}|j||jjk�|jj||jj�}x~|D]v}|jj�}t||j	j
�}t||j�}||_
||_|jj||�}|j|dk�qJW|S(Ni(Rtsk_ACCESS_DESCRIPTION_new_nullRRRR
tsk_ACCESS_DESCRIPTION_freetACCESS_DESCRIPTION_newR_t
access_methodRBt_encode_general_nametaccess_locationtmethodtlocationtsk_ACCESS_DESCRIPTION_push(Rtauthority_info_accesstaiataccess_descriptiontadR�tgnR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt$_encode_authority_information_accessGs	
		cC`st|jj�}|j||jjk�xE|D]=}t||�}|jj||�}|j|dk�q/W|S(Ni(RtGENERAL_NAMES_newRRRR�tsk_GENERAL_NAME_push(Rtnamest
general_namesR1R�R((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyR�[s
cC`s.t||�}|jj||jj�}|S(N(R�RR
RtGENERAL_NAMES_free(RtsanR�((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_alt_namefs	cC`st||jt|j��S(N(R(tdigestR$(Rtski((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_subject_key_identifiernscC`s]xMddgD]?}|j|�r
|t|�}|jd�tj|�Sq
Wtj|�S(Ns*.t.RZ(t
startswithR$R#tidna(R?tprefix((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_idna_encoders
cC`st|tj�r�|jj�}|j||jjk�|jj|_	|jj
�}|j||jjk�t|j�}|jj
||t|��}|j|dk�||j_nSt|tj�rU|jj�}|j||jjk�|jj|_	|jj|jjjd�d�}|j||jjk�||j_n�t|tj�r�|jj�}|j||jjk�t||j�}|jj|_	||j_nTt|tj�r�|jj�}|j||jjk�t|jtj�r:|jjjt j!d|jj"d�}nMt|jtj#�r{|jjjt j!d
|jj"d�}n|jj}t$||t|��}	|jj%|_	|	|j_&nVt|tj'�r|jj�}|j||jjk�|jj(�}
|j|
|jjk�|jj|j)jjd�d�}|j||jjk�|jj*d|j�}|jj*d�}
||
d	<|jj+|jj|
t|j��}||jjkr�|j,�t-d
��n||
_)||
_|jj.|_	|
|j_/nt|tj0�r�|jj�}|j||jjk�t$||j1t|j1��}|jj2|_	||j_3n�t|tj4�r�|jj�}|j||jjk�t$||j1t|j1��}|jj5|_	||j_6nt-dj7|���|S(NiRZi ii�isunsigned char[]sunsigned char **isInvalid ASN.1 datas"{0} is an unknown GeneralName typeIl	(8RfRtDNSNameRtGENERAL_NAME_newRRRtGEN_DNSRHtASN1_IA5STRING_newR�R?R"R$RktdNSNametRegisteredIDtGEN_RIDR�RBR#tregisteredIDt
DirectoryNameR7tGEN_DIRNAMEt
directoryNamet	IPAddresst	ipaddresstIPv4Networktnetwork_addresstpackedRtint_to_bytest
num_addressestIPv6NetworkRt	GEN_IPADDt	iPAddresst	OtherNamet
OTHERNAME_newttype_idtnewt
d2i_ASN1_TYPEt_consume_errorst
ValueErrort
GEN_OTHERNAMEt	otherNamet
RFC822Namet_encodedt	GEN_EMAILt
rfc822NametUniformResourceIdentifiertGEN_URItuniformResourceIdentifiertformat(RR1R�tia5R?RRGtdir_nameR�tipaddrt
other_nameR�Rtdata_ptr_ptrtasn1_str((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyR�{s�	  	
	
		cC`sy|jj�}|jj||jj�}xH|D]@}t||j�}|jj||�}|j|dk�q1W|S(Ni(	Rtsk_ASN1_OBJECT_new_nullRR
tsk_ASN1_OBJECT_freeR_RBtsk_ASN1_OBJECT_pushR(Rtextended_key_usagetekuRARGR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_extended_key_usage�s
iiiiiiiic
C`s|jj�}|jj||jj�}x�|D]�}|jj�}|j||jjk�|jr�|jj	�}|j||jjk�||_xC|jD]5}|jj
|t|d�}|j|dk�q�Wn|jr=|jj
�}|j||jjk�t|_t||j�|j_||_n|jr�|jj
�}|j||jjk�t|_t||j�}	|j|	|jjk�|	|j_||_n|jr�t||j�|_n|jj||�}|j|dk�q1W|S(Ni(Rtsk_DIST_POINT_new_nullRR
tsk_DIST_POINT_freetDIST_POINT_newRRtreasonsR�R�t_CRLREASONFLAGSt	full_nametDIST_POINT_NAME_newRRHR�R1tfullnamet	distpointt
relative_nameRR>trelativenamet
crl_issuert	CRLissuertsk_DIST_POINT_push(
Rtcrl_distribution_pointstcdptpointtdptbitmaskRNRtdpnR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_crl_distribution_points�s@
								cC`s}|jj�}|j||jjk�|jj||jj�}t||j�}||_	t||j
�}||_|S(N(RtNAME_CONSTRAINTS_newRRRR
tNAME_CONSTRAINTS_freet_encode_general_subtreetpermitted_subtreestpermittedSubtreestexcluded_subtreestexcludedSubtrees(Rtname_constraintstnct	permittedtexcluded((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_name_constraintss		cC`s�|jj�}|j||jjk�|jj||jj�}|jdk	rjt	||j�|_
n|jdk	r�t	||j�|_n|S(N(
RtPOLICY_CONSTRAINTS_newRRRR
tPOLICY_CONSTRAINTS_freetrequire_explicit_policyR�RtrequireExplicitPolicytinhibit_policy_mappingtinhibitPolicyMapping(Rtpolicy_constraintstpc((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt_encode_policy_constraints)scC`s�|dkr|jjS|jj�}xV|D]N}|jj�}t||�|_|jj||�}|dks,t	�q,W|SdS(Ni(
R�RRRtsk_GENERAL_SUBTREE_new_nulltGENERAL_SUBTREE_newR�tbasetsk_GENERAL_SUBTREE_pushRn(Rtsubtreestgeneral_subtreesR1tgsR((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyR:s

(Rt
__future__RRRRSR�R�RgtcryptographyRRt0cryptography.hazmat.backends.openssl.decode_asn1RRRtcryptography.x509.oidRR	R
RRRR&R(R+R7R:R>R.RJRQRYR�RtR_R@R�R�R�R�R�R�R�R�R�R�RtReasonFlagstkey_compromiset
ca_compromisetaffiliation_changedt
supersededtcessation_of_operationtcertificate_holdtprivilege_withdrawnt
aa_compromiseR	RR%R.RtBASIC_CONSTRAINTStSUBJECT_KEY_IDENTIFIERt	KEY_USAGEtSUBJECT_ALTERNATIVE_NAMEtISSUER_ALTERNATIVE_NAMEtEXTENDED_KEY_USAGEtAUTHORITY_KEY_IDENTIFIERtCERTIFICATE_POLICIEStAUTHORITY_INFORMATION_ACCESStCRL_DISTRIBUTION_POINTStINHIBIT_ANY_POLICYt
OCSP_NO_CHECKtNAME_CONSTRAINTStPOLICY_CONSTRAINTSt_EXTENSION_ENCODE_HANDLERSt
CRL_NUMBERt_CRL_EXTENSION_ENCODE_HANDLERStCERTIFICATE_ISSUERt
CRL_REASONtINVALIDITY_DATEt$_CRL_ENTRY_EXTENSION_ENCODE_HANDLERS(((sV/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.pyt<module>s�			
											2					 									]	






	*