package es.gob.jmulticard.asn1.der.x509;
import es.gob.jmulticard.asn1.OptionalDecoderObjectElement;
import es.gob.jmulticard.asn1.der.Sequence;
/** Objeto <code>SubjectPublicKeyInfo</code> de X.509.
* <pre>
* SubjectPublicKeyInfo ::= SEQUENCE {
* algorithm AlgorithmIdentifier {{ECPKAlgorithms}} (WITH COMPONENTS {algorithm, parameters}) ,
* subjectPublicKey BIT STRING
* }
*
* AlgorithmIdentifier { ALGORITHM:IOSet } ::= SEQUENCE {
* algorithm ALGORITHM.&id({IOSet}),
* parameters ALGORITHM.&Type({IOSet}{@algorithm}) OPTIONAL
* }
* </pre>
* @author Tomás García-Merás. */
public final class SubjectPublicKeyInfo extends Sequence {
/** Crea un objeto <code>SubjectPublicKeyInfo</code> de X.509. */
public SubjectPublicKeyInfo() {
super(
new OptionalDecoderObjectElement[] {
new OptionalDecoderObjectElement(
AlgorithmIdentifier.class,
false
),
new OptionalDecoderObjectElement(
SubjectPublicKey.class,
false
)
}
);
}
/** Obtiene el campo <code>SubjectPublicKey</code> en su representación binaria directa.
* @return <code>SubjectPublicKey</code>. */
public byte[] getSubjectPublicKey() {
// Eliminamos el primer octeto (00)
final byte[] tmp = ((SubjectPublicKey)getElementAt(1)).getValue();
final byte[] ret = new byte[tmp.length -1];
System.arraycopy(tmp, 1, ret, 0, ret.length);
return ret;
}
}