001package org.apache.commons.ssl.org.bouncycastle.asn1.icao;
002
003import java.util.Enumeration;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString;
009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
012
013/**
014 * The DataGroupHash object.
015 * <pre>
016 * DataGroupHash  ::=  SEQUENCE {
017 *      dataGroupNumber         DataGroupNumber,
018 *      dataGroupHashValue     OCTET STRING }
019 * 
020 * DataGroupNumber ::= INTEGER {
021 *         dataGroup1    (1),
022 *         dataGroup1    (2),
023 *         dataGroup1    (3),
024 *         dataGroup1    (4),
025 *         dataGroup1    (5),
026 *         dataGroup1    (6),
027 *         dataGroup1    (7),
028 *         dataGroup1    (8),
029 *         dataGroup1    (9),
030 *         dataGroup1    (10),
031 *         dataGroup1    (11),
032 *         dataGroup1    (12),
033 *         dataGroup1    (13),
034 *         dataGroup1    (14),
035 *         dataGroup1    (15),
036 *         dataGroup1    (16) }
037 * 
038 * </pre>
039 */
040public class DataGroupHash 
041    extends ASN1Object
042{
043    ASN1Integer dataGroupNumber;    
044    ASN1OctetString    dataGroupHashValue;
045    
046    public static DataGroupHash getInstance(
047        Object obj)
048    {
049        if (obj instanceof DataGroupHash)
050        {
051            return (DataGroupHash)obj;
052        }
053        else if (obj != null)
054        {
055            return new DataGroupHash(ASN1Sequence.getInstance(obj));
056        }
057
058        return null;
059    }                
060            
061    private DataGroupHash(ASN1Sequence seq)
062    {
063        Enumeration e = seq.getObjects();
064
065        // dataGroupNumber
066        dataGroupNumber = ASN1Integer.getInstance(e.nextElement());
067        // dataGroupHashValue
068        dataGroupHashValue = ASN1OctetString.getInstance(e.nextElement());   
069    }
070    
071    public DataGroupHash(
072        int dataGroupNumber,        
073        ASN1OctetString     dataGroupHashValue)
074    {
075        this.dataGroupNumber = new ASN1Integer(dataGroupNumber);
076        this.dataGroupHashValue = dataGroupHashValue; 
077    }    
078
079    public int getDataGroupNumber()
080    {
081        return dataGroupNumber.getValue().intValue();
082    }
083    
084    public ASN1OctetString getDataGroupHashValue()
085    {
086        return dataGroupHashValue;
087    }     
088    
089    public ASN1Primitive toASN1Primitive()
090    {
091        ASN1EncodableVector seq = new ASN1EncodableVector();
092        seq.add(dataGroupNumber);
093        seq.add(dataGroupHashValue);  
094
095        return new DERSequence(seq);
096    }
097}