
    !ju                        d Z ddlmZmZ ddlZddlZddlmZmZ ddl	m
Z
mZ  G d d          Z G d d	e          Z G d
 de          Z G d de          ZdS )z
minio.sse
~~~~~~~~~~~~~~~~~~~

This module contains core API parsers.

:copyright: (c) 2018 by MinIO, Inc.
:license: Apache 2.0, see LICENSE for more details.

    )absolute_importannotationsN)ABCMetaabstractmethod)Anycastc                  >    e Zd ZdZeZed	d            Zd
dZd	dZ	dS )Ssez"Server-side encryption base class.returndict[str, str]c                    dS )zReturn headers.N selfs    S/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/sse.pyheaderszSse.headers'   s          boolc                    dS )z7Return TLS required to use this server-side encryption.Tr   r   s    r   tls_requiredzSse.tls_required+   s    tr   c                    i S )zReturn copy headers.r   r   s    r   copy_headerszSse.copy_headers/   s    	r   Nr   r   r   r   )
__name__
__module____qualname____doc__r   __metaclass__r   r   r   r   r   r   r   r
   r
   #   se        ,,M   ^        r   r
   c                  *    e Zd ZdZd
dZddZddZd	S )SseCustomerKeyz, Server-side encryption - customer key type.keybytesc                
   t          |          dk    rt          d          t          j        |                                          }ddlm} t          t           ||                    }d||d| _	        d||d| _
        d S )N    z,SSE-C keys need to be 256 bit base64 encoded   )md5sum_hashAES256)z/X-Amz-Server-Side-Encryption-Customer-Algorithmz)X-Amz-Server-Side-Encryption-Customer-Keyz-X-Amz-Server-Side-Encryption-Customer-Key-MD5)z;X-Amz-Copy-Source-Server-Side-Encryption-Customer-Algorithmz5X-Amz-Copy-Source-Server-Side-Encryption-Customer-Keyz9X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key-MD5)len
ValueErrorbase64	b64encodedecodehelpersr'   r   str_headers_copy_headers)r   r"   b64keyr'   md5keys        r   __init__zSseCustomerKey.__init__7   s    s88r>>>   !#&&--//	 	 	 	 	 	c;;s++,,?G9?=C)
 )
 EK.
 .
r   r   r   c                4    | j                                         S Nr0   copyr   s    r   r   zSseCustomerKey.headersM       }!!###r   c                4    | j                                         S r6   )r1   r8   r   s    r   r   zSseCustomerKey.copy_headersP   s    !&&(((r   N)r"   r#   r   )r   r   r   r   r4   r   r   r   r   r   r!   r!   4   sV        66
 
 
 
,$ $ $ $) ) ) ) ) )r   r!   c                  "    e Zd ZdZddZdd	Zd
S )SseKMSz"Server-side encryption - KMS type.r"   r/   contextdict[str, Any]c                    |dd| _         |rRt          t          j        |          d          }t	          j        |                                          | j         d<   d S d S )Nzaws:kms)z+X-Amz-Server-Side-Encryption-Aws-Kms-Key-IdX-Amz-Server-Side-Encryptionzutf-8z$X-Amz-Server-Side-Encryption-Context)r0   r#   jsondumpsr+   r,   r-   )r   r"   r=   datas       r   r4   zSseKMS.__init__W   sp    ;>,5
 
  	G,,g66D &&--// M@AAA	 	r   r   r   c                4    | j                                         S r6   r7   r   s    r   r   zSseKMS.headersb   r9   r   N)r"   r/   r=   r>   r   )r   r   r   r   r4   r   r   r   r   r<   r<   T   sB        ,,	 	 	 	$ $ $ $ $ $r   r<   c                  "    e Zd ZdZddZd	dZdS )
SseS3z!Server-side encryption - S3 type.r   r   c                
    ddiS )Nr@   r(   r   r   s    r   r   zSseS3.headersi   s    *H
 	
r   r   c                    dS )NFr   r   s    r   r   zSseS3.tls_requiredn   s    ur   Nr   r   )r   r   r   r   r   r   r   r   r   rF   rF   f   sB        ++
 
 
 

     r   rF   )r   
__future__r   r   r+   rA   abcr   r   typingr   r   r
   r!   r<   rF   r   r   r   <module>rL      s  "	 	 4 3 3 3 3 3 3 3   ' ' ' ' ' ' ' '               ") ) ) ) )S ) ) )@$ $ $ $ $S $ $ $$	 	 	 	 	C 	 	 	 	 	r   