001package org.apache.commons.ssl.org.bouncycastle.asn1.eac;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
006
007public abstract class PublicKeyDataObject
008    extends ASN1Object
009{
010    public static PublicKeyDataObject getInstance(Object obj)
011    {
012        if (obj instanceof PublicKeyDataObject)
013        {
014            return (PublicKeyDataObject)obj;
015        }
016        if (obj != null)
017        {
018            ASN1Sequence seq = ASN1Sequence.getInstance(obj);
019            ASN1ObjectIdentifier usage = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0));
020
021            if (usage.on(EACObjectIdentifiers.id_TA_ECDSA))
022            {
023                return new ECDSAPublicKey(seq);
024            }
025            else
026            {
027                return new RSAPublicKey(seq);
028            }
029        }
030
031        return null;
032    }
033
034    public abstract ASN1ObjectIdentifier getUsage();
035}