[tor-commits] [bridgedb/develop] Add unittest for bridgdb.crypto.removePKCS1Padding().

isis at torproject.org isis at torproject.org
Thu Feb 19 02:21:16 UTC 2015


commit 8dc041bc9efdc1c4c45e3a4aa5d5b579befc1844
Author: Isis Lovecruft <isis at torproject.org>
Date:   Wed Feb 18 22:19:17 2015 +0000

    Add unittest for bridgdb.crypto.removePKCS1Padding().
---
 lib/bridgedb/test/test_crypto.py |   61 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/lib/bridgedb/test/test_crypto.py b/lib/bridgedb/test/test_crypto.py
index aca5d2c..2187475 100644
--- a/lib/bridgedb/test/test_crypto.py
+++ b/lib/bridgedb/test/test_crypto.py
@@ -14,6 +14,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
+import base64
 import gpgme
 import io
 import logging
@@ -86,6 +87,66 @@ class GetKeyTests(unittest.TestCase):
                          % (key.encode('hex'), SEKRIT_KEY.encode('hex')))
 
 
+class RemovePKCS1PaddingTests(unittest.TestCase):
+    """Unittests for :func:`bridgedb.crypto.removePKCS1Padding`."""
+
+    def setUp(self):
+        """This blob *is* actually a correctly formed PKCS#1 padded signature
+        on the descriptor::
+
+        @purpose bridge
+        router ExhalesPeppier 118.16.116.176 35665 0 0
+        or-address [eef2:d52a:cf1b:552f:375d:f8d0:a72b:e794]:35664
+        platform Tor 0.2.4.5-alpha on Linux
+        protocols Link 1 2 Circuit 1
+        published 2014-11-03 21:21:43
+        fingerprint FA04 5CFF AB95 BA20 C994 FE28 9B23 583E F80F 34DA
+        uptime 10327748
+        bandwidth 2247108152 2540209215 1954007088
+        extra-info-digest 571BF23D8F24F052483C1333EBAE9B91E4A6F422
+        onion-key
+        -----BEGIN RSA PUBLIC KEY-----
+        MIGJAoGBAK7+a033aUqc97SWFVGFwR3ybQ0jG1HTPtsv2/fUfZPwCaf21ly4zIvH
+        9uNhtkcPH2p55X+n5M7OUaQawOzbwL4tSR9SLy9bGuZdWLbhu2GHQWmDkAB7BtHp
+        UC+uGTN3jvQXEG2xlzpb+lOVUVNXLhL5kFmAXxL+iwN4TeEv/iCnAgMBAAE=
+        -----END RSA PUBLIC KEY-----
+        signing-key
+        -----BEGIN RSA PUBLIC KEY-----
+        MIGJAoGBANxmgJ6S3rBAGcvQu2tWBaHByJxeJkdGbxID2b8cITPaNmcl72e3Kd44
+        GGIkoKhkX0SAO+i2U+Q41u/DPEBWLxhpl9GAFJZ10dcT18lL36yaK6FRDOcF9jx9
+        0A023/kwXd7QQDWqP7Fso+141bzit6ENvNmE1mvEeIoAR+EpJB1tAgMBAAE=
+        -----END RSA PUBLIC KEY-----
+        contact Somebody <somebody at example.com>
+        ntor-onion-key 0Mfi/Af7zLmdNdrmJyPbZxPJe7TZU/hV4Z865g3g+k4
+        reject *:*
+        router-signature
+        -----BEGIN SIGNATURE-----
+        PsGGIP+V9ZXWIHjK943CMAPem3kFbO9kt9rvrPhd64u0f7ytB/qZGaOg1IEWki1I
+        f6ZNjrthxicm3vnEUdhpRsyn7MUFiQmqLjBfqdzh0GyfrtU5HHr7CBV3tuhgVhik
+        uY1kPNo1C8wkmuy31H3V7NXj+etZuzZN66qL3BiQwa8=
+        -----END SIGNATURE-----
+
+        However, for the blob to be valid it would need to be converted from
+        base64-decoded bytes to a long, then raised by the power of the public
+        exponent within the ASN.1 DER decoded signing-key (mod that key's
+        public modulus), then re-converted back into bytes before attempting
+        to remove the PKCS#1 padding. (See
+        :meth:`bridedb.bridges.Bridge._verifyExtraInfoSignature`.)
+        """
+        blob = ('PsGGIP+V9ZXWIHjK943CMAPem3kFbO9kt9rvrPhd64u0f7ytB/qZGaOg1IEWk'
+                'i1If6ZNjrthxicm3vnEUdhpRsyn7MUFiQmqLjBfqdzh0GyfrtU5HHr7CBV3tu'
+                'hgVhikuY1kPNo1C8wkmuy31H3V7NXj+etZuzZN66qL3BiQwa8=')
+        self.blob = base64.b64decode(blob)
+
+    def test_crypto_removePKCS1Padding_bad_padding(self):
+        """removePKCS1Padding() with a blob with a bad PKCS#1 identifier mark
+        should raise PKCS1PaddingError.
+        """
+        self.assertRaises(crypto.PKCS1PaddingError,
+                          crypto.removePKCS1Padding,
+                          self.blob)
+
+
 class LessCrypticGPGMEErrorTests(unittest.TestCase):
     """Unittests for :class:`bridgedb.crypto.LessCrypticGPGMEError`."""
 





More information about the tor-commits mailing list