
    s
                         d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddl	m
Z
 ddlmZ d	Zefd
Zej                  ej                   ej"                  dZd Zd Zy)zHelpers for digesting a file.    )absolute_import)division)unicode_literalsN)base)
exceptions)filesi  @ c              #   >   K   	 | j                  |      }|sy | w)N)read)file_
chunk_sizechunks      0lib/googlecloudsdk/command_lib/kms/get_digest.py_ChunkReaderr      s'     JJz"E
K	 	s   )sha256sha384sha512c                 p    t        j                  |      5 }t        | |      cddd       S # 1 sw Y   yxY w)a  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+Q/ (''s   ,5c                    t        j                         }t        j                  |       }|st	        j
                  dd       |       }t        |      D ]  }|j                  |        | |j                         i} |j                  di |S )a_  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% ,fmmo.&		"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(   