Ejemplo n.º 1
0
    def test_encryption(self):
        a = Artifact(self.binary_data)
        a.packaging = Packaging()
        a.packaging.encryption.append(XOREncryption(0x4a))
        a.packaging.encoding.append(Base64Encoding())
        a2 = round_trip(a, Artifact)

        self.assertEqual(self.binary_data, a2.data)
Ejemplo n.º 2
0
    def test_base64_encoding(self):
        a = Artifact(self.binary_data)
        a.packaging = Packaging()
        a.packaging.encoding.append(Base64Encoding())
        a2 = round_trip(a, Artifact)
        self.assertEqual(self.binary_data, a2.data)

        expected = b64encode(self.binary_data).decode('ascii')
        self.assertEqual(expected, a2.packed_data)
Ejemplo n.º 3
0
    def test_zlib_base64_encoding(self):
        a = Artifact(self.binary_data)
        a.packaging = Packaging()
        a.packaging.compression.append(ZlibCompression())
        a.packaging.encoding.append(Base64Encoding())
        a2 = round_trip(a, Artifact)
        self.assertEqual(self.binary_data, a2.data)

        expected = base64.b64encode(compress(self.binary_data)).decode('ascii')
        self.assertEqual(expected, a2.packed_data)
Ejemplo n.º 4
0
    def test_cannot_set_nonascii_data_with_no_packaging(self):
        a = Artifact()
        # You can set this data, but if you don't add any packaging, you should
        # get an error when trying to get the packed data, since it can't be
        # encoded as ASCII.
        a.data = b"\x00abc123\xff"
        self.assertEqual(six.binary_type, type(a.data))
        self.assertRaises(ValueError, _get_packed_data, a)

        # With Base64 encoding, we can retrieve this.
        a.packaging = Packaging()
        a.packaging.encoding.append(Base64Encoding())
        self.assertEqual("AGFiYzEyM/8=", a.packed_data)
Ejemplo n.º 5
0
    def test_custom_encoding(self):
        @EncodingFactory.register_extension
        class Base32Encoding(Encoding):
            _ENCODING_TYPE = "Base32"

            def __init__(self):
                super(Base32Encoding, self).__init__(algorithm="Base32")

            def pack(self, data):
                return base64.b32encode(data)

            def unpack(self, packed_data):
                return base64.b32decode(packed_data)

        a = Artifact(self.binary_data)
        a.packaging = Packaging()
        a.packaging.compression.append(Bz2Compression())
        a.packaging.encryption.append(XOREncryption(0x4a))
        a.packaging.encoding.append(Base32Encoding())
        a2 = round_trip(a, Artifact)

        self.assertEqual(self.binary_data, a2.data)