Provides a basic API for algorithms to generate Public/Private keypairs, and Key Agreement schemes.
See: Description
Interface Summary | |
---|---|
IKeyAgreementParty |
The visible methods of an key agreement protocol participating party. |
IKeyPairCodec |
The visible methods of an object that knows how to encode and decode cryptographic asymmetric keypairs. |
IKeyPairGenerator |
The visible methods of every asymmetric keypair generator.
|
Class Summary | |
---|---|
BaseKeyAgreementParty |
A base abstract class to facilitate implementations of concrete key agreement protocol handlers. |
GnuSecretKey | A secret key composed of a sequence of raw, unformatted octets. |
IncomingMessage |
An implementation of an incoming message for use with key agreement protocols. |
KeyAgreementException | A generic exception indicating that an unexpected condition has been detected during the setup and/or processing of a key agreement protocol exchange. |
KeyAgreementFactory |
A Factory class to generate key agreement protocol handlers. |
KeyPairCodecFactory |
A Factory class to instantiate key encoder/decoder instances. |
KeyPairGeneratorFactory |
A Factory to instantiate asymmetric keypair generators. |
OutgoingMessage |
An implementation of outgoing messages for use with key agreement protocols. |
The contents of this package hierarchy is organised as follows:
The four key-pair generation algorithms currently implemented in this library are:
gnu.crypto.key.dh
,gnu.crypto.key.dss
,gnu.crypto.key.rsa
,gnu.crypto.key.srp6
.The Key Agreement protocols currently implemented in this library are:
The following diagram shows the important classes participating in key-pair generation:
The next diagram shows the important classes participating in key agreements:
The next two diagrams show the sequences involved in generating a keypair, and establishing a key agreement protocol.
The following example shows the code that can be used to generate a key- pair:
import gnu.crypto.sig.rsa.RSA; import gnu.crypto.key.rsa.RSAKeyPairGenerator; import java.math.BigInteger; import java.security.KeyPair; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPrivateCrtKey; import java.security.interfaces.RSAPublicKey; import java.util.HashMap; import java.util.Random; ... RSAKeyPairGenerator kpg = new RSAKeyPairGenerator(); HashMap map = new HashMap(); map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(1024)); kpg.setup(map); KeyPair kp = kpg.generate(); BigInteger n1 = ((RSAPublicKey) kp.getPublic()).getModulus(); BigInteger e = ((RSAPublicKey) kp.getPublic()).getPublicExponent(); BigInteger n2 = ((RSAPrivateKey) kp.getPrivate()).getModulus(); BigInteger d = ((RSAPrivateKey) kp.getPrivate()).getPrivateExponent(); BigInteger p = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeP(); BigInteger q = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeQ(); BigInteger dP = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeExponentP(); BigInteger dQ = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeExponentQ(); BigInteger qInv = ((RSAPrivateCrtKey) kp.getPrivate()).getCrtCoefficient();