U
    dª/e`  ã                   @   sf   d Z ddlZddlZddlmZmZ G dd„ dƒZG dd„ deƒZG dd	„ d	eƒZG d
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.

é    N)ÚABCMetaÚabstractmethodc                   @   s0   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.c                 C   s   dS )zReturn headers.N© ©Úselfr   r   ú-/tmp/pip-unpacked-wheel-xery97c7/minio/sse.pyÚheaders$   s    zSse.headersc                 C   s   dS )z7Return TLS required to use this server-side encryption.Tr   r   r   r   r   Útls_required(   s    zSse.tls_requiredc                 C   s   i S )zReturn copy headers.r   r   r   r   r   Úcopy_headers,   s    zSse.copy_headersN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__metaclass__r   r	   r
   r   r   r   r   r   r       s   
r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚSseCustomerKeyz, Server-side encryption - customer key type.c                 C   sV   t |ƒdkrtdƒ‚t |¡ ¡ }ddlm} ||ƒ}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ÚdecodeZhelpersr   Ú_headersÚ_copy_headers)r   ÚkeyZb64keyr   Zmd5keyr   r   r   Ú__init__4   s    ÿýûzSseCustomerKey.__init__c                 C   s
   | j  ¡ S ©N©r   Úcopyr   r   r   r   r	   J   s    zSseCustomerKey.headersc                 C   s
   | j  ¡ S r   )r   r!   r   r   r   r   r   M   s    zSseCustomerKey.copy_headersN)r   r   r   r   r   r	   r   r   r   r   r   r   1   s   r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚSseKMSz"Server-side encryption - KMS type.c                 C   s8   |ddœ| _ |r4tt |¡dƒ}t |¡ ¡ | j d< 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)r   ÚbytesÚjsonÚdumpsr   r   r   )r   r   ÚcontextÚdatar   r   r   r   T   s    þÿzSseKMS.__init__c                 C   s
   | j  ¡ S r   r    r   r   r   r   r	   _   s    zSseKMS.headersN)r   r   r   r   r   r	   r   r   r   r   r"   Q   s   r"   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚSseS3z!Server-side encryption - S3 type.c                 C   s   ddiS )Nr#   r   r   r   r   r   r   r	   f   s     ÿzSseS3.headersc                 C   s   dS )NFr   r   r   r   r   r
   k   s    zSseS3.tls_requiredN)r   r   r   r   r	   r
   r   r   r   r   r)   c   s   r)   )
r   r   r%   Úabcr   r   r   r   r"   r)   r   r   r   r   Ú<module>   s   
 