package com.sun.midp.crypto;
import org.bouncycastle.crypto.digests.SHA256Digest;
import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;
public class TestBouncyCastleSHA256 implements Testlet {
public int getExpectedPass() { return 7; }
public int getExpectedFail() { return 0; }
public int getExpectedKnownFail() { return 0; }
private static final String[] messages = {
"",
"a",
"abc",
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
"message digest",
"secure hash algorithm"
};
private static final String[] digests = {
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb",
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
"f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650",
"f30ceb2bb2829e79e4ca9753d35a8ecc00262d164cc077080295381cbd643f0d"
};
private static final String MILLION_A_DIGEST = "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0";
public void test(TestHarness th) {
SHA256Digest md = new SHA256Digest();
byte[] retValue = new byte[md.getDigestSize()];
for (int i = 0; i < messages.length; i++) {
byte[] bytes = messages[i].getBytes();
md.update(bytes, 0, bytes.length);
md.doFinal(retValue, 0);
th.check(Util.hexEncode(retValue).toLowerCase(), digests[i]);
}
for (int i = 0; i < 1000000; i++) {
md.update((byte)'a');
}
md.doFinal(retValue, 0);
th.check(Util.hexEncode(retValue).toLowerCase(), MILLION_A_DIGEST);
}
}