summaryrefslogtreecommitdiffstats
path: root/core/src/test/java/org/onap/aaf/cadi/test/JU_Passcode.java
blob: 40ceaa1381305b60c1491d7b39238b07c8cc1ecc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*******************************************************************************
 * ============LICENSE_START====================================================
 * * org.onap.aaf
 * * ===========================================================================
 * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
 * * ===========================================================================
 * * Licensed under the Apache License, Version 2.0 (the "License");
 * * you may not use this file except in compliance with the License.
 * * You may obtain a copy of the License at
 * * 
 *  *      http://www.apache.org/licenses/LICENSE-2.0
 * * 
 *  * Unless required by applicable law or agreed to in writing, software
 * * distributed under the License is distributed on an "AS IS" BASIS,
 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * * See the License for the specific language governing permissions and
 * * limitations under the License.
 * * ============LICENSE_END====================================================
 * *
 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 * *
 ******************************************************************************/
package org.onap.aaf.cadi.test;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;

import org.junit.Test;
import org.onap.aaf.cadi.CmdLine;
import org.onap.aaf.cadi.Symm;

import junit.framework.Assert;

public class JU_Passcode {
	@Test
	public void test() throws Exception {
		int iterations = 0;
		long start = System.nanoTime();
		int gens= 800, en_de=2000;
		for(int j=0;j<gens;++j) {
			CmdLine.main(new String[] {"keygen","tempkey"});
			
			Symm symm;
			File fi = new File("tempkey");
			Assert.assertEquals(2074, fi.length());
			FileInputStream fis = new FileInputStream(fi);
			
			try {
				symm = Symm.obtain(fis);
			} finally {
				fis.close();
			}
			String samples[] = {"activevos","ThisIsATestPassword","I have spaces","I have 's, /s and &s and _s"};
			ByteArrayOutputStream baos;
			for(int i=0;i<en_de;++i) {
				String password = samples[i%samples.length];
				baos = new ByteArrayOutputStream();
				symm.enpass(password, baos);
				String pass = baos.toString();
				byte[] array = baos.toByteArray();
				for(int k=0;k<array.length;++k) {
					byte ch = array[k];
//				for(int k=0;k<pass.length();++k) {
//					char ch = pass.charAt(k);
					if(!(Character.isLetter(ch) || Character.isDigit(ch) || ch=='-' || ch=='_' || ch=='=')) {
						throw new Exception("Yikes, have a bad character..." + ch + '(' + (int)ch + ')');
					}
				}
				baos = new ByteArrayOutputStream();
				symm.depass(pass, baos);
				Assert.assertEquals(password,baos.toString());
				Assert.assertEquals(password,symm.depass(pass));
				++iterations;
			}
			symm.enpass("activevos", System.out);
			System.out.println();
		}
		float ms = (System.nanoTime()-start)/1000000F;
		System.out.println("Ran " + iterations + " Encrypt/Decrypt cycles + " + gens + " keygens");

		System.out.println("Total: " + ms + "ms");
		System.out.println("Avg:   " + ms/iterations + "ms");
		System.out.println("Avg Gen + " + en_de + " Encrypt/Decrypt cycles:  " + ms/gens + "ms");


	}

}