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

ىg«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_dataZdigestZmd5hashÚraw_fprrrÚgenerate_fingerprintQs"
ÿ


0ÿrSc
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ÚcertrRÚ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_base64rS)ÚbitsÚkeyZkeyoutÚprivate_keyrPrVrrrÚgenerate_key_pairvs
rdcCsbtjjs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rec
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ÚPKCS1v15rWrXrZUnsupportedAlgorithmZDecryptionFailurerJrU)rÚtextZprivate_key_fileÚfÚdataZpriv_keyÚexcrrrÚdecrypt_text‹s&
ÿrmc
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)rTrJrUrArrBrrCZencryptrrhrNrZEncryptionFailure)Zssh_public_keyrirQZpub_keyrlrrrÚssh_encrypt_text™s

ÿrnc
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!ÚOSErrorrrgr	ZProcessExecutionErrorZRevokeCertFailure)rÚ	file_namerrrÚrevoke_cert©sÿÿ
rvcCs0t ¡}t ||¡D]}t|d|dƒqdS)zRevoke all user certs.rruN)r
Úget_admin_contextrZcertificate_get_all_by_userrv)Úuser_idÚadminrZrrrÚrevoke_certs_by_user·srzcCs0t ¡}t ||¡D]}t|d|dƒqdS)zRevoke all project certs.rruN)r
rwrZcertificate_get_all_by_projectrv)rryrZrrrÚrevoke_certs_by_project¾sr{cCs2t ¡}t |||¡D]}t|d|dƒqdS)z!Revoke certs for user in project.rruN)r
rwrZ'certificate_get_all_by_user_and_projectrv)rxrryrZrrrÚ 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ÏsrcCstjj||t ¡fSr})rrZuser_cert_subjectrr~)rxrrrrÚ_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.csrroZgenrsarsÚreqz-newz-keyú-batchú-subjNznewcerts/%s.pem)rxrru)r€rÚtempdirrrr-rr1Ústrr&r'Úsign_csrrrZcertificate_creater
rw)rxrraÚsubjectÚtmpdirÚkeyfileÚcsrfilerjrcÚcsrÚserialZ
signed_csrÚfnamerZrrrÚ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.confror‚z-x509z-nodesz-daysZ3650rqz-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)rxrarˆÚupnr‰rŠÚconffileZcertificateÚ_errÚoutrcrVrrrÚ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/rr1rr)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_fnrbrŒ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: %srorprƒrsrqrrz-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(r2rSr\rdrermrnrvrzr{r|rr€rr–r‘ršrœr‡rrrrrÚ<module>sb