Subversion Repositories pub

Compare Revisions

Ignore whitespace Rev 181 → Rev 182

/relevation/ext/cryptopy-1.2.5.orig/crypto/cipher/wep_test.py
0,0 → 1,71
#! /usr/bin/env python
""" crypto.cipher.wep_test
 
Tests for wep encryption
 
Copyright © (c) 2002 by Paul A. Lambert
Read LICENSE.txt for license information.
 
2002-11-05
"""
import unittest
from crypto.cipher.wep import WEP
from binascii_plus import a2b_p, b2a_p
from zlib import crc32
from struct import pack
 
class WEP_TestVectors(unittest.TestCase):
""" Test WEP algorithm using know values """
def testKnowValues(self):
""" Test using vectors from..."""
def WEPtestVector(testCase,plainText,iv,key,keyId,cipherText):
""" Process WEP test vectors from RFCxxxx"""
print '%s %s %s'%('='*((54-len(testCase))/2),testCase,'='*((54-len(testCase))/2))
# Convert from octet lists to string
pt = a2b_p(plainText)
iv = a2b_p(iv)
key = a2b_p(key)
kct = a2b_p(cipherText)
 
alg = WEP(key,keyId=keyId)
 
print 'key: %s'%b2a_p(key)[9:]
print 'keyId: %x'%keyId
print 'iv: %s'%b2a_p(iv)[9:]
print 'pt: %s'%b2a_p(pt)[9:]
print 'kct: %s'%b2a_p(kct)[9:]
 
ct = alg.encrypt(pt, iv, keyId)
print 'ct: %s'%b2a_p(ct)[9:]
print 'crc: %s'%b2a_p(pack('<I',crc32(plainText)))[9:]
 
print '========================================================'
self.assertEqual( ct, kct )
alg.setKey(key,keyId=keyId)
dct = alg.decrypt( ct )
self.assertEqual( dct, pt )
 
WEPtestVector(
testCase = "Test Vectors from IEEE 802.11 TGi D2.x",
plainText = """aa aa 03 00 00 00 08 00 45 00 00 4e 66 1a 00 00
80 11 be 64 0a 00 01 22 0a ff ff ff 00 89 00 89
00 3a 00 00 80 a6 01 10 00 01 00 00 00 00 00 00
20 45 43 45 4a 45 48 45 43 46 43 45 50 46 45 45
49 45 46 46 43 43 41 43 41 43 41 43 41 43 41 41
41 00 00 20 00 01 """,
iv = "fb 02 9e",
key = "30 31 32 33 34",
keyId = 2,
cipherText = """fb 02 9e 80
f6 9c 58 06 bd 6c e8 46 26 bc be fb 94 74 65 0a
ad 1f 79 09 b0 f6 4d 5f 58 a5 03 a2 58 b7 ed 22
eb 0e a6 49 30 d3 a0 56 a5 57 42 fc ce 14 1d 48
5f 8a a8 36 de a1 8d f4 2c 53 80 80 5a d0 c6 1a
5d 6f 58 f4 10 40 b2 4b 7d 1a 69 38 56 ed 0d 43
98 e7 ae e3 bf 0e 2a 2c a8 f7 """)
 
# Make this test module runnable from the command prompt
if __name__ == "__main__":
unittest.main()