+
    '(j                     l    ^ RI 5 ^ RIHtHtHtHt ^ RIHtHtH	t	 RR.t
RRR]! 4       R3R ltR	R ltR# )
    )*)DerNullDerSequenceDerObjectIdDerOctetString)PBES1PBES2	PbesErrorwrapunwrapNc                4   Vf   \        \        V4      .4      pM\        \        V4      V.4      p\        ^ V\        V 4      .4      pVP                  4       p	Vf   V	# V'       g   \	        R4      h\        V4      pVf   Rp\        P                  ! WW4V4      # )a  Wrap a private key into a PKCS#8 blob (clear or encrypted).

Args:

  private_key (bytes):
    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)
    or ``'1.2.840.10045.2.1'`` (for ECC keys).

Keyword Args:

  passphrase (bytes 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.
    Refer to :ref:`the encryption parameters<enc_params>` .
    The default value is ``'PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC'``.

  prot_params (dictionary):
    Parameters for the key derivation function (KDF).
    Refer to :ref:`the encryption parameters<enc_params>` .

  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`.

Returns:
  bytes: The PKCS#8-wrapped private key (possibly encrypted).
zEmpty passphrasez"PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC)r   r   r   encode
ValueErrortobytesr	   encrypt)
private_keykey_oid
passphrase
protectionprot_params
key_paramsrandfunc	algorithmpk_infopk_info_ders
   &&&&&&&   D/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/IO/PKCS8.pyr   r   2   s    j W!5 67	W!5z BC	{+ G
 .."K+,, $J9
==#(< <    c                   Veb   \        V4      pRp \        P                  ! W4      p RpV'       g    \        P                  ! W4      p RpV'       g   \        RX,          4      h\        4       P                  V RR	7      p\        V4      ^8X  d   V'       g   \        R
4      hV^ ,          ^ 8X  d   \        V4      R9  d   \        R4      hM5V^ ,          ^8X  d   \        V4      R9  d   \        R4      hM\        R4      h\        4       P                  V^,          RR	7      p\        4       P                  V^ ,          4      P                  p\        V4      ^8X  d   RpM# \        4       P                  V^,          4       Rp\        4       P                  V^,          4      P                  p	WyV3#   \         d   pR\	        T4      ,          p Rp?ELRp?i\
         d    Rp ELi ; i  \         d%   pXR\	        T4      ,          ,          p Rp?ELRp?i\
         d    XR,          p ELi ; i   T^,          p L; i)a  Unwrap a private key from a PKCS#8 blob (clear or encrypted).

Args:
  p8_private_key (bytes):
    The private key wrapped into a PKCS#8 container, DER encoded.

Keyword Args:
  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 (bytes, DER encoded)
   #. the associated parameters (bytes, DER encoded) or ``None``

Raises:
  ValueError : if decoding fails
NFTz	PBES1[%s]zPBES1[Invalid]z
,PBES2[%s]z,PBES2[Invalid]zError decoding PKCS#8 (%s))nr_elementsz;Not a valid clear PKCS#8 structure (maybe it is encrypted?)z#Not a valid PrivateKeyInfo SEQUENCE)            )r!   r"   )r!   r"   r#   )   r    )r   r   decryptr
   strr   r	   r   decodelenr   valuer   r   payload)
p8_private_keyr   founde	error_strr   algoalgo_oidalgo_paramsr   s
   &&        r   r   r      s   , Z(
	)"]]>FNE /!&~!J 9IEFFm"">|"LG
7|q 4 5 	50 qzQw<v%BCC &	qw<y(BCC ) >??=
?D}##DG,22H
4yA~	"IT!W%K
 !"))'!*5==K ;//I  	-#c!f,I 	)(I	)  3\CF22	 /..	/b	"q'KsR   F3 G- #"H5 3G*>GG*#G*)G*-H28HH2$
H21H25I)N)Crypto.Util.py3compatCrypto.Util.asn1r   r   r   r   Crypto.IO._PBESr   r	   r
   __all__r   r    r   r   <module>r7      sF   F $  4 3 8
 +/4gi$L<^a0r   