org.bouncycastle.jce.provider
Class JCEECDHKeyAgreement

java.lang.Object
  extended by javax.crypto.KeyAgreementSpi
      extended by org.bouncycastle.jce.provider.JCEECDHKeyAgreement
Direct Known Subclasses:
JCEECDHKeyAgreement.DH, JCEECDHKeyAgreement.DHC, JCEECDHKeyAgreement.DHwithSHA1KDF

public class JCEECDHKeyAgreement
extends javax.crypto.KeyAgreementSpi

Diffie-Hellman key agreement using elliptic curve keys, ala IEEE P1363 both the simple one, and the simple one with cofactors are supported.


Nested Class Summary
static class JCEECDHKeyAgreement.DH
           
static class JCEECDHKeyAgreement.DHC
           
static class JCEECDHKeyAgreement.DHwithSHA1KDF
           
 
Field Summary
private  BasicAgreement agreement
           
private static java.util.Hashtable algorithms
           
private static X9IntegerConverter converter
           
private  DerivationFunction kdf
           
private  ECPrivateKeyParameters privKey
           
private  java.math.BigInteger result
           
 
Constructor Summary
protected JCEECDHKeyAgreement(BasicAgreement agreement)
           
protected JCEECDHKeyAgreement(BasicAgreement agreement, DerivationFunction kdf)
           
 
Method Summary
private  byte[] bigIntToBytes(java.math.BigInteger r)
           
protected  java.security.Key engineDoPhase(java.security.Key key, boolean lastPhase)
           
protected  byte[] engineGenerateSecret()
           
protected  int engineGenerateSecret(byte[] sharedSecret, int offset)
           
protected  javax.crypto.SecretKey engineGenerateSecret(java.lang.String algorithm)
           
protected  void engineInit(java.security.Key key, java.security.spec.AlgorithmParameterSpec params, java.security.SecureRandom random)
           
protected  void engineInit(java.security.Key key, java.security.SecureRandom random)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

converter

private static final X9IntegerConverter converter

algorithms

private static final java.util.Hashtable algorithms

result

private java.math.BigInteger result

privKey

private ECPrivateKeyParameters privKey

agreement

private BasicAgreement agreement

kdf

private DerivationFunction kdf
Constructor Detail

JCEECDHKeyAgreement

protected JCEECDHKeyAgreement(BasicAgreement agreement)

JCEECDHKeyAgreement

protected JCEECDHKeyAgreement(BasicAgreement agreement,
                              DerivationFunction kdf)
Method Detail

bigIntToBytes

private byte[] bigIntToBytes(java.math.BigInteger r)

engineDoPhase

protected java.security.Key engineDoPhase(java.security.Key key,
                                          boolean lastPhase)
                                   throws java.security.InvalidKeyException,
                                          java.lang.IllegalStateException
Specified by:
engineDoPhase in class javax.crypto.KeyAgreementSpi
Throws:
java.security.InvalidKeyException
java.lang.IllegalStateException

engineGenerateSecret

protected byte[] engineGenerateSecret()
                               throws java.lang.IllegalStateException
Specified by:
engineGenerateSecret in class javax.crypto.KeyAgreementSpi
Throws:
java.lang.IllegalStateException

engineGenerateSecret

protected int engineGenerateSecret(byte[] sharedSecret,
                                   int offset)
                            throws java.lang.IllegalStateException,
                                   javax.crypto.ShortBufferException
Specified by:
engineGenerateSecret in class javax.crypto.KeyAgreementSpi
Throws:
java.lang.IllegalStateException
javax.crypto.ShortBufferException

engineGenerateSecret

protected javax.crypto.SecretKey engineGenerateSecret(java.lang.String algorithm)
                                               throws java.security.NoSuchAlgorithmException
Specified by:
engineGenerateSecret in class javax.crypto.KeyAgreementSpi
Throws:
java.security.NoSuchAlgorithmException

engineInit

protected void engineInit(java.security.Key key,
                          java.security.spec.AlgorithmParameterSpec params,
                          java.security.SecureRandom random)
                   throws java.security.InvalidKeyException,
                          java.security.InvalidAlgorithmParameterException
Specified by:
engineInit in class javax.crypto.KeyAgreementSpi
Throws:
java.security.InvalidKeyException
java.security.InvalidAlgorithmParameterException

engineInit

protected void engineInit(java.security.Key key,
                          java.security.SecureRandom random)
                   throws java.security.InvalidKeyException
Specified by:
engineInit in class javax.crypto.KeyAgreementSpi
Throws:
java.security.InvalidKeyException