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}