Index: tools/telemetry/third_party/gsutilz/third_party/rsa/tests/test_bigfile.py |
diff --git a/tools/telemetry/third_party/gsutilz/third_party/rsa/tests/test_bigfile.py b/tools/telemetry/third_party/gsutilz/third_party/rsa/tests/test_bigfile.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..86bcbbac6f4d0c4537ee1350f3fb19e8ba60fd9d |
--- /dev/null |
+++ b/tools/telemetry/third_party/gsutilz/third_party/rsa/tests/test_bigfile.py |
@@ -0,0 +1,60 @@ |
+'''Tests block operations.''' |
+from rsa._compat import b |
+ |
+try: |
+ from StringIO import StringIO as BytesIO |
+except ImportError: |
+ from io import BytesIO |
+import unittest2 |
+ |
+import rsa |
+from rsa import bigfile, varblock, pkcs1 |
+ |
+class BigfileTest(unittest2.TestCase): |
+ |
+ def test_encrypt_decrypt_bigfile(self): |
+ |
+ # Expected block size + 11 bytes padding |
+ pub_key, priv_key = rsa.newkeys((6 + 11) * 8) |
+ |
+ # Encrypt the file |
+ message = b('123456Sybren') |
+ infile = BytesIO(message) |
+ outfile = BytesIO() |
+ |
+ bigfile.encrypt_bigfile(infile, outfile, pub_key) |
+ |
+ # Test |
+ crypto = outfile.getvalue() |
+ |
+ cryptfile = BytesIO(crypto) |
+ clearfile = BytesIO() |
+ |
+ bigfile.decrypt_bigfile(cryptfile, clearfile, priv_key) |
+ self.assertEquals(clearfile.getvalue(), message) |
+ |
+ # We have 2x6 bytes in the message, so that should result in two |
+ # bigfile. |
+ cryptfile.seek(0) |
+ varblocks = list(varblock.yield_varblocks(cryptfile)) |
+ self.assertEqual(2, len(varblocks)) |
+ |
+ |
+ def test_sign_verify_bigfile(self): |
+ |
+ # Large enough to store MD5-sum and ASN.1 code for MD5 |
+ pub_key, priv_key = rsa.newkeys((34 + 11) * 8) |
+ |
+ # Sign the file |
+ msgfile = BytesIO(b('123456Sybren')) |
+ signature = pkcs1.sign(msgfile, priv_key, 'MD5') |
+ |
+ # Check the signature |
+ msgfile.seek(0) |
+ self.assertTrue(pkcs1.verify(msgfile, signature, pub_key)) |
+ |
+ # Alter the message, re-check |
+ msgfile = BytesIO(b('123456sybren')) |
+ self.assertRaises(pkcs1.VerificationError, |
+ pkcs1.verify, msgfile, signature, pub_key) |
+ |