U
    dª/eß  ã                   @   s\   d Z ddlmZ ddlmZ ddlmZmZmZm	Z	 dZ
dZG dd	„ d	ƒZG d
d„ dƒZdS )zERequest/response of PutBucketEncryption and GetBucketEncryption APIs.é    )Úabsolute_import)ÚABCMetaé   )ÚElementÚ
SubElementÚfindÚfindtextÚAES256zaws:kmsc                   @   sd   e Zd ZdZeZddd„Zedd„ ƒZedd„ ƒZ	e
d	d
„ ƒZe
ddd„ƒZe
dd„ ƒZdd„ ZdS )ÚRulezServer-side encryption rule. Nc                 C   s   || _ || _d S )N)Ú_sse_algorithmÚ_kms_master_key_id)ÚselfÚsse_algorithmÚkms_master_key_id© r   ú3/tmp/pip-unpacked-wheel-xery97c7/minio/sseconfig.pyÚ__init__!   s    zRule.__init__c                 C   s   | j S )zGet SSE algorithm.)r   ©r   r   r   r   r   %   s    zRule.sse_algorithmc                 C   s   | j S )zGet KMS master key ID.)r   r   r   r   r   r   *   s    zRule.kms_master_key_idc                 C   s   | t ƒS )zCreate SSE-S3 rule.)r	   )Úclsr   r   r   Únew_sse_s3_rule/   s    zRule.new_sse_s3_rulec                 C   s
   | t |ƒS )zCreate new SSE-KMS rule.)ÚAWS_KMS)r   r   r   r   r   Únew_sse_kms_rule4   s    zRule.new_sse_kms_rulec                 C   s*   t |dƒ}t|ddƒ}t|dƒ}| ||ƒS )ú/Create new object with values from XML element.Ú"ApplyServerSideEncryptionByDefaultÚSSEAlgorithmTÚKMSMasterKeyID)r   r   )r   Úelementr   r   r   r   r   Úfromxml9   s    

zRule.fromxmlc                 C   s>   t |dƒ}t |dƒ}t |d| jƒ | jdk	r:t |d| jƒ |S )úConvert to XML.r
   r   r   Nr   )r   r   r   )r   r   Útagr   r   r   ÚtoxmlA   s    


z
Rule.toxml)N)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__metaclass__r   Úpropertyr   r   Úclassmethodr   r   r   r    r   r   r   r   r
      s   




r
   c                   @   s8   e Zd ZdZdd„ Zedd„ ƒZedd„ ƒZdd	„ Z	d
S )Ú	SSEConfigz%server-side encryption configuration.c                 C   s   |st dƒ‚|| _d S )Nzrule must be provided)Ú
ValueErrorÚ_rule)r   Úruler   r   r   r   N   s    zSSEConfig.__init__c                 C   s   | j S )z	Get rule.)r*   r   r   r   r   r+   S   s    zSSEConfig.rulec                 C   s   t |dƒ}| t |¡ƒS )r   r
   )r   r
   r   )r   r   r   r   r   r   X   s    
zSSEConfig.fromxmlc                 C   s   t dƒ}| j |¡ |S )r   Z!ServerSideEncryptionConfiguration)r   r*   r    )r   r   r   r   r   r    ^   s    zSSEConfig.toxmlN)
r!   r"   r#   r$   r   r&   r+   r'   r   r    r   r   r   r   r(   K   s   

r(   N)r$   Ú
__future__r   Úabcr   Úxmlr   r   r   r   r	   r   r
   r(   r   r   r   r   Ú<module>   s   .