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    
python3-dmapi-el9 / usr / lib / python3.9 / site-packages / dmapi / __pycache__ / crypto.cpython-39.pyc
Size: Mime:
a

[r`e«0ã@sèdZddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlZddlZddlZddlmZddlmZddlmZddlm Z m!Z!ddlm"Z"e #e$¡Z%ej&j'Z'dFdd„Z(dGdd„Z)dHdd„Z*dIdd„Z+dJdd„Z,dd„Z-dd „Z.d!d"„Z/dKd$d%„Z0d&d'„Z1d(d)„Z2d*d+„Z3d,d-„Z4d.d/„Z5d0d1„Z6d2d3„Z7d4d5„Z8d6d7„Z9dLd8d9„Z:dMd:d;„Z;d<d=„Z<d>d?„Z=d@dA„Z>dNdBdC„Z?dDdE„Z@dS)OzzWrappers around standard crypto data elements.

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

é)Úabsolute_importN)Ú
exceptions)Úbackends)Úpadding)Úhashes)Ú
serialization)Úx509)Úprocessutils)Úlog)Úexcutils)Ú	fileutils)Úcontext)Údb)Ú	exception)Ú_Ú_LE)ÚutilscCs(tjjr |r tj tjjd|¡StjjS)NZprojects)ÚCONFÚcryptoÚuse_project_caÚosÚpathÚjoinÚca_path©Ú
project_id©rú0/usr/lib/python3.9/site-packages/dmapi/crypto.pyÚ	ca_folder*srcCstj t|ƒtjj¡S©N)rrrrrrZca_filerrrrr0srcCstj t|ƒtjj¡Sr)rrrrrrZkey_filerrrrÚkey_path4sr cCstj t|ƒtjj¡Sr)rrrrrrÚcrl_filerrrrÚcrl_path8sr"cCsbtjjsd}t|ƒ}tj |¡s,tj|d‚t	|dƒ}| 
¡WdƒS1sT0YdS)N©ZprojectÚr)rrrrrrÚexistsrZCryptoCAFileNotFoundÚopenÚread)rZca_file_pathZcafilerrrÚfetch_ca<sr(cCsRtƒ}tj tƒ¡sNtj tj tj t¡dd¡¡}t	 
|¡tjd||ddS)z Ensure the CA filesystem exists.ÚCAzgenrootca.shÚsh©ÚcwdN)
rrrr%rÚabspathrÚdirnameÚ__file__rÚensure_treerÚexecute)Zca_dirZgenrootca_sh_pathrrrÚensure_ca_filesystemFsÿ
r2c	CsÆzž| d¡}t |t ¡¡t | d¡d¡}t 	t 
¡t ¡¡}| |¡| ¡}t
 |¡}tjrp| d¡}d dd„t|ddd…|ddd…ƒDƒ¡WStyÀtjtd	ƒd
‚Yn0dS)Núutf-8ú éÚasciiú:css|]\}}||VqdSrr©Ú.0ÚaÚbrrrÚ	<genexpr>`óz'generate_fingerprint.<locals>.<genexpr>ézfailed to generate fingerprint©Úreason)ÚencoderÚload_ssh_public_keyrÚdefault_backendÚbase64Z	b64decodeÚsplitrZHashZMD5ÚupdateÚfinalizeÚbinasciiÚhexlifyÚsixÚPY3ÚdecoderÚzipÚ	ExceptionrÚInvalidKeypairr)Ú
public_keyÚ	pub_bytesZpub_dataÚdigestZmd5hashÚraw_fprrrÚgenerate_fingerprintQs"
ÿ


0ÿrTc
CsÀzzt|tjƒr| d¡}t |t ¡¡}t 	| 
t ¡¡¡}tj
rL| d¡}d dd„t|ddd…|ddd…ƒDƒ¡WStttjfyº}z tjtdƒ|d	‚WYd}~n
d}~00dS)
Nr3r6r7css|]\}}||VqdSrrr8rrrr<or=z,generate_x509_fingerprint.<locals>.<genexpr>r>r5z6failed to generate X509 fingerprint. Error message: %sr?)Ú
isinstancerJÚ	text_typerArZload_pem_x509_certificaterrCrHrIÚfingerprintrZSHA1rKrLrrMÚ
ValueErrorÚ	TypeErrorÚErrorrrOr)Zpem_keyÚcertrSÚexrrrÚgenerate_x509_fingerprintfs 
ÿ
0ÿÿr]écCsLtj |¡}t ¡}| |¡| ¡}d| ¡| ¡f}t	|ƒ}|||fS)Nz%s %s Generated-by-Nova)
ÚparamikoZRSAKeyZgeneraterJÚStringIOZwrite_private_keyÚgetvalueZget_nameZ
get_base64rT)ÚbitsÚkeyZkeyoutÚprivate_keyrPrWrrrÚgenerate_key_pairvs
recCsbtjjsd}t|ƒ}tj |¡s,tj|d‚t	|dƒ}| 
¡WdƒS1sT0YdS)zGet crl file for project.Nr#r$)rrrr"rrr%rZCryptoCRLFileNotFoundr&r')rZ
crl_file_pathZcrlfilerrrÚ	fetch_crl€srfc
Csºt|ƒ}tj |¡s tj|d‚t|dƒ}| ¡}Wdƒn1sH0Yz$t 	|dt
 ¡¡}| |t
 ¡¡WStttjfy´}ztjt |¡d‚WYd}~n
d}~00dS)NrÚrbr?)r rrr%rÚProjectNotFoundr&r'rZload_pem_private_keyrrCZdecryptrÚPKCS1v15rXrYrZUnsupportedAlgorithmZDecryptionFailurerJrV)rÚtextZprivate_key_fileÚfÚdataZpriv_keyÚexcrrrÚdecrypt_text‹s&
ÿrnc
Cs~t|tjƒr| d¡}z,| d¡}t |t ¡¡}| |t	 
¡¡WStyx}ztj
t |¡d‚WYd}~n
d}~00dS)z_Encrypt text with an ssh public key.

    If text is a Unicode string, encode it to UTF-8.
    r3r?N)rUrJrVrArrBrrCZencryptrrirNrZEncryptionFailure)Zssh_public_keyrjrQZpub_keyrmrrrÚssh_encrypt_text™s

ÿroc
Cs„zBtjddddd|t|ƒdtjddddddtjjt|ƒdWn<ty`tj|d	‚Yn t	j
y~tj|d	‚Yn0d
S)zRevoke a cert by file name.ÚopensslÚcaú-configú
./openssl.cnfz-revoker+z-gencrlú-outrN)rr1rrrr!ÚOSErrorrrhr	ZProcessExecutionErrorZRevokeCertFailure)rÚ	file_namerrrÚrevoke_cert©sÿÿ
rwcCs0t ¡}t ||¡D]}t|d|dƒqdS)zRevoke all user certs.rrvN)r
Úget_admin_contextrZcertificate_get_all_by_userrw)Úuser_idÚadminr[rrrÚrevoke_certs_by_user·sr{cCs0t ¡}t ||¡D]}t|d|dƒqdS)zRevoke all project certs.rrvN)r
rxrZcertificate_get_all_by_projectrw)rrzr[rrrÚrevoke_certs_by_project¾sr|cCs2t ¡}t |||¡D]}t|d|dƒqdS)z!Revoke certs for user in project.rrvN)r
rxrZ'certificate_get_all_by_user_and_projectrw)ryrrzr[rrrÚ revoke_certs_by_user_and_projectÇs
ÿr}cCstjj|t ¡fS©z%Helper to generate user cert subject.)rrZproject_cert_subjectrÚisotimerrrrÚ_project_cert_subjectÏsr€cCstjj||t ¡fSr~)rrZuser_cert_subjectrr)ryrrrrÚ_user_cert_subjectÔs
ÿrc
Cs8t||ƒ}t ¡Î}tj tj |d¡¡}tj tj |d¡¡}t ddd|t|ƒ¡t dddd|d|d	d
|¡
t	|ƒ}| 
¡}Wdƒn1s˜0Yt	|ƒ}| 
¡}	Wdƒn1sÈ0YWdƒn1sæ0Yt|	|ƒ\}
}tj t|ƒd|
¡}|||d
œ}
t
 t ¡|
¡||fS)z-Generate and sign a cert for user in project.útemp.keyztemp.csrrpZgenrsartÚreqz-newz-keyú-batchú-subjNznewcerts/%s.pem)ryrrv)rrÚtempdirrrr-rr1Ústrr&r'Úsign_csrrrZcertificate_creater
rx)ryrrbÚsubjectÚtmpdirÚkeyfileÚcsrfilerkrdÚcsrÚserialZ
signed_csrÚfnamer[rrrÚgenerate_x509_certÚs(

ÿ
&
DþrcCsüd|}d|}t ¡Ê}tj tj |d¡¡}tj tj |d¡¡}t||ƒtjddddd	d
d|dd
|ddd|d|dddd\}}tjdddd|dd|dd	\}	}t 	|	¡}
t
|ƒ}tjrÔ|
 
d¡}
| 
d¡}Wdƒn1sè0Y|
||fS)z:Generate a cert for passwordless auth for user in project.z/CN=%sz%s@localhostr‚z	temp.confrprƒz-x509z-nodesz-daysZ3650rrz-newkeyzrsa:%sz-outformZPEMz-keyoutr…z-extensionsZ
v3_req_clientT)ÚbinaryZpkcs12z-exportz-inkeyz	-passwordzpass:)Z
process_inputr‘r6r3N)rr†rrr-rÚ_create_x509_openssl_configr1rDZ	b64encoder]rJrKrL)ryrbr‰ÚupnrŠr‹ÚconffileZcertificateÚ_errÚoutrdrWrrrÚgenerate_winrm_x509_certòs0

û

ý


(r—cCs@d}t|dƒ}| ||¡Wdƒn1s20YdS)Nz®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
Úw)r&Úwrite)r”r“ZcontentÚfilerrrr’sr’cCsNtj t|ƒ¡sJtj tj tj t¡dd¡¡}tj	d||t
|ƒtƒddS)Nr)zgeninter.shr*r+)rrr%rr-rr.r/rr1r€r)rZgeninter_sh_pathrrrÚ_ensure_project_foldersÿ

ÿr›cCs°t|ƒ}tj |d¡}tj |d¡}tj |¡r4dStd|dƒ\}}t|dƒ}| |¡Wdƒn1sn0Yt|dƒ}| |¡Wdƒn1s¢0YdS)Nz
server.keyz
server.crtzproject-vpnr^r˜)rrrrr%rr&r™)rZproject_folderZkey_fnZcrt_fnrcrr‹ÚcrtfilerrrÚgenerate_vpn_files%s(rcCs2tjjsd}|st|tƒƒSt|ƒt|t|ƒƒSr)rrrÚ	_sign_csrrr›)Úcsr_textrrrrrˆ8srˆc

Csvt ¡V}tj |d¡}tj |d¡}z8t|dƒ}| |¡Wdƒn1sT0YWnHty¨t 	¡t
 tdƒ¡Wdƒn1sš0YYn0t
 
d|¡t |¡tjdddd	|d
dd||d

tjddd|dd|d
\}}| d¡d ¡}t|dƒ*}	||	 ¡fWdƒWdƒS1sH0YWdƒn1sh0YdS)Nzinbound.csrzoutbound.csrr˜zFailed to write inbound.csrzFlags path: %srprqr„rtrrrsz-infilesr+rz-inz-serialz-nooutú=r>r$)rr†rrrr&r™ÚIOErrorrZsave_and_reraise_exceptionÚLOGrrÚdebugrr0r1Ú
rpartitionÚstripr')
rŸrrŠZinboundZoutboundrŒr–r•rŽrœrrrržAs(,
2
ÿÿ
rž)N)N)N)N)N)r^)r^)r^)N)AÚ__doc__Z
__future__rrDrHrZcryptographyrZcryptography.hazmatrZ)cryptography.hazmat.primitives.asymmetricrZcryptography.hazmat.primitivesrrrZoslo_concurrencyr	Zoslo_logr
ZloggingZ
oslo_utilsrrr_rJZ
dmapi.confZdmapir
rrZ
dmapi.i18nrrrZ	getLoggerÚ__name__r¢Zconfrrrr r"r(r2rTr]rerfrnrorwr{r|r}r€rrr—r’r›rrˆržrrrrÚ<module>sb