BiometricData
using System;
namespace Org.BouncyCastle.Asn1.X509.Qualified
{
public class BiometricData : Asn1Encodable
{
private readonly TypeOfBiometricData m_typeOfBiometricData;
private readonly AlgorithmIdentifier m_hashAlgorithm;
private readonly Asn1OctetString m_biometricDataHash;
private readonly DerIA5String m_sourceDataUri;
public TypeOfBiometricData TypeOfBiometricData => m_typeOfBiometricData;
public AlgorithmIdentifier HashAlgorithm => m_hashAlgorithm;
public Asn1OctetString BiometricDataHash => m_biometricDataHash;
public DerIA5String SourceDataUri => m_sourceDataUri;
public static BiometricData GetInstance(object obj)
{
if (obj == null)
return null;
BiometricData biometricData = obj as BiometricData;
if (biometricData != null)
return biometricData;
return new BiometricData(Asn1Sequence.GetInstance(obj));
}
public static BiometricData GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new BiometricData(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static BiometricData GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new BiometricData(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
private BiometricData(Asn1Sequence seq)
{
int count = seq.Count;
int sequencePosition = 0;
if (count < 3 || count > 4)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_typeOfBiometricData = TypeOfBiometricData.GetInstance(seq[sequencePosition++]);
m_hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[sequencePosition++]);
m_biometricDataHash = Asn1OctetString.GetInstance(seq[sequencePosition++]);
m_sourceDataUri = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerIA5String.GetOptional);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public BiometricData(TypeOfBiometricData typeOfBiometricData, AlgorithmIdentifier hashAlgorithm, Asn1OctetString biometricDataHash)
: this(typeOfBiometricData, hashAlgorithm, biometricDataHash, null)
{
}
public BiometricData(TypeOfBiometricData typeOfBiometricData, AlgorithmIdentifier hashAlgorithm, Asn1OctetString biometricDataHash, DerIA5String sourceDataUri)
{
if (typeOfBiometricData == null)
throw new ArgumentNullException("typeOfBiometricData");
m_typeOfBiometricData = typeOfBiometricData;
if (hashAlgorithm == null)
throw new ArgumentNullException("hashAlgorithm");
m_hashAlgorithm = hashAlgorithm;
if (biometricDataHash == null)
throw new ArgumentNullException("biometricDataHash");
m_biometricDataHash = biometricDataHash;
m_sourceDataUri = sourceDataUri;
}
public override Asn1Object ToAsn1Object()
{
if (m_sourceDataUri != null)
return new DerSequence(m_typeOfBiometricData, m_hashAlgorithm, m_biometricDataHash, m_sourceDataUri);
return new DerSequence(m_typeOfBiometricData, m_hashAlgorithm, m_biometricDataHash);
}
}
}