List of usage examples for org.bouncycastle.crypto.params DHPublicKeyParameters DHPublicKeyParameters
public DHPublicKeyParameters(BigInteger y, DHParameters params)
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; }