|
@@ -1,7 +1,6 @@
|
|
# Note: these tests are part of the self test, do not use or import pytest functionality here.
|
|
# Note: these tests are part of the self test, do not use or import pytest functionality here.
|
|
# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT
|
|
# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT
|
|
|
|
|
|
-from binascii import hexlify
|
|
|
|
from unittest.mock import MagicMock
|
|
from unittest.mock import MagicMock
|
|
import unittest
|
|
import unittest
|
|
|
|
|
|
@@ -9,7 +8,7 @@ from ..crypto.low_level import AES256_CTR_HMAC_SHA256, AES256_OCB, CHACHA20_POLY
|
|
from ..crypto.low_level import bytes_to_long, bytes_to_int, long_to_bytes
|
|
from ..crypto.low_level import bytes_to_long, bytes_to_int, long_to_bytes
|
|
from ..crypto.low_level import AES, hmac_sha256
|
|
from ..crypto.low_level import AES, hmac_sha256
|
|
from ..crypto.key import CHPOKeyfileKey, AESOCBRepoKey, FlexiKey
|
|
from ..crypto.key import CHPOKeyfileKey, AESOCBRepoKey, FlexiKey
|
|
-from ..helpers import msgpack
|
|
|
|
|
|
+from ..helpers import msgpack, bin_to_hex
|
|
|
|
|
|
from . import BaseTestCase
|
|
from . import BaseTestCase
|
|
|
|
|
|
@@ -46,10 +45,10 @@ class CryptoTestCase(BaseTestCase):
|
|
mac = hdr_mac_iv_cdata[1:33]
|
|
mac = hdr_mac_iv_cdata[1:33]
|
|
iv = hdr_mac_iv_cdata[33:41]
|
|
iv = hdr_mac_iv_cdata[33:41]
|
|
cdata = hdr_mac_iv_cdata[41:]
|
|
cdata = hdr_mac_iv_cdata[41:]
|
|
- self.assert_equal(hexlify(hdr), b"42")
|
|
|
|
- self.assert_equal(hexlify(mac), b"af90b488b0cc4a8f768fe2d6814fa65aec66b148135e54f7d4d29a27f22f57a8")
|
|
|
|
- self.assert_equal(hexlify(iv), b"0000000000000000")
|
|
|
|
- self.assert_equal(hexlify(cdata), b"c6efb702de12498f34a2c2bbc8149e759996d08bf6dc5c610aefc0c3a466")
|
|
|
|
|
|
+ self.assert_equal(bin_to_hex(hdr), "42")
|
|
|
|
+ self.assert_equal(bin_to_hex(mac), "af90b488b0cc4a8f768fe2d6814fa65aec66b148135e54f7d4d29a27f22f57a8")
|
|
|
|
+ self.assert_equal(bin_to_hex(iv), "0000000000000000")
|
|
|
|
+ self.assert_equal(bin_to_hex(cdata), "c6efb702de12498f34a2c2bbc8149e759996d08bf6dc5c610aefc0c3a466")
|
|
self.assert_equal(cs.next_iv(), 2)
|
|
self.assert_equal(cs.next_iv(), 2)
|
|
# auth-then-decrypt
|
|
# auth-then-decrypt
|
|
cs = AES256_CTR_HMAC_SHA256(mac_key, enc_key, header_len=len(header), aad_offset=1)
|
|
cs = AES256_CTR_HMAC_SHA256(mac_key, enc_key, header_len=len(header), aad_offset=1)
|
|
@@ -74,10 +73,10 @@ class CryptoTestCase(BaseTestCase):
|
|
mac = hdr_mac_iv_cdata[3:35]
|
|
mac = hdr_mac_iv_cdata[3:35]
|
|
iv = hdr_mac_iv_cdata[35:43]
|
|
iv = hdr_mac_iv_cdata[35:43]
|
|
cdata = hdr_mac_iv_cdata[43:]
|
|
cdata = hdr_mac_iv_cdata[43:]
|
|
- self.assert_equal(hexlify(hdr), b"123456")
|
|
|
|
- self.assert_equal(hexlify(mac), b"7659a915d9927072ef130258052351a17ef882692893c3850dd798c03d2dd138")
|
|
|
|
- self.assert_equal(hexlify(iv), b"0000000000000000")
|
|
|
|
- self.assert_equal(hexlify(cdata), b"c6efb702de12498f34a2c2bbc8149e759996d08bf6dc5c610aefc0c3a466")
|
|
|
|
|
|
+ self.assert_equal(bin_to_hex(hdr), "123456")
|
|
|
|
+ self.assert_equal(bin_to_hex(mac), "7659a915d9927072ef130258052351a17ef882692893c3850dd798c03d2dd138")
|
|
|
|
+ self.assert_equal(bin_to_hex(iv), "0000000000000000")
|
|
|
|
+ self.assert_equal(bin_to_hex(cdata), "c6efb702de12498f34a2c2bbc8149e759996d08bf6dc5c610aefc0c3a466")
|
|
self.assert_equal(cs.next_iv(), 2)
|
|
self.assert_equal(cs.next_iv(), 2)
|
|
# auth-then-decrypt
|
|
# auth-then-decrypt
|
|
cs = AES256_CTR_HMAC_SHA256(mac_key, enc_key, header_len=len(header), aad_offset=1)
|
|
cs = AES256_CTR_HMAC_SHA256(mac_key, enc_key, header_len=len(header), aad_offset=1)
|
|
@@ -99,13 +98,13 @@ class CryptoTestCase(BaseTestCase):
|
|
# (ciphersuite class, exp_mac, exp_cdata)
|
|
# (ciphersuite class, exp_mac, exp_cdata)
|
|
(
|
|
(
|
|
AES256_OCB,
|
|
AES256_OCB,
|
|
- b"b6909c23c9aaebd9abbe1ff42097652d",
|
|
|
|
- b"877ce46d2f62dee54699cebc3ba41d9ab613f7c486778c1b3636664b1493",
|
|
|
|
|
|
+ "b6909c23c9aaebd9abbe1ff42097652d",
|
|
|
|
+ "877ce46d2f62dee54699cebc3ba41d9ab613f7c486778c1b3636664b1493",
|
|
),
|
|
),
|
|
(
|
|
(
|
|
CHACHA20_POLY1305,
|
|
CHACHA20_POLY1305,
|
|
- b"fd08594796e0706cde1e8b461e3e0555",
|
|
|
|
- b"a093e4b0387526f085d3c40cca84a35230a5c0dd766453b77ba38bcff775",
|
|
|
|
|
|
+ "fd08594796e0706cde1e8b461e3e0555",
|
|
|
|
+ "a093e4b0387526f085d3c40cca84a35230a5c0dd766453b77ba38bcff775",
|
|
),
|
|
),
|
|
]
|
|
]
|
|
for cs_cls, exp_mac, exp_cdata in tests:
|
|
for cs_cls, exp_mac, exp_cdata in tests:
|
|
@@ -117,10 +116,10 @@ class CryptoTestCase(BaseTestCase):
|
|
iv = hdr_mac_iv_cdata[1:13]
|
|
iv = hdr_mac_iv_cdata[1:13]
|
|
mac = hdr_mac_iv_cdata[13:29]
|
|
mac = hdr_mac_iv_cdata[13:29]
|
|
cdata = hdr_mac_iv_cdata[29:]
|
|
cdata = hdr_mac_iv_cdata[29:]
|
|
- self.assert_equal(hexlify(hdr), b"23")
|
|
|
|
- self.assert_equal(hexlify(mac), exp_mac)
|
|
|
|
- self.assert_equal(hexlify(iv), b"000000000000000000000000")
|
|
|
|
- self.assert_equal(hexlify(cdata), exp_cdata)
|
|
|
|
|
|
+ self.assert_equal(bin_to_hex(hdr), "23")
|
|
|
|
+ self.assert_equal(bin_to_hex(mac), exp_mac)
|
|
|
|
+ self.assert_equal(bin_to_hex(iv), "000000000000000000000000")
|
|
|
|
+ self.assert_equal(bin_to_hex(cdata), exp_cdata)
|
|
self.assert_equal(cs.next_iv(), 1)
|
|
self.assert_equal(cs.next_iv(), 1)
|
|
# auth/decrypt
|
|
# auth/decrypt
|
|
cs = cs_cls(key, iv_int, header_len=len(header), aad_offset=1)
|
|
cs = cs_cls(key, iv_int, header_len=len(header), aad_offset=1)
|
|
@@ -142,13 +141,13 @@ class CryptoTestCase(BaseTestCase):
|
|
# (ciphersuite class, exp_mac, exp_cdata)
|
|
# (ciphersuite class, exp_mac, exp_cdata)
|
|
(
|
|
(
|
|
AES256_OCB,
|
|
AES256_OCB,
|
|
- b"f2748c412af1c7ead81863a18c2c1893",
|
|
|
|
- b"877ce46d2f62dee54699cebc3ba41d9ab613f7c486778c1b3636664b1493",
|
|
|
|
|
|
+ "f2748c412af1c7ead81863a18c2c1893",
|
|
|
|
+ "877ce46d2f62dee54699cebc3ba41d9ab613f7c486778c1b3636664b1493",
|
|
),
|
|
),
|
|
(
|
|
(
|
|
CHACHA20_POLY1305,
|
|
CHACHA20_POLY1305,
|
|
- b"b7e7c9a79f2404e14f9aad156bf091dd",
|
|
|
|
- b"a093e4b0387526f085d3c40cca84a35230a5c0dd766453b77ba38bcff775",
|
|
|
|
|
|
+ "b7e7c9a79f2404e14f9aad156bf091dd",
|
|
|
|
+ "a093e4b0387526f085d3c40cca84a35230a5c0dd766453b77ba38bcff775",
|
|
),
|
|
),
|
|
]
|
|
]
|
|
for cs_cls, exp_mac, exp_cdata in tests:
|
|
for cs_cls, exp_mac, exp_cdata in tests:
|
|
@@ -160,10 +159,10 @@ class CryptoTestCase(BaseTestCase):
|
|
iv = hdr_mac_iv_cdata[3:15]
|
|
iv = hdr_mac_iv_cdata[3:15]
|
|
mac = hdr_mac_iv_cdata[15:31]
|
|
mac = hdr_mac_iv_cdata[15:31]
|
|
cdata = hdr_mac_iv_cdata[31:]
|
|
cdata = hdr_mac_iv_cdata[31:]
|
|
- self.assert_equal(hexlify(hdr), b"123456")
|
|
|
|
- self.assert_equal(hexlify(mac), exp_mac)
|
|
|
|
- self.assert_equal(hexlify(iv), b"000000000000000000000000")
|
|
|
|
- self.assert_equal(hexlify(cdata), exp_cdata)
|
|
|
|
|
|
+ self.assert_equal(bin_to_hex(hdr), "123456")
|
|
|
|
+ self.assert_equal(bin_to_hex(mac), exp_mac)
|
|
|
|
+ self.assert_equal(bin_to_hex(iv), "000000000000000000000000")
|
|
|
|
+ self.assert_equal(bin_to_hex(cdata), exp_cdata)
|
|
self.assert_equal(cs.next_iv(), 1)
|
|
self.assert_equal(cs.next_iv(), 1)
|
|
# auth/decrypt
|
|
# auth/decrypt
|
|
cs = cs_cls(key, iv_int, header_len=len(header), aad_offset=1)
|
|
cs = cs_cls(key, iv_int, header_len=len(header), aad_offset=1)
|