/*
* Copyright (C) 2008 The Android Open Source Project
*
* 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.
*/
package org.apache.harmony.crypto.tests.javax.crypto.func;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class MacThread extends TestThread {
MacThread(String[] names) {
super(names);
}
@Override
public void test() throws Exception {
int size = 256;
byte[] src1 = new byte[size];
byte[] src2 = new byte[size];
byte[] src3 = new byte[size];
int i;
for (i = 0; i < size; i++) {
src1[i] = (byte)i;
src2[i] = (byte)i;
src3[i] = (byte)(size - i - 1);
}
Mac m = Mac.getInstance(algName);
byte[] b = {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0};
SecretKeySpec sks = new SecretKeySpec(b, "SHA1");
m.init(sks);
byte[] res = m.doFinal(src1);
String sign1 = new String(res);
m.init(sks);
res = m.doFinal(src2);
String sign2 = new String(res);
m.init(sks);
res = m.doFinal(src3);
String sign3 = new String(res);
if (sign1.compareTo(sign2) != 0 || sign1.compareTo(sign3) == 0 ||
sign2.compareTo(sign3) == 0) {
throw new Exception ("Signature is not correct for algorithm " + algName);
}
}
}
|