01: package org.bouncycastle.asn1.test;
02:
03: import java.io.IOException;
04: import java.util.Random;
05:
06: import org.bouncycastle.asn1.ASN1InputStream;
07: import org.bouncycastle.asn1.ASN1OctetString;
08: import org.bouncycastle.asn1.ASN1Sequence;
09: import org.bouncycastle.asn1.DEROctetString;
10: import org.bouncycastle.asn1.icao.DataGroupHash;
11: import org.bouncycastle.util.test.SimpleTest;
12:
13: public class DataGroupHashUnitTest extends SimpleTest {
14: public String getName() {
15: return "DataGroupHash";
16: }
17:
18: private byte[] generateHash() {
19: Random rand = new Random();
20: byte[] bytes = new byte[20];
21:
22: for (int i = 0; i != bytes.length; i++) {
23: bytes[i] = (byte) rand.nextInt();
24: }
25:
26: return bytes;
27: }
28:
29: public void performTest() throws Exception {
30: int dataGroupNumber = 1;
31: ASN1OctetString dataHash = new DEROctetString(generateHash());
32: DataGroupHash dg = new DataGroupHash(dataGroupNumber, dataHash);
33:
34: checkConstruction(dg, dataGroupNumber, dataHash);
35:
36: dg = DataGroupHash.getInstance(null);
37:
38: if (dg != null) {
39: fail("null getInstance() failed.");
40: }
41:
42: try {
43: DataGroupHash.getInstance(new Object());
44:
45: fail("getInstance() failed to detect bad object.");
46: } catch (IllegalArgumentException e) {
47: // expected
48: }
49: }
50:
51: private void checkConstruction(DataGroupHash dg,
52: int dataGroupNumber, ASN1OctetString dataGroupHashValue)
53: throws IOException {
54: checkValues(dg, dataGroupNumber, dataGroupHashValue);
55:
56: dg = DataGroupHash.getInstance(dg);
57:
58: checkValues(dg, dataGroupNumber, dataGroupHashValue);
59:
60: ASN1InputStream aIn = new ASN1InputStream(dg.toASN1Object()
61: .getEncoded());
62:
63: ASN1Sequence seq = (ASN1Sequence) aIn.readObject();
64:
65: dg = DataGroupHash.getInstance(seq);
66:
67: checkValues(dg, dataGroupNumber, dataGroupHashValue);
68: }
69:
70: private void checkValues(DataGroupHash dg, int dataGroupNumber,
71: ASN1OctetString dataGroupHashValue) {
72: if (dg.getDataGroupNumber() != dataGroupNumber) {
73: fail("group number don't match.");
74: }
75:
76: if (!dg.getDataGroupHashValue().equals(dataGroupHashValue)) {
77: fail("hash value don't match.");
78: }
79: }
80:
81: public static void main(String[] args) {
82: runTest(new DataGroupHashUnitTest());
83: }
84: }
|