Sindbad~EG File Manager
3
."�dCB � @ s6 d dl Z d dlZd dlZd dlZd dlZd dlZddlmZ ddlmZ dd� d<D �Z dZ
d=Zd dhdddhdddhddhdddhdddhdddhdddhdddhdddhd!�
ZG d"d#� d#�Z
G d$d%� d%ej�Zd&d'� Ze jd(d>�Zd-d.� Zd?d0d1�ZG d2d3� d3e�Zd4d5� ZG d6d7� d7�Zd8d9� ZG d:d;� d;�ZdS )@� N� )� alg_lists)�
validationc C s i | ]
}d |�qS )r � )�.0�kr r �C./usr/share/crypto-policies/python/cryptopolicies/cryptopolicies.py�
<dictcomp> s r �arbitrary_dh_groups�min_dh_size�min_dsa_size�min_rsa_size�
sha1_in_certs� ssh_certs�ssh_etm�*�tls�ssl�openssl�nss�gnutls�java-tls�ssh�openssh�openssh-server�openssh-client�libssh�ipsec�ike� libreswan�kerberos�krb5�dnssec�bind)
r# r zjava-tlsr! r r r zopenssh-clientzopenssh-serverr c @ s( e Zd Zefdd�Zdd� Zdd� ZdS )�
ScopeSelectorc C s� |j � | _}|jd� | _| jr&|n
|dd� }tjj|| jd� tjj|| jd� |jd�rr|dd� jd�n|g| _ tjj
| j t| jd� dS )a=
Initialize a scope selector.
An example would be `ssh` in `ciphers@ssh = -NULL`.
When openssh backend will request the configuration,
it'll offer (`{'ssh', 'openssh'}`) as scopes
and the rule above will be taken into account.
Both patterns and scopes are cast to lowercase.
For more examples, refer to tests/unit/parsing/test_scope_selector.py
>>> ss = ScopeSelector('!{SSH,IPsec}')
>>> ss.matches({'ipsec', 'libreswan'})
False
>>> ss.matches({'tls', 'openssl'})
True
�!r N)Zoriginal_pattern�{�,���)�lower�pattern�
startswith� _positiver �scopeZillegal_charactersZcurly_brackets�split�_globsZresulting_globs�
ALL_SCOPES)�selfr* �pr r r �__init__5 s $zScopeSelector.__init__c C s dt | j�� d�S )Nz<ScopeSelector pattern=�>)�reprr* )r1 r r r �__str__P s zScopeSelector.__str__c sR | j tkrdS dd� � D �� | jr:t� fdd�| jD ��S t� fdd�| jD ��S )aE
Checks whether ScopeSelector matches one of the scopes.
For more examples, refer to tests/unit/parsing/test_scope_selector.py
>>> ScopeSelector('{SSH,IPsec}').matches({'ipsec', 'libreswan'})
True
>>> ScopeSelector('!{SSH,IPsec}').matches({'ipsec', 'libreswan'})
False
Tc S s g | ]}|j � �qS r )r) )r �sr r r �
<listcomp>^ s z)ScopeSelector.matches.<locals>.<listcomp>c 3 s | ]}t j� |�V qd S )N)�fnmatch�filter)r �g)�scopesr r � <genexpr>a s z(ScopeSelector.matches.<locals>.<genexpr>c 3 s | ]}t j� |� V qd S )N)r9 r: )r r; )r<