IaikPkcs11Signer.java
package io.mersel.dss.signer.api.services.keystore.iaik;
import eu.europa.esig.dss.enumerations.SignatureAlgorithm;
import java.security.cert.X509Certificate;
import java.util.List;
/**
* IAIK PKCS#11 destekli {@link Pkcs11Signer} implementasyonu. Cert + chain +
* key handle bilgilerini taşır, asıl C_Sign çağrısını
* {@link IaikPkcs11Module#signOnSession} metoduna delege eder.
*
* <p>Bu sınıf {@link IaikPkcs11Module#findSigner} tarafından üretilir;
* uygulama yaşamı boyunca cert'i değişmediği için thread-safe (immutable
* field'lar + module thread-safe sign).</p>
*/
final class IaikPkcs11Signer implements Pkcs11Signer {
private final IaikPkcs11Module module;
private final IaikPkcs11Module.ResolvedKey resolvedKey;
IaikPkcs11Signer(IaikPkcs11Module module, IaikPkcs11Module.ResolvedKey resolvedKey) {
this.module = module;
this.resolvedKey = resolvedKey;
}
@Override
public String getAlias() {
return resolvedKey.alias;
}
@Override
public X509Certificate getCertificate() {
return resolvedKey.certificate;
}
@Override
public List<X509Certificate> getCertificateChain() {
return resolvedKey.certificateChain;
}
@Override
public byte[] sign(byte[] dataToSign, SignatureAlgorithm signatureAlgorithm) {
return module.signOnSession(resolvedKey.privateKeyHandle, dataToSign, signatureAlgorithm);
}
}