Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/Crypto/IO/__pycache__/PKCS8.cpython-311.pyc



]jn#lddlTddlmZmZmZmZddlmZmZm	Z	ddgZ
dddedfdZd	dZdS)
)*)DerNullDerSequenceDerObjectIdDerOctetString)PBES1PBES2	PbesErrorwrapunwrapNcd|tt|g}ntt||g}td|t|g}|}	||	S|st	dt|}|d}t
j|	||||S)a/Wrap a private key into a PKCS#8 blob (clear or encrypted).

    Args:

      private_key (byte string):
        The private key encoded in binary form. The actual encoding is
        algorithm specific. In most cases, it is DER.

      key_oid (string):
        The object identifier (OID) of the private key to wrap.
        It is a dotted string, like ``1.2.840.113549.1.1.1`` (for RSA keys).

      passphrase (bytes string or string):
        The secret passphrase from which the wrapping key is derived.
        Set it only if encryption is required.

      protection (string):
        The identifier of the algorithm to use for securely wrapping the key.
        The default value is ``PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC``.

      prot_params (dictionary):
        Parameters for the protection algorithm.

        +------------------+-----------------------------------------------+
        | Key              | Description                                   |
        +==================+===============================================+
        | iteration_count  | The KDF algorithm is repeated several times to|
        |                  | slow down brute force attacks on passwords    |
        |                  | (called *N* or CPU/memory cost in scrypt).    |
        |                  | The default value for PBKDF2 is 1000.         |
        |                  | The default value for scrypt is 16384.        |
        +------------------+-----------------------------------------------+
        | salt_size        | Salt is used to thwart dictionary and rainbow |
        |                  | attacks on passwords. The default value is 8  |
        |                  | bytes.                                        |
        +------------------+-----------------------------------------------+
        | block_size       | *(scrypt only)* Memory-cost (r). The default  |
        |                  | value is 8.                                   |
        +------------------+-----------------------------------------------+
        | parallelization  | *(scrypt only)* CPU-cost (p). The default     |
        |                  | value is 1.                                   |
        +------------------+-----------------------------------------------+

      key_params (DER object or None):
        The ``parameters`` field to use in the ``AlgorithmIdentifier``
        SEQUENCE. If ``None``, no ``parameters`` field will be added.
        By default, the ASN.1 type ``NULL`` is used.

      randfunc (callable):
        Random number generation function; it should accept a single integer
        N and return a string of random data, N bytes long.
        If not specified, a new RNG will be instantiated
        from :mod:`Crypto.Random`.

    Return:
      The PKCS#8-wrapped private key (possibly encrypted), as a byte string.
    NrzEmpty passphrasez"PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC)rrrencode
ValueErrortobytesr	encrypt)
private_keykey_oid
passphrase
protectionprot_params
key_paramsrandfunc	algorithmpk_infopk_info_ders
          q/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/IO/PKCS8.pyrr2sHW!5!5 677		W!5!5z BCC	{++G
..""K-+,,,$$J9
=j#[(<<<c|rt|}d}	tj||}d}n6#t$r}dt	|z}Yd}~nd}~wt
$rd}YnwxYw|sU	t
j||}d}n<#t$r}|dt	|zz
}Yd}~nd}~wt
$r|dz
}YnwxYw|std|zt|d	
}t|dkr|std|d
d
kr!t|dvrtdn<|d
dkr!t|dvrtdntdt|dd
}t|d
j}t|dkrd}n:	t|dd}n#|d}YnxYwt|dj}	||	|fS)aHUnwrap a private key from a PKCS#8 blob (clear or encrypted).

    Args:
      p8_private_key (byte string):
        The private key wrapped into a PKCS#8 blob, DER encoded.
      passphrase (byte string or string):
        The passphrase to use to decrypt the blob (if it is encrypted).

    Return:
      A tuple containing

       #. the algorithm identifier of the wrapped key (OID, dotted string)
       #. the private key (byte string, DER encoded)
       #. the associated parameters (byte string, DER encoded) or ``None``

    Raises:
      ValueError : if decoding fails
    FTz	PBES1[%s]NzPBES1[Invalid]z
,PBES2[%s]z,PBES2[Invalid]zError decoding PKCS#8 (%s)))nr_elementsrz;Not a valid clear PKCS#8 structure (maybe it is encrypted?)r)r r!z#Not a valid PrivateKeyInfo SEQUENCE)r r!r")r$r)rrdecryptr
strrr	rdecodelenrvaluerrpayload)
p8_private_keyrfounde	error_strralgoalgo_oidalgo_paramsrs
          rrrs(GZ((
	)"]>:FFNEE	-	-	-#c!ff,IIIIII	)	)	)(III	)	/
/!&~z!J!J
3
3
3\CFF22						
/
/
/..			
/	G9IEFFFmm"">|"LLG
7||q455	50qzQw<<v%%BCCC&	qw<<y((BCCC)>???==
??D}}##DG,,2H
4yyA~~	"IIT!W%%%KK	"q'KKK!""))'!*55=K
k;//sD-
A AA A &A>>
B7B""B76B7*)H
H )N)
Crypto.Util.py3compatCrypto.Util.asn1rrrrCrypto.IO._PBESrr	r
__all__rrrr<module>r7sF$###43333333338
+/4ggii$[<[<[<[<|_0_0_0_0_0_0r
Back to Directory File Manager