corda / com.r3.corda.networkmanage.common.cryptoservice / JCACryptoService

JCACryptoService

abstract class JCACryptoService<T : AuthenticationCredentials, U : KeyConfig> : CryptoService<T, U>

This is the base class that facilitates easy integration of further HSM vendors that provide a JCA provider. For every vendor we want to support there has to be a new CryptoService that implements CryptoService and optionally inherits from this class if it makes sense. Not all vendors fully implement the JCA API and some of the methods of this class will have to be overridden with vendor-specific implementations.

It is required that @keyStore is initialized.

Constructors

<init>

JCACryptoService(keyStore: KeyStore, provider: Provider, ctx: <ERROR CLASS> = LoggingContext(pathName = "CryptoService"))

This is the base class that facilitates easy integration of further HSM vendors that provide a JCA provider. For every vendor we want to support there has to be a new CryptoService that implements CryptoService and optionally inherits from this class if it makes sense. Not all vendors fully implement the JCA API and some of the methods of this class will have to be overridden with vendor-specific implementations.

Functions

containsKey

open fun containsKey(alias: String): Boolean

Check if this CryptoService contains an entry for the given alias.

delete

open fun delete(alias: String): Unit

ensureAuthenticated

open fun <T> ensureAuthenticated(block: () -> T): T

generateRandomLong

open fun generateRandomLong(): Long

Generate a random Long using the underlying Provider.

getCertificate

open fun getCertificate(alias: String): Certificate

Returns the Certificate of the entry for the given alias.

getPublicKey

open fun getPublicKey(alias: String): PublicKey

Returns the PublicKey of the entry for the given alias.

getSigner

open fun getSigner(alias: String, password: String?): <ERROR CLASS>

Returns ContentSigner for the key identified by the input alias.

sign

open fun sign(alias: String, data: ByteArray, signAlgorithm: String?, password: String?): ByteArray

Sign a ByteArray using the private key identified by the input alias. Returns the signature bytes formatted according to the signature scheme. The signAlgorithm if specified determines the signature scheme used for signing, if not specified then the signature scheme is based on the private key scheme.

Inherited Functions

authenticate

abstract fun authenticate(credentials: T): Unit

Authenticate a user against the underlying crypto provider using given credentials.

generateAndStoreKeyPair

abstract fun generateAndStoreKeyPair(keyConfig: U): PublicKey

Generate a key pair and a basic self-signed certificate and store within the underlying key store.

getAuthenticatedUsers

abstract fun getAuthenticatedUsers(): List<String>

Return the list of users currently authenticated against the underlying crypto provider.

isAuthenticated

abstract fun isAuthenticated(): Boolean

Boolean flag indicating whether further authentication is needed to use stored keys.

logOut

abstract fun logOut(): Unit

Reset the authentication state for the underlying crypto provider.

updateCertificate

abstract fun updateCertificate(keyConfig: U, certificateChain: List<X509Certificate>): Unit

Update the certificate chain within the underlying key store.

Inheritors

AmazonCloudHsmCryptoService

class AmazonCloudHsmCryptoService : JCACryptoService<CloudHsmPasswordCredentials, AmazonCloudHsmKeyConfig>

GemaltoLunaCryptoService

class GemaltoLunaCryptoService : JCACryptoService<GemaltoAuthenticationCredentials, GemaltoLunaKeyConfig>

Implementation of a CryptoService that is backed by a Gemalto Luna HSM.

SecurosysPrimusXCryptoService

class SecurosysPrimusXCryptoService : JCACryptoService<SecurosysAuthenticationCredentials, SecurosysKeyConfig>