← Back
Editing: crypto_util.cpython-312.pyc
� n�h�U � � � d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm Z ddlm Z ddlmZ dd lm Z dd lmZ ddlmZ ddlmZ dd lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl"m$Z$ ddl"m%Z% ddl&m'Z' ddl(m)Z* ddl+m,Z, ddl+m-Z- ddl+m.Z. ddl/m0Z0 e rddl1m2Z2 dd l3m4Z4 dd!l5m6Z6 dd"l7m8Z8 ejr e:� Z; dZd#e<d$ee= d%e=d&e=d'e=d(e>d)e.j~ fd*�Z@ d[d+e.j~ d,eee= ee= f d-ee= d.e>d(e>d)e.j� fd/�ZBd0eCd)e>fd1�ZDd0eCd+eCd)e>fd2�ZEd3e=d4eCd)e e*j� e.j� ee= f fd5�ZG d\d6e<d%e=d&ee= d)eCfd7�ZHd+ee=eCf d)e>fd8�ZId9e-j� d)dfd:�ZKd9e-j� d)dfd;�ZLd<eed=d>ee!d?d@f dAeCdBeCdCej� d)df dD�ZNdEe=dFe=d)dfdG�ZOd9e-j� d)dfdH�ZPe*j� j� fdIeCdJee*j� e<f d)ee= fdK�ZRe*j� j� fdIeCdJee*j� e<f d)ee= fdL�ZSe*j� j� fd0eCdJee*j� e<f d)ee= fdM�ZTdEe=d)ej fdN�ZUdEe=d)ej fdO�ZVdPe=d)e=fdQ�ZW ej� dRej� � ZZdSe=d)e e=e=f fdT�Z[dEe=d)e<fdU�Z\ d]dVee= dWe=dXe>d)e=fdY�Z]y)^z�Certbot client crypto utility functions. .. todo:: Make the transition to use PSS rather than PKCS1_v1_5 when the server is capable of handling the signatures. � N)�List)�Optional)�Set)�Tuple)� TYPE_CHECKING)�Union)�x509)�InvalidSignature)�UnsupportedAlgorithm)�default_backend)�hashes)� serialization)�ec)�rsa)�DSAPublicKey)�ECDSA)�EllipticCurvePublicKey)�PKCS1v15)�RSAPublicKey)�Encoding)�NoEncryption)� PrivateFormat)�SSL)�crypto_util)�errors)� interfaces)�util)�os)�Ed448PublicKey)�Ed25519PublicKey)� X448PublicKey)�X25519PublicKey�key_size�key_dir�key_type�elliptic_curve�keyname�strict_permissions�returnc �D � t | |xs d|�� }d}|r�t j |d|� t j t j j ||� d d � \ } }| 5 | j |� ddd� |dk( rt j d| |� nt j d | |� t j ||� S # t $ r=}t j dd�� t j dt |� � |�d}~ww xY w# 1 sw Y ��xY w)a$ Initializes and saves a privkey. Inits key and saves it in PEM format on the filesystem. .. note:: keyname is the attempted filename, it may be different if a file already exists at the path. :param int key_size: key size in bits if key size is rsa. :param str key_dir: Optional key save directory. :param str key_type: Key Type [rsa, ecdsa] :param str elliptic_curve: Name of the elliptic curve if key type is ecdsa. :param str keyname: Filename of key :param bool strict_permissions: If true and key_dir exists, an exception is raised if the directory doesn't have 0700 permissions or isn't owned by the current user. :returns: Key :rtype: :class:`certbot.util.Key` :raises ValueError: If unable to generate the key given key_size. � secp256r1)�bitsr&