コード例 #1
0
 def test_encrypt_text_not_normalized_ignore_encoding(self):
     self.content_type = 'text/plain;charset=utf-8'
     unenc, content = em.normalize_before_encryption(
         self.unencrypted, self.content_type, self.content_encoding,
         self.enforce_text_only)
     self.assertEqual(mt.normalize_content_type(self.content_type), content)
     self.assertEqual(self.unencrypted.encode('utf-8'), unenc)
コード例 #2
0
ファイル: extension_manager.py プロジェクト: 98pm/barbican
def normalize_before_encryption(unencrypted, content_type, content_encoding,
                                enforce_text_only=False):
    """Normalize unencrypted prior to plugin encryption processing."""
    if not unencrypted:
        raise CryptoNoPayloadProvidedException()

    # Validate and normalize content-type.
    normalized_mime = mime_types.normalize_content_type(content_type)
    if not mime_types.is_supported(normalized_mime):
        raise CryptoContentTypeNotSupportedException(content_type)

    # Process plain-text type.
    if normalized_mime in mime_types.PLAIN_TEXT:
        # normalize text to binary string
        unencrypted = unencrypted.encode('utf-8')

    # Process binary type.
    else:
        # payload has to be decoded
        if mime_types.is_base64_processing_needed(content_type,
                                                  content_encoding):
            try:
                unencrypted = base64.b64decode(unencrypted)
            except TypeError:
                raise CryptoPayloadDecodingError()
        elif enforce_text_only:
            # For text-based protocols (such as the one-step secret POST),
            #   only 'base64' encoding is possible/supported.
            raise CryptoContentEncodingMustBeBase64()
        elif content_encoding:
            # Unsupported content-encoding request.
            raise CryptoContentEncodingNotSupportedException(content_encoding)

    return unencrypted, normalized_mime
コード例 #3
0
 def test_encrypt_text_not_normalized_ignore_encoding(self):
     self.content_type = 'text/plain;charset=utf-8'
     unenc, content = em.normalize_before_encryption(self.unencrypted,
                                                     self.content_type,
                                                     self.content_encoding,
                                                     self.enforce_text_only)
     self.assertEqual(mt.normalize_content_type(self.content_type),
                      content)
     self.assertEqual(self.unencrypted.encode('utf-8'), unenc)
コード例 #4
0
def normalize_before_encryption(unencrypted,
                                content_type,
                                content_encoding,
                                enforce_text_only=False):
    """Normalize unencrypted prior to plugin encryption processing."""
    if not unencrypted:
        raise CryptoNoPayloadProvidedException()

    # Validate and normalize content-type.
    normalized_mime = mime_types.normalize_content_type(content_type)
    if not mime_types.is_supported(normalized_mime):
        raise CryptoContentTypeNotSupportedException(content_type)

    # Process plain-text type.
    if normalized_mime in mime_types.PLAIN_TEXT:
        # normalize text to binary string
        unencrypted = unencrypted.encode('utf-8')

    # Process binary type.
    else:
        # payload has to be decoded
        if mime_types.is_base64_processing_needed(content_type,
                                                  content_encoding):
            try:
                unencrypted = base64.b64decode(unencrypted)
            except TypeError:
                raise CryptoPayloadDecodingError()
        elif enforce_text_only:
            # For text-based protocols (such as the one-step secret POST),
            #   only 'base64' encoding is possible/supported.
            raise CryptoContentEncodingMustBeBase64()
        elif content_encoding:
            # Unsupported content-encoding request.
            raise CryptoContentEncodingNotSupportedException(content_encoding)

    return unencrypted, normalized_mime
コード例 #5
0
 def test_bogus_mime_normalization(self):
     mime = 'something/bogus'
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, 'something/bogus')
コード例 #6
0
 def test_binary_normalization(self):
     mime = 'application/octet-stream'
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, 'application/octet-stream')
コード例 #7
0
 def test_malformed_charset_in_plain_text_mime(self):
     mime = 'text/plain; charset is ISO-8859-1'
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, mime)
コード例 #8
0
 def _test_plain_text_mime_type(self, mime):
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, 'text/plain')
コード例 #9
0
ファイル: test_mime_types.py プロジェクト: bdacode/barbican
 def test_bogus_mime_normalization(self):
     mime = 'something/bogus'
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, 'something/bogus')
コード例 #10
0
ファイル: test_mime_types.py プロジェクト: bdacode/barbican
 def test_binary_normalization(self):
     mime = 'application/octet-stream'
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, 'application/octet-stream')
コード例 #11
0
ファイル: test_mime_types.py プロジェクト: bdacode/barbican
 def test_unsupported_charset_in_plain_text_mime(self):
     mime = 'text/plain; charset=ISO-8859-1'
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, mime)
コード例 #12
0
ファイル: test_mime_types.py プロジェクト: bdacode/barbican
 def _test_plain_text_mime_type(self, mime):
     r = mime_types.normalize_content_type(mime)
     self.assertEqual(r, 'text/plain')