Package gnu.crypto.key

Provides a basic API for algorithms to generate Public/Private keypairs, and Key Agreement schemes.

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.
Provides a basic API for algorithms to generate Public/Private keypairs, and Key Agreement schemes.

Package overview

The contents of this package hierarchy is organised as follows:

The four key-pair generation algorithms currently implemented in this library are:

The Key Agreement protocols currently implemented in this library are:

The following diagram shows the important classes participating in key-pair generation:

../../../../diagrams/kp_class_diag.png" width=372 height=275 border=0>

The next diagram shows the important classes participating in key agreements:

../../../../diagrams/ka_class_diag.png" width=561 height=332 border=0>

The next two diagrams show the sequences involved in generating a keypair, and establishing a key agreement protocol.

../../../../diagrams/kp_generation_seq_diag.png" width=277 height=125 border=0>

../../../../diagrams/ka_seq_diag.png" width=404 height=185 border=0>

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();
<!-- $Revision: 1.4 $ -->

Copyright © 2001, 2002, 2003 Free Software Foundation, Inc. All Rights Reserved.