
    s
                         S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSK	J
r
  SSKJr  S	r\4S
 jr\R                  \R                   \R"                  S.rS rS rg)zHelpers for digesting a file.    )absolute_import)division)unicode_literalsN)base)
exceptions)filesi  @ c              #   J   #     U R                  U5      nU(       d  g Uv   M  7f)N)read)file_
chunk_sizechunks      0lib/googlecloudsdk/command_lib/kms/get_digest.py_ChunkReaderr      s&     JJz"E
K	 	s   !#)sha256sha384sha512c                 z    [         R                  " U5       n[        X5      sSSS5        $ ! , (       d  f       g= f)an  Digest the file at filename based on digest_algorithm.

Args:
  digest_algorithm: The algorithm used to digest the file, can be one of
    'sha256', 'sha384', or 'sha512'.
  filename: A valid file path over which a digest will be calculated.

Returns:
  The digest of the provided file.

Raises:
  InvalidArgumentException: The provided digest_algorithm is invalid.
N)r   BinaryFileReaderGetDigestOfFile)digest_algorithmfilenamefs      r   	GetDigestr   -   s)     h'1+/ (''s   ,
:c                 ,   [         R                  " 5       n[        R                  U 5      nU(       d  [        R
                  " SS5      eU" 5       n[        U5       H  nUR                  U5        M     XR                  5       0nUR                  " S0 UD6$ )aM  Digest the file_to_digest based on digest_algorithm.

Args:
  digest_algorithm: The algorithm used to digest the file, can be one of
    'sha256', 'sha384', or 'sha512'.
  file_to_digest: A valid file handle.

Returns:
  The digest of the provided file.

Raises:
  InvalidArgumentException: The provided digest_algorithm is invalid.
digestzdigest_algorithm is invalid. )
cloudkms_baseGetMessagesModule_DIGEST_ALGORITHMSgetr   InvalidArgumentExceptionr   updater   Digest)r   file_to_digestmessages	algorithmr   r   kwargss          r   r   r   ?   s     ,,.( $$%56)	

-
-h.LN N;&N+e
MM% ,mmo.&		"6	""    )__doc__
__future__r   r   r   hashlibgooglecloudsdk.api_lib.cloudkmsr   r   googlecloudsdk.callioper   googlecloudsdk.core.utilr   
_READ_SIZEr   r   r   r   r   r   r   r   r(   r   <module>r0      sW    $ &  '  A . *
 $.  nnnnnn 0$#r(   