diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/asn1/test/BiometricDataUnitTest.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/asn1/test/BiometricDataUnitTest.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/test/BiometricDataUnitTest.java b/bcprov/src/main/java/org/bouncycastle/asn1/test/BiometricDataUnitTest.java new file mode 100644 index 0000000..b4c2ea4 --- /dev/null +++ b/bcprov/src/main/java/org/bouncycastle/asn1/test/BiometricDataUnitTest.java @@ -0,0 +1,133 @@ +package org.bouncycastle.asn1.test; + +import java.security.SecureRandom; + +import org.bouncycastle.asn1.ASN1InputStream; +import org.bouncycastle.asn1.ASN1OctetString; +import org.bouncycastle.asn1.ASN1Sequence; +import org.bouncycastle.asn1.DERIA5String; +import org.bouncycastle.asn1.DERNull; +import org.bouncycastle.asn1.DEROctetString; +import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; +import org.bouncycastle.asn1.x509.AlgorithmIdentifier; +import org.bouncycastle.asn1.x509.qualified.BiometricData; +import org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData; +import org.bouncycastle.util.test.SimpleTest; + +public class BiometricDataUnitTest + extends SimpleTest +{ + public String getName() + { + return "BiometricData"; + } + + private byte[] generateHash() + { + SecureRandom rand = new SecureRandom(); + byte[] bytes = new byte[20]; + + rand.nextBytes(bytes); + + return bytes; + } + + public void performTest() + throws Exception + { + TypeOfBiometricData dataType = new TypeOfBiometricData(TypeOfBiometricData.HANDWRITTEN_SIGNATURE); + AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE); + ASN1OctetString dataHash = new DEROctetString(generateHash()); + BiometricData bd = new BiometricData(dataType, hashAlgorithm, dataHash); + + checkConstruction(bd, dataType, hashAlgorithm, dataHash, null); + + DERIA5String dataUri = new DERIA5String("http://test"); + + bd = new BiometricData(dataType, hashAlgorithm, dataHash, dataUri); + + checkConstruction(bd, dataType, hashAlgorithm, dataHash, dataUri); + + bd = BiometricData.getInstance(null); + + if (bd != null) + { + fail("null getInstance() failed."); + } + + try + { + BiometricData.getInstance(new Object()); + + fail("getInstance() failed to detect bad object."); + } + catch (IllegalArgumentException e) + { + // expected + } + } + + private void checkConstruction( + BiometricData bd, + TypeOfBiometricData dataType, + AlgorithmIdentifier hashAlgorithm, + ASN1OctetString dataHash, + DERIA5String dataUri) + throws Exception + { + checkValues(bd, dataType, hashAlgorithm, dataHash, dataUri); + + bd = BiometricData.getInstance(bd); + + checkValues(bd, dataType, hashAlgorithm, dataHash, dataUri); + + ASN1InputStream aIn = new ASN1InputStream(bd.toASN1Object().getEncoded()); + + ASN1Sequence seq = (ASN1Sequence)aIn.readObject(); + + bd = BiometricData.getInstance(seq); + + checkValues(bd, dataType, hashAlgorithm, dataHash, dataUri); + } + + private void checkValues( + BiometricData bd, + TypeOfBiometricData dataType, + AlgorithmIdentifier algID, + ASN1OctetString dataHash, + DERIA5String sourceDataURI) + { + if (!bd.getTypeOfBiometricData().equals(dataType)) + { + fail("types don't match."); + } + + if (!bd.getHashAlgorithm().equals(algID)) + { + fail("hash algorithms don't match."); + } + + if (!bd.getBiometricDataHash().equals(dataHash)) + { + fail("hash algorithms don't match."); + } + + if (sourceDataURI != null) + { + if (!bd.getSourceDataUri().equals(sourceDataURI)) + { + fail("data uris don't match."); + } + } + else if (bd.getSourceDataUri() != null) + { + fail("data uri found when none expected."); + } + } + + public static void main( + String[] args) + { + runTest(new BiometricDataUnitTest()); + } +} |