es.gob.jmulticard.jse.provider.ceres.CeresPrivateKey Maven / Gradle / Ivy
package es.gob.jmulticard.jse.provider.ceres;
import java.io.IOException;
import java.io.NotSerializableException;
import java.io.ObjectOutputStream;
import java.math.BigInteger;
import java.security.interfaces.RSAPrivateKey;
import es.gob.jmulticard.card.CryptoCard;
import es.gob.jmulticard.card.fnmt.ceres.Ceres;
import es.gob.jmulticard.card.fnmt.ceres.CeresPrivateKeyReference;
/** Clave privada de una tarjeta FNMT-RCM-CERES. La clase no contiene la clave privada en sí, sino
* una referencia a ella y una referencia a la propia tarjeta.
* @author Tomás García-Merás. */
public final class CeresPrivateKey implements RSAPrivateKey {
private static final long serialVersionUID = 4403051294889801855L;
private final Ceres ceres;
private final CeresPrivateKeyReference keyRef;
private final BigInteger modulus;
/** Crea una clave privada de tarjeta FNMT-RCM-CERES.
* @param keyReference Referencia a la clave privada de tarjeta FNMT-RCM-CERES.
* @param card Tarjeta a la cual pertenece esta clave.
* @param mod Módulo de la clave privada. */
CeresPrivateKey(final CeresPrivateKeyReference keyReference, final Ceres card, final BigInteger mod) {
this.keyRef = keyReference;
this.ceres = card;
this.modulus = mod;
}
/** {@inheritDoc} */
@Override
public String getAlgorithm() {
return "RSA"; //$NON-NLS-1$
}
/** Obtiene la tarjeta capaz de operar con esta clave.
* @return Tarjeta capaz de operar con esta clave. */
CryptoCard getCryptoCard() {
return this.ceres;
}
/** {@inheritDoc} */
@Override
public byte[] getEncoded() {
return null;
}
/** {@inheritDoc} */
@Override
public String getFormat() {
return null;
}
/** Recupera la referencia de la clave.
* @return Referencia de la clave. */
CeresPrivateKeyReference getReference() {
return this.keyRef;
}
/** Método no soportado. */
@Override
public BigInteger getModulus() {
return this.modulus;
}
/** Método no soportado. */
@Override
public BigInteger getPrivateExponent() {
throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
@Override
public String toString() {
return this.keyRef.toString();
}
@SuppressWarnings({ "static-method", "unused" })
private void writeObject(final ObjectOutputStream out) throws IOException {
throw new NotSerializableException();
}
}