Example usage for org.bouncycastle.crypto.params DHPublicKeyParameters DHPublicKeyParameters

List of usage examples for org.bouncycastle.crypto.params DHPublicKeyParameters DHPublicKeyParameters

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.params DHPublicKeyParameters DHPublicKeyParameters.

Prototype

public DHPublicKeyParameters(BigInteger y, DHParameters params) 

Source Link

Usage

From source file:com.licel.jcardsim.crypto.DHPublicKeyImpl.java

License:Apache License

@Override
public CipherParameters getParameters() {
    if (!isInitialized()) {
        CryptoException.throwIt(CryptoException.UNINITIALIZED_KEY);
    }//  w  w  w.  j av  a 2 s.  c o  m
    return new DHPublicKeyParameters(y.getBigInteger(), (DHParameters) super.getParameters());
}

From source file:de.rub.nds.tlsattacker.tls.protocol.handshake.DHClientKeyExchangeHandler.java

License:Apache License

@Override
public int parseKeyExchangeMessage(byte[] message, int currentPointer) {
    int nextPointer = currentPointer + HandshakeByteLength.DH_PARAM_LENGTH;
    int length = ArrayConverter.bytesToInt(Arrays.copyOfRange(message, currentPointer, nextPointer));
    protocolMessage.setSerializedPublicKeyLength(length);
    currentPointer = nextPointer;/*from   w ww . j  av  a2  s. c  om*/

    nextPointer = currentPointer + length;
    protocolMessage.setSerializedPublicKey(Arrays.copyOfRange(message, currentPointer, nextPointer));
    BigInteger publicKey = new BigInteger(1, Arrays.copyOfRange(message, currentPointer, nextPointer));
    protocolMessage.setY(publicKey);

    DHPublicKeyParameters clientPubParameters = new DHPublicKeyParameters(protocolMessage.getY().getValue(),
            tlsContext.getServerDHParameters().getPublicKey().getParameters());

    byte[] premasterSecret = TlsDHUtils.calculateDHBasicAgreement(clientPubParameters,
            tlsContext.getServerDHPrivateKeyParameters());
    protocolMessage.setPremasterSecret(premasterSecret);

    LOGGER.debug("Resulting premaster secret: {}", ArrayConverter.bytesToHexString(premasterSecret));

    protocolMessage.setPremasterSecret(premasterSecret);

    byte[] random = tlsContext.getClientServerRandom();

    PRFAlgorithm prfAlgorithm = AlgorithmResolver.getPRFAlgorithm(tlsContext.getProtocolVersion(),
            tlsContext.getSelectedCipherSuite());
    byte[] masterSecret = PseudoRandomFunction.compute(prfAlgorithm,
            protocolMessage.getPremasterSecret().getValue(), PseudoRandomFunction.MASTER_SECRET_LABEL, random,
            HandshakeByteLength.MASTER_SECRET);
    protocolMessage.setMasterSecret(masterSecret);
    LOGGER.debug("Computed Master Secret: {}", ArrayConverter.bytesToHexString(masterSecret));

    tlsContext.setMasterSecret(protocolMessage.getMasterSecret().getValue());

    currentPointer = nextPointer;

    return currentPointer;
}