001package org.apache.commons.ssl.org.bouncycastle.asn1.x509.qualified; 002 003import java.util.Enumeration; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERIA5String; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 012import org.apache.commons.ssl.org.bouncycastle.asn1.x509.AlgorithmIdentifier; 013 014/** 015 * The BiometricData object. 016 * <pre> 017 * BiometricData ::= SEQUENCE { 018 * typeOfBiometricData TypeOfBiometricData, 019 * hashAlgorithm AlgorithmIdentifier, 020 * biometricDataHash OCTET STRING, 021 * sourceDataUri IA5String OPTIONAL } 022 * </pre> 023 */ 024public class BiometricData 025 extends ASN1Object 026{ 027 private TypeOfBiometricData typeOfBiometricData; 028 private AlgorithmIdentifier hashAlgorithm; 029 private ASN1OctetString biometricDataHash; 030 private DERIA5String sourceDataUri; 031 032 public static BiometricData getInstance( 033 Object obj) 034 { 035 if (obj instanceof BiometricData) 036 { 037 return (BiometricData)obj; 038 } 039 040 if (obj != null) 041 { 042 return new BiometricData(ASN1Sequence.getInstance(obj)); 043 } 044 045 return null; 046 } 047 048 private BiometricData(ASN1Sequence seq) 049 { 050 Enumeration e = seq.getObjects(); 051 052 // typeOfBiometricData 053 typeOfBiometricData = TypeOfBiometricData.getInstance(e.nextElement()); 054 // hashAlgorithm 055 hashAlgorithm = AlgorithmIdentifier.getInstance(e.nextElement()); 056 // biometricDataHash 057 biometricDataHash = ASN1OctetString.getInstance(e.nextElement()); 058 // sourceDataUri 059 if (e.hasMoreElements()) 060 { 061 sourceDataUri = DERIA5String.getInstance(e.nextElement()); 062 } 063 } 064 065 public BiometricData( 066 TypeOfBiometricData typeOfBiometricData, 067 AlgorithmIdentifier hashAlgorithm, 068 ASN1OctetString biometricDataHash, 069 DERIA5String sourceDataUri) 070 { 071 this.typeOfBiometricData = typeOfBiometricData; 072 this.hashAlgorithm = hashAlgorithm; 073 this.biometricDataHash = biometricDataHash; 074 this.sourceDataUri = sourceDataUri; 075 } 076 077 public BiometricData( 078 TypeOfBiometricData typeOfBiometricData, 079 AlgorithmIdentifier hashAlgorithm, 080 ASN1OctetString biometricDataHash) 081 { 082 this.typeOfBiometricData = typeOfBiometricData; 083 this.hashAlgorithm = hashAlgorithm; 084 this.biometricDataHash = biometricDataHash; 085 this.sourceDataUri = null; 086 } 087 088 public TypeOfBiometricData getTypeOfBiometricData() 089 { 090 return typeOfBiometricData; 091 } 092 093 public AlgorithmIdentifier getHashAlgorithm() 094 { 095 return hashAlgorithm; 096 } 097 098 public ASN1OctetString getBiometricDataHash() 099 { 100 return biometricDataHash; 101 } 102 103 public DERIA5String getSourceDataUri() 104 { 105 return sourceDataUri; 106 } 107 108 public ASN1Primitive toASN1Primitive() 109 { 110 ASN1EncodableVector seq = new ASN1EncodableVector(); 111 seq.add(typeOfBiometricData); 112 seq.add(hashAlgorithm); 113 seq.add(biometricDataHash); 114 115 if (sourceDataUri != null) 116 { 117 seq.add(sourceDataUri); 118 } 119 120 return new DERSequence(seq); 121 } 122}