4 * A test class for XTeaKey
\r
5 * Copyright (c) 2007 Henri Torgemane
\r
7 * See LICENSE.txt for full license information.
\r
9 package com.hurlant.crypto.tests
\r
11 import com.hurlant.crypto.prng.Random;
\r
12 import com.hurlant.crypto.symmetric.ECBMode;
\r
13 import com.hurlant.crypto.symmetric.XTeaKey;
\r
14 import com.hurlant.util.Hex;
\r
16 import flash.utils.ByteArray;
\r
17 import flash.utils.getTimer;
\r
19 public class XTeaKeyTest extends TestCase
\r
21 public function XTeaKeyTest(h:ITestHarness) {
\r
22 super(h, "XTeaKey Test");
\r
23 runTest(testGetBlockSize, "XTea Block Size");
\r
24 runTest(testVectors, "XTea Test Vectors");
\r
29 public function testGetBlockSize():void {
\r
30 var tea:XTeaKey = new XTeaKey(Hex.toArray("deadbabecafebeefdeadbabecafebeef"));
\r
31 assert("tea blocksize", tea.getBlockSize()==8);
\r
34 public function testVectors():void {
\r
36 // can't find working test vectors.
\r
37 // algorithms should not get published without vectors :(
\r
39 "00000000000000000000000000000000",
\r
40 "2b02056806144976775d0e266c287843"];
\r
43 "74657374206d652e"];
\r
46 "7909582138198783"];
\r
47 // self-fullfilling vectors.
\r
48 // oh well, at least I can decrypt what I produce. :(
\r
50 for (var i:uint=0;i<keys.length;i++) {
\r
51 var key:ByteArray = Hex.toArray(keys[i]);
\r
52 var pt:ByteArray = Hex.toArray(pts[i]);
\r
53 var tea:XTeaKey = new XTeaKey(key);
\r
55 var out:String = Hex.fromArray(pt);
\r
56 assert("comparing "+cts[i]+" to "+out, cts[i]==out);
\r
57 // now go back to plaintext.
\r
60 out = Hex.fromArray(pt);
\r
61 assert("comparing "+pts[i]+" to "+out, pts[i]==out);
\r