Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dmapi / usr / lib / python2.7 / dist-packages / dmapi / crypto.pyc
Size: Mime:
ó
Éec@@sodZddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlZddlZddlZddlmZddlmZddlmZddlm Z m!Z!ddlm"Z"ej#e$ƒZ%ej&j'Z'dd„Z)dd„Z*dd„Z+dd„Z,dd„Z-d„Z.d„Z/d„Z0dd„Z1d„Z2d„Z3d„Z4d „Z5d!„Z6d"„Z7d#„Z8d$„Z9d%„Z:dd&„Z;dd'„Z<d(„Z=d)„Z>d*„Z?dd+„Z@d,„ZAdS(-szWrappers around standard crypto data elements.

Includes root and intermediate CAs, SSH key_pairs and x509 certificates.

i(tabsolute_importN(t
exceptions(tbackends(tpadding(thashes(t
serialization(tx509(tprocessutils(tlog(texcutils(t	fileutils(tcontext(tdb(t	exception(t_t_LE(tutilscC@s8tjjr.|r.tjjtjjd|ƒStjjS(Ntprojects(tCONFtcryptotuse_project_catostpathtjointca_path(t
project_id((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt	ca_folder*scC@stjjt|ƒtjjƒS(N(RRRRRRtca_file(R((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyR0scC@stjjt|ƒtjjƒS(N(RRRRRRtkey_file(R((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytkey_path4scC@stjjt|ƒtjjƒS(N(RRRRRRtcrl_file(R((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytcrl_path8scC@sntjjsd}nt|ƒ}tjj|ƒsHtj	d|ƒ‚nt
|dƒ}|jƒSWdQXdS(Ntprojecttr(RRRtNoneRRRtexistsR
tCryptoCAFileNotFoundtopentread(Rtca_file_pathtcafile((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytfetch_ca<s	cC@sxtƒ}tjjtƒƒsttjjtjjtjjtƒddƒƒ}t	j
|ƒtjd|d|ƒndS(s Ensure the CA filesystem exists.tCAsgenrootca.shtshtcwdN(
RRRR#RtabspathRtdirnamet__file__R
tensure_treeRtexecute(tca_dirtgenrootca_sh_path((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytensure_ca_filesystemFs		'
cC@syà|jdƒ}tj|tjƒƒtj|jdƒdƒ}tj	tj
ƒtjƒƒ}|j|ƒ|jƒ}t
j|ƒ}tjr¥|jdƒ}ndjd„t|ddd…|ddd…ƒDƒƒSWn)tk
rtjdtd	ƒƒ‚nXdS(
Nsutf-8t itasciit:cs@s|]\}}||VqdS(N((t.0tatb((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pys	<genexpr>`sitreasonsfailed to generate fingerprint(tencodeRtload_ssh_public_keyRtdefault_backendtbase64t	b64decodetsplitRtHashtMD5tupdatetfinalizetbinasciithexlifytsixtPY3tdecodeRtzipt	ExceptionR
tInvalidKeypairR(t
public_keyt	pub_bytestpub_datatdigesttmd5hashtraw_fp((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytgenerate_fingerprintQs
	>
	cC@sõy³t|tjƒr'|jdƒ}ntj|tjƒƒ}tj	|j
tjƒƒƒ}tj
rx|jdƒ}ndjd„t|ddd…|ddd…ƒDƒƒSWn;tttjfk
rð}tjdtdƒ|ƒ‚nXdS(	Nsutf-8R6R7cs@s|]\}}||VqdS(N((R8R9R:((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pys	<genexpr>osiiR;s6failed to generate X509 fingerprint. Error message: %s(t
isinstanceRHt	text_typeR<Rtload_pem_x509_certificateRR>RFRGtfingerprintRtSHA1RIRJRRKt
ValueErrort	TypeErrortErrorR
RMR(tpem_keytcertRStex((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytgenerate_x509_fingerprintfs	>		icC@sltjj|ƒ}tjƒ}|j|ƒ|jƒ}d|jƒ|jƒf}t	|ƒ}|||fS(Ns%s %s Generated-by-Nova(
tparamikotRSAKeytgenerateRHtStringIOtwrite_private_keytgetvaluetget_namet
get_base64RT(tbitstkeytkeyouttprivate_keyRNRX((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytgenerate_key_pairvs
cC@sntjjsd}nt|ƒ}tjj|ƒsHtj	d|ƒ‚nt
|dƒ}|jƒSWdQXdS(sGet crl file for project.R R!N(RRRR"RRRR#R
tCryptoCRLFileNotFoundR%R&(Rt
crl_file_pathtcrlfile((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt	fetch_crl€s	cC@sÍt|ƒ}tjj|ƒs3tjd|ƒ‚nt|dƒ}|jƒ}WdQXy5tj	|dtjƒƒ}|j
|tjƒƒSWn:tttjfk
rÈ}tjdtj|ƒƒ‚nXdS(NRtrbR;(RRRR#R
tProjectNotFoundR%R&Rtload_pem_private_keyR"RR>tdecryptRtPKCS1v15RZR[RtUnsupportedAlgorithmtDecryptionFailureRHRV(Rttexttprivate_key_filetftdatatpriv_keytexc((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytdecrypt_text‹scC@sšt|tjƒr$|jdƒ}nyA|jdƒ}tj|tjƒƒ}|j|t	j
ƒƒSWn.tk
r•}tj
dtj|ƒƒ‚nXdS(s_Encrypt text with an ssh public key.

    If text is a Unicode string, encode it to UTF-8.
    sutf-8R;N(RURHRVR<RR=RR>tencryptRRvRLR
tEncryptionFailure(tssh_public_keyRyROtpub_keyR~((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytssh_encrypt_text™scC@s¬y]tjddddd|dt|ƒƒtjddddddtjjdt|ƒƒWnHtk
r‚tjd	|ƒ‚n&t	j
k
r§tjd	|ƒ‚nXd
S(sRevoke a cert by file name.topenssltcas-configs
./openssl.cnfs-revokeR,s-gencrls-outRN(RR1RRRRtOSErrorR
RsRtProcessExecutionErrortRevokeCertFailure(Rt	file_name((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytrevoke_cert©s 
cC@sBtjƒ}x/tj||ƒD]}t|d|dƒqWdS(sRevoke all user certs.RRŠN(Rtget_admin_contextRtcertificate_get_all_by_userR‹(tuser_idtadminR^((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytrevoke_certs_by_user·scC@sBtjƒ}x/tj||ƒD]}t|d|dƒqWdS(sRevoke all project certs.RRŠN(RRŒRtcertificate_get_all_by_projectR‹(RRR^((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytrevoke_certs_by_project¾scC@sEtjƒ}x2tj|||ƒD]}t|d|dƒq"WdS(s!Revoke certs for user in project.RRŠN(RRŒRt'certificate_get_all_by_user_and_projectR‹(RŽRRR^((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt revoke_certs_by_user_and_projectÇscC@stjj|tjƒfS(s%Helper to generate user cert subject.(RRtproject_cert_subjectRtisotime(R((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt_project_cert_subjectÏscC@stjj||tjƒfS(s%Helper to generate user cert subject.(RRtuser_cert_subjectRR–(RŽR((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt_user_cert_subjectÔscC@s^t||ƒ}tjƒÒ}tjjtjj|dƒƒ}tjjtjj|dƒƒ}tjddd|t|ƒƒtjdddd|d|d	d
|ƒ
t	|ƒ}|j
ƒ}WdQXt	|ƒ}|j
ƒ}	WdQXWdQXt|	|ƒ\}
}tjjt|ƒd|
ƒ}i|d
6|d6|d6}
t
jtjƒ|
ƒ||fS(s-Generate and sign a cert for user in project.stemp.keystemp.csrR…tgenrsas-outtreqs-news-keys-batchs-subjNsnewcerts/%s.pemRŽRRŠ(R™RttempdirRRR-RR1tstrR%R&tsign_csrRRtcertificate_createRRŒ(RŽRRitsubjectttmpdirtkeyfiletcsrfileR{Rltcsrtserialt
signed_csrtfnameR^((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytgenerate_x509_certÚs$!!

cC@sOd|}d|}tjƒ }tjjtjj|dƒƒ}tjjtjj|dƒƒ}t||ƒtjddddd	d
d|dd
|ddd|d|dddtƒ\}}tjdddd|ddd|dtƒ\}	}t	j
|	ƒ}
t|ƒ}tj
r<|
jdƒ}
|jdƒ}nWdQX|
||fS(s:Generate a cert for passwordless auth for user in project.s/CN=%ss%s@localhoststemp.keys	temp.confR…R›s-x509s-nodess-dayst3650s-configs-newkeysrsa:%ss-outformtPEMs-keyouts-subjs-extensionst
v3_req_clienttbinarytpkcs12s-exports-inkeys	-passwordspass:t
process_inputR6sutf-8N(RRœRRR-Rt_create_x509_openssl_configR1tTrueR?t	b64encodeR`RHRIRJ(RŽRiR tupnR¡R¢tconffiletcertificatet_errtoutRlRX((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytgenerate_winrm_x509_certòs,

!!
		cC@s3d}t|dƒ}|j||ƒWdQXdS(Ns®distinguished_name  = req_distinguished_name
[req_distinguished_name]
[v3_req_client]
extendedKeyUsage = clientAuth
subjectAltName = otherName:1.3.6.1.4.1.311.20.2.3;UTF8:%s
tw(R%twrite(R³R²tcontenttfile((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyR¯scC@sttjjt|ƒƒsptjjtjjtjjtƒddƒƒ}tj	d||t
|ƒdtƒƒndS(NR*sgeninter.shR+R,(RRR#RR-RR.R/RR1R—R(Rtgeninter_sh_path((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt_ensure_project_folders
	'cC@s²t|ƒ}tjj|dƒ}tjj|dƒ}tjj|ƒrLdStd|dƒ\}}t|dƒ}|j|ƒWdQXt|dƒ}|j|ƒWdQXdS(Ns
server.keys
server.crtsproject-vpniR¸(RRRRR#R¨R%R¹(Rtproject_foldertkey_fntcrt_fnRjR¤R¢tcrtfile((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pytgenerate_vpn_files%scC@sHtjjsd}n|s+t|tƒƒSt|ƒt|t|ƒƒS(N(RRRR"t	_sign_csrRR½(tcsr_textR((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyRž8s	
c
C@sYtjƒG}tjj|dƒ}tjj|dƒ}y)t|dƒ}|j|ƒWdQXWn7tk
r›tj	ƒt
jtdƒƒWdQXnXt
j
d|ƒtj|ƒtjdddd	|d
dd|d
|ƒ	tjddd|ddd
|ƒ\}}|jdƒdjƒ}t|dƒ}	||	jƒfSWdQXWdQXdS(Nsinbound.csrsoutbound.csrR¸sFailed to write inbound.csrsFlags path: %sR…R†s-batchs-outs-configs
./openssl.cnfs-infilesR,Rs-ins-serials-nooutt=iR!(RRœRRRR%R¹tIOErrorR	tsave_and_reraise_exceptiontLOGR
RtdebugR
R0R1t
rpartitiontstripR&(
RÄRR¡tinboundtoutboundR£R¶RµR¥RÁ((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyRÃAs$


(Bt__doc__t
__future__RR?RFRtcryptographyRtcryptography.hazmatRt)cryptography.hazmat.primitives.asymmetricRtcryptography.hazmat.primitivesRRRtoslo_concurrencyRtoslo_logRtloggingt
oslo_utilsR	R
RaRHt
dmapi.conftdmapiRRR
t
dmapi.i18nRRRt	getLoggert__name__RÈtconfRR"RRRRR)R4RTR`RmRqRR„R‹RR’R”R—R™R¨R·R¯R½RÂRžRÃ(((s0/usr/lib/python2.7/dist-packages/dmapi/crypto.pyt<module>sb