Пример #1
0
    def outputs(self, upstream_affordances=None, downstream_affordances=None):

        upstream_affordances, downstream_affordances = \
            self._normalized_affordances(upstream_affordances,
                                         downstream_affordances)

        outputs = _frozenusetset(self._outputs(upstream_affordances=
                                                   upstream_affordances,
                                               downstream_affordances=
                                                   downstream_affordances))
        if self.tokens_passthrough(upstream_affordances=
                                       upstream_affordances,
                                   downstream_affordances=
                                       downstream_affordances):
            outputs = upstream_affordances.outputs.union_product(outputs)
        if self.opaque_passthrough(upstream_affordances=
                                       upstream_affordances,
                                   downstream_affordances=
                                       downstream_affordances):
            outputs = outputs.union_product((('__',),))
        if outputs.isfinite:
            return _frozenusetset(output for output in outputs
                                  if downstream_affordances.inputs
                                                           .any_lte(output))
        else:
            return outputs
Пример #2
0
    def inputs(self, upstream_affordances=None, downstream_affordances=None):

        upstream_affordances, downstream_affordances = \
            self._normalized_affordances(upstream_affordances,
                                         downstream_affordances)

        inputs = _frozenusetset(self._inputs(upstream_affordances=
                                                 upstream_affordances,
                                             downstream_affordances=
                                                 downstream_affordances))
        if inputs.isfinite:
            return _frozenusetset(input_ for input_ in inputs
                                  if upstream_affordances.outputs
                                                         .any_gte(input_))
        else:
            return upstream_affordances.outputs
Пример #3
0
from ... import digest as _digest
from .. import _std as _std_http


_DIGEST_USER_OPTIONAL_TOKENS = ('qop', 'digest_algorithm', 'client_nonce',
                                'opaque', 'server_nonce_use_count')

_DIGEST_USER_REQUIRED_TOKENS = ('user', 'realm', 'server_nonce', 'digest_uri',
                                'digest')

_DIGEST_USER_TOKENSETS = \
    _frozenusetset(_chain(_DIGEST_USER_REQUIRED_TOKENS, optional_tokens)
                   for optional_tokens
                   in _chain((),
                             *(_combinations(_DIGEST_USER_OPTIONAL_TOKENS,
                                             n + 1)
                               for n
                               in range(len(_DIGEST_USER_OPTIONAL_TOKENS)))))


class HttpDigestClerk(_std_http.HttpStandardClerk):

    """An authentication clerk for HTTP Digest authentication"""

    __metaclass__ = _abc.ABCMeta

    _DIGEST_USER_OPTIONAL_TOKENS = _DIGEST_USER_OPTIONAL_TOKENS

    _DIGEST_USER_REQUIRED_TOKENS = _DIGEST_USER_REQUIRED_TOKENS