4 * A test class for RSAKey
\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.rsa.RSAKey;
\r
12 import flash.utils.ByteArray;
\r
13 import com.hurlant.util.Hex;
\r
14 import com.hurlant.util.der.PEM;
\r
16 public class RSAKeyTest extends TestCase
\r
18 public function RSAKeyTest(h:ITestHarness)
\r
20 super(h, "RSA Testing");
\r
22 runTest(testSmoke,"RSA smoke test");
\r
23 runTest(testGenerate, "RSA Key Generation test");
\r
24 runTest(testPEM, "RSA Private Key PEM parsing");
\r
25 runTest(testPEM2, "RSA Public Key PEM parsing");
\r
29 public function testSmoke():void {
\r
30 var N:String ="C4E3F7212602E1E396C0B6623CF11D26204ACE3E7D26685E037AD2507DCE82FC" +
\r
31 "28F2D5F8A67FC3AFAB89A6D818D1F4C28CFA548418BD9F8E7426789A67E73E41";
\r
32 var E:String = "10001";
\r
33 var D:String = "7cd1745aec69096129b1f42da52ac9eae0afebbe0bc2ec89253598dcf454960e" +
\r
34 "3e5e4ec9f8c87202b986601dd167253ee3fb3fa047e14f1dfd5ccd37e931b29d";
\r
35 var P:String = "f0e4dd1eac5622bd3932860fc749bbc48662edabdf3d2826059acc0251ac0d3b";
\r
36 var Q:String = "d13cb38fbcd06ee9bca330b4000b3dae5dae12b27e5173e4d888c325cda61ab3";
\r
37 var DMP1:String = "b3d5571197fc31b0eb6b4153b425e24c033b054d22b9c8282254fe69d8c8c593";
\r
38 var DMQ1:String = "968ffe89e50d7b72585a79b65cfdb9c1da0963cceb56c3759e57334de5a0ac3f";
\r
39 var IQMP:String = "d9bc4f420e93adad9f007d0e5744c2fe051c9ed9d3c9b65f439a18e13d6e3908";
\r
41 var rsa:RSAKey = RSAKey.parsePrivateKey(N,E,D, P,Q,DMP1,DMQ1,IQMP);
\r
42 var txt:String = "hello";
\r
43 var src:ByteArray = Hex.toArray(Hex.fromString(txt));
\r
44 var dst:ByteArray = new ByteArray;
\r
45 var dst2:ByteArray = new ByteArray;
\r
46 rsa.encrypt(src, dst, src.length);
\r
47 rsa.decrypt(dst, dst2, dst.length);
\r
48 var txt2:String = Hex.toString(Hex.fromArray(dst2));
\r
49 assert("rsa encrypt+decrypt", txt==txt2);
\r
52 public function testGenerate():void {
\r
53 var rsa:RSAKey = RSAKey.generate(256, "10001");
\r
54 // same lame smoke test here.
\r
55 var txt:String = "hello";
\r
56 var src:ByteArray = Hex.toArray(Hex.fromString(txt));
\r
57 var dst:ByteArray = new ByteArray;
\r
58 var dst2:ByteArray = new ByteArray;
\r
59 rsa.encrypt(src, dst, src.length);
\r
60 rsa.decrypt(dst, dst2, dst.length);
\r
61 var txt2:String = Hex.toString(Hex.fromArray(dst2));
\r
62 assert("rsa encrypt+decrypt", txt==txt2);
\r
65 public function testPEM():void {
\r
66 var pem:String = "-----BEGIN RSA PRIVATE KEY-----\n" +
\r
67 "MGQCAQACEQDJG3bkuB9Ie7jOldQTVdzPAgMBAAECEQCOGqcPhP8t8mX8cb4cQEaR\n" +
\r
68 "AgkA5WTYuAGmH0cCCQDgbrto0i7qOQIINYr5btGrtccCCQCYy4qX4JDEMQIJAJll\n" +
\r
70 "-----END RSA PRIVATE KEY-----";
\r
71 var rsa:RSAKey = PEM.readRSAPrivateKey(pem);
\r
72 //trace(rsa.dump());
\r
75 var txt:String = "hello";
\r
76 var src:ByteArray = Hex.toArray(Hex.fromString(txt));
\r
77 var dst:ByteArray = new ByteArray;
\r
78 var dst2:ByteArray = new ByteArray;
\r
79 rsa.encrypt(src, dst, src.length);
\r
80 rsa.decrypt(dst, dst2, dst.length);
\r
81 var txt2:String = Hex.toString(Hex.fromArray(dst2));
\r
82 assert("rsa encrypt+decrypt", txt==txt2);
\r
84 public function testPEM2():void {
\r
85 var pem:String = "-----BEGIN PUBLIC KEY-----\n" +
\r
86 "MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAMkbduS4H0h7uM6V1BNV3M8CAwEAAQ==\n" +
\r
87 "-----END PUBLIC KEY-----";
\r
88 var rsa:RSAKey = PEM.readRSAPublicKey(pem);
\r
89 //trace(rsa.dump());
\r