1
package org.bouncycastle.asn1.test;
3
import java.util.Random;
5
import org.bouncycastle.asn1.ASN1InputStream;
6
import org.bouncycastle.asn1.ASN1OctetString;
7
import org.bouncycastle.asn1.ASN1Sequence;
8
import org.bouncycastle.asn1.DERIA5String;
9
import org.bouncycastle.asn1.DERNull;
10
import org.bouncycastle.asn1.DEROctetString;
11
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
12
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
13
import org.bouncycastle.asn1.x509.qualified.BiometricData;
14
import org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData;
15
import org.bouncycastle.util.test.SimpleTest;
17
public class BiometricDataUnitTest
20
public String getName()
22
return "BiometricData";
25
private byte[] generateHash()
27
Random rand = new Random();
28
byte[] bytes = new byte[20];
30
rand.nextBytes(bytes);
35
public void performTest()
38
TypeOfBiometricData dataType = new TypeOfBiometricData(TypeOfBiometricData.HANDWRITTEN_SIGNATURE);
39
AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, new DERNull());
40
ASN1OctetString dataHash = new DEROctetString(generateHash());
41
BiometricData bd = new BiometricData(dataType, hashAlgorithm, dataHash);
43
checkConstruction(bd, dataType, hashAlgorithm, dataHash, null);
45
DERIA5String dataUri = new DERIA5String("http://test");
47
bd = new BiometricData(dataType, hashAlgorithm, dataHash, dataUri);
49
checkConstruction(bd, dataType, hashAlgorithm, dataHash, dataUri);
51
bd = BiometricData.getInstance(null);
55
fail("null getInstance() failed.");
60
BiometricData.getInstance(new Object());
62
fail("getInstance() failed to detect bad object.");
64
catch (IllegalArgumentException e)
70
private void checkConstruction(
72
TypeOfBiometricData dataType,
73
AlgorithmIdentifier hashAlgorithm,
74
ASN1OctetString dataHash,
78
checkValues(bd, dataType, hashAlgorithm, dataHash, dataUri);
80
bd = BiometricData.getInstance(bd);
82
checkValues(bd, dataType, hashAlgorithm, dataHash, dataUri);
84
ASN1InputStream aIn = new ASN1InputStream(bd.toASN1Object().getEncoded());
86
ASN1Sequence seq = (ASN1Sequence)aIn.readObject();
88
bd = BiometricData.getInstance(seq);
90
checkValues(bd, dataType, hashAlgorithm, dataHash, dataUri);
93
private void checkValues(
95
TypeOfBiometricData dataType,
96
AlgorithmIdentifier algID,
97
ASN1OctetString dataHash,
98
DERIA5String sourceDataURI)
100
if (!bd.getTypeOfBiometricData().equals(dataType))
102
fail("types don't match.");
105
if (!bd.getHashAlgorithm().equals(algID))
107
fail("hash algorithms don't match.");
110
if (!bd.getBiometricDataHash().equals(dataHash))
112
fail("hash algorithms don't match.");
115
if (sourceDataURI != null)
117
if (!bd.getSourceDataUri().equals(sourceDataURI))
119
fail("data uris don't match.");
122
else if (bd.getSourceDataUri() != null)
124
fail("data uri found when none expected.");
128
public static void main(
131
runTest(new BiometricDataUnitTest());