
    E#ix                         S r SSKrSSKJrJr  SSKJr  SSKJr   " S S5      r	 " S	 S
\5      r
 " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      rg)zModule for BLAKE-2 algorithms.    N)ABCabstractmethod)Union   )	AlgoUtilsc                   f    \ rS rSrSr\  SS\\\4   S\	S\\\4   S\\\4   S\4
S jj5       r
S	rg
)Blake2b   z=
BLAKE2b class.
It computes digests using BLAKE2b algorithm.
datadigest_sizekeysaltreturnc                     [         R                  " [        R                  " U 5      U[        R                  " U5      [        R                  " U5      S9R	                  5       $ )a  
Compute the digest (quick version).

Args:
    data (str or bytes)           : Data
    digest_size (int)             : Digest size
    key ((str or bytes, optional) : Key (default: empty)
    salt ((str or bytes, optional): Salt (default: empty)

Returns:
    bytes: Computed digest
)r   r   r   )hashlibblake2br   Encodedigest)r   r   r   r   s       j/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/bip/utils/crypto/blake2.pyQuickDigestBlake2b.QuickDigest%   sL    " y//5+6#,#3#3C#8$-$4$4T$:< =CFH	E     Nr   r   )__name__
__module____qualname____firstlineno____doc__staticmethodr   bytesstrintr   __static_attributes__r   r   r   r	   r	      sp    
  .1.1E%s
+ E!$Eucz*E  s
+E 7<E Er   r	   c            
           \ rS rSrSr\  SS\\\4   S\\\4   S\\\4   S\4S jj5       r	\
\S\4S j5       5       rS	rg
)_Blake2bWithSpecificSize<   z5Abstract class for Blake2b with specific digest size.r   r   r   r   c                 J    [         R                  XR                  5       X#5      $ )z
Compute the digest (quick version).

Args:
    data (str or bytes)          : Data
    key (str or bytes, optional) : Key bytes (default: empty)
    salt (str or bytes, optional): Salt bytes (default: empty)

Returns:
    bytes: Computed digest
)r	   r   
DigestSize)clsr   r   r   s       r   r   $_Blake2bWithSpecificSize.QuickDigest?   s      ""4)93EEr   c                      g)G
Get the digest size in bytes.

Returns:
    int: Digest size in bytes
Nr   r   r   r   r)   #_Blake2bWithSpecificSize.DigestSizeQ   s    r   r   Nr   )r   r   r   r   r   classmethodr   r!   r"   r   r    r   r#   r)   r$   r   r   r   r&   r&   <   s    ? .1.1Fs
+Fucz*F  s
+F 7<F F"    r   r&   c                   0    \ rS rSrSr\S\4S j5       rSrg)	Blake2b32\   zC
BLAKE2b-32 class.
It computes digests using BLAKE2b-32 algorithm.
r   c                      g)r-      r   r   r   r   r)   Blake2b32.DigestSizeb        r   r   N	r   r   r   r   r   r    r#   r)   r$   r   r   r   r1   r1   \   "    
   r   r1   c                   0    \ rS rSrSr\S\4S j5       rSrg)	Blake2b40m   zC
BLAKE2b-40 class.
It computes digests using BLAKE2b-40 algorithm.
r   c                      g)r-      r   r   r   r   r)   Blake2b40.DigestSizes   r6   r   r   Nr7   r   r   r   r:   r:   m   r8   r   r:   c                   0    \ rS rSrSr\S\4S j5       rSrg)
Blake2b160~   zE
BLAKE2b-160 class.
It computes digests using BLAKE2b-160 algorithm.
r   c                      g)r-      r   r   r   r   r)   Blake2b160.DigestSize        r   r   Nr7   r   r   r   r@   r@   ~   "    
   r   r@   c                   0    \ rS rSrSr\S\4S j5       rSrg)
Blake2b224   zE
BLAKE2b-224 class.
It computes digests using BLAKE2b-224 algorithm.
r   c                      g)r-      r   r   r   r   r)   Blake2b224.DigestSize   rE   r   r   Nr7   r   r   r   rH   rH      rF   r   rH   c                   0    \ rS rSrSr\S\4S j5       rSrg)
Blake2b256   zE
BLAKE2b-256 class.
It computes digests using BLAKE2b-256 algorithm.
r   c                      g)r-       r   r   r   r   r)   Blake2b256.DigestSize   rE   r   r   Nr7   r   r   r   rN   rN      rF   r   rN   c                   0    \ rS rSrSr\S\4S j5       rSrg)
Blake2b512   zE
BLAKE2b-512 class.
It computes digests using BLAKE2b-512 algorithm.
r   c                      g)r-   @   r   r   r   r   r)   Blake2b512.DigestSize   rE   r   r   Nr7   r   r   r   rT   rT      rF   r   rT   )r   r   abcr   r   typingr   miscr   r	   r&   r1   r:   r@   rH   rN   rT   r   r   r   <module>r\      s   * %  #  E E:s @( "( ") ") ") ") r   