[tor-commits] [obfsproxy/master] Add PacketMorpher unittests.

asn at torproject.org asn at torproject.org
Tue Jul 15 12:23:07 UTC 2014


commit 55fa261c83174b3e241241cf7b66ed3f629c7f88
Author: George Kadianakis <desnacked at riseup.net>
Date:   Mon Apr 14 15:14:14 2014 +0300

    Add PacketMorpher unittests.
---
 obfsproxy/test/transports/test_scramblesuit.py |   36 ++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/obfsproxy/test/transports/test_scramblesuit.py b/obfsproxy/test/transports/test_scramblesuit.py
index 3392b5f..8481fab 100644
--- a/obfsproxy/test/transports/test_scramblesuit.py
+++ b/obfsproxy/test/transports/test_scramblesuit.py
@@ -21,6 +21,8 @@ import obfsproxy.transports.scramblesuit.scramblesuit as scramblesuit
 import obfsproxy.transports.scramblesuit.message as message
 import obfsproxy.transports.scramblesuit.state as state
 import obfsproxy.transports.scramblesuit.ticket as ticket
+import obfsproxy.transports.scramblesuit.packetmorpher as packetmorpher
+import obfsproxy.transports.scramblesuit.probdist as probdist
 
 
 # Disable all logging as it would yield plenty of warning and error
@@ -418,5 +420,39 @@ class TicketTest( unittest.TestCase ):
             else:
                 self.assertTrue(ss.receiveTicket(buf))
 
+class PacketMorpher( unittest.TestCase ):
+
+    def test1_calcPadding( self ):
+
+        def checkDistribution( dist ):
+            pm = packetmorpher.new(dist)
+            for i in xrange(0, const.MTU + 2):
+                padLen = pm.calcPadding(i)
+                self.assertTrue(const.HDR_LENGTH <= \
+                                padLen < \
+                                (const.MTU + const.HDR_LENGTH))
+
+        # Test randomly generated distributions.
+        for i in xrange(0, 100):
+            checkDistribution(None)
+
+        # Test border-case distributions.
+        checkDistribution(probdist.new(lambda: 0))
+        checkDistribution(probdist.new(lambda: 1))
+        checkDistribution(probdist.new(lambda: const.MTU))
+        checkDistribution(probdist.new(lambda: const.MTU + 1))
+
+    def test2_getPadding( self ):
+        pm = packetmorpher.new()
+        sendCrypter = mycrypto.PayloadCrypter()
+        sendCrypter.setSessionKey("A" * 32,  "A" * 8)
+        sendHMAC = "A" * 32
+
+        for i in xrange(0, const.MTU + 2):
+            padLen = len(pm.getPadding(sendCrypter, sendHMAC, i))
+            self.assertTrue(const.HDR_LENGTH <= padLen < const.MTU + \
+                            const.HDR_LENGTH)
+
+
 if __name__ == '__main__':
     unittest.main()





More information about the tor-commits mailing list