java.com.ionic.sdk.agent.package-info Maven / Gradle / Ivy
Show all versions of ionic-sdk Show documentation
/**
* Contains {@link com.ionic.sdk.agent.Agent}, which is the primary point of interaction with the Ionic SDK. The
* Agent class implements {@link com.ionic.sdk.key.KeyServices}, and brokers access to cryptography keys stored on
* Ionic servers.
*
* AgentSdk
* The class {@link com.ionic.sdk.agent.AgentSdk} may optionally be used to configure the Ionic SDK to select a
* particular {@link java.security.Provider} when cryptographic primitives are needed. To do this, call the
* function {@link com.ionic.sdk.agent.AgentSdk#initialize(java.security.Provider)} prior to any other usage of the
* Ionic SDK.
*
* References to particular providers may be obtained by calling the
* function {@link java.security.Security#getProvider(java.lang.String)}, which returns a provider object if it is
* registered.
*
* - "SunJCE" - the default provider, built into the JRE
* - "BC" - the BouncyCastle provider, a popular third-party library
*
*
* Any library to be used by the Ionic SDK must conform to the JCE architecture described
*
* here. In particular, instantiation of cryptography primitives is achieved through the use of a
* 'getInstance()' call on the desired interface.
*
md = MessageDigest.getInstance("SHA-256")
*
* In SDK versions 2.0 - 2.5, the provider "org.bouncycastle.jce.provider.BouncyCastleProvider" was implicitly
* registered to the JRE on first use of Ionic cryptography. In SDK versions 2.6+, if usage of BouncyCastle
* cryptography is desired, BouncyCastle must be explicitly registered (using the API
* {@link com.ionic.sdk.agent.AgentSdk#initialize(java.security.Provider)} prior to any other usage of the Ionic SDK.
*
* If no specific {@link java.security.Provider} is specified in the API call
* {@link com.ionic.sdk.agent.AgentSdk#initialize(java.security.Provider)}, the Ionic SDK default is to use all
* providers registered to the JRE to satisfy a request for a cryptography primitive. If a provider is
* specified, it must implement any requested cryptography primitive. Known limitations:
*
* - JRE 7 has no implementation of the AES GCM algorithm. This is used by
* {@link com.ionic.sdk.agent.cipher.chunk.ChunkCipherV3} and
* {@link com.ionic.sdk.agent.cipher.file.GenericFileCipher} version 1.3.
* - JRE 7-10 have no implementation of the RSA signature algorithm used by the Ionic SDK. This algorithm is
* used during the API call
* {@link com.ionic.sdk.agent.Agent#createDevice(com.ionic.sdk.agent.request.createdevice.CreateDeviceRequest)}.
*
*/
package com.ionic.sdk.agent;