@Override protected PskClientKeyExchangeMessage createHandshakeMessage() { return new PskClientKeyExchangeMessage(); }
@Override public void prepareHandshakeMessageContents() { msg.setIdentity(chooser.getPSKIdentity()); msg.setIdentityLength(msg.getIdentity().getValue().length); msg.prepareComputations(); premasterSecret = generatePremasterSecret(); preparePremasterSecret(msg); prepareClientServerRandom(msg); }
/** * Reads the next bytes as the PSKIdentity and writes them in the message * * @param msg * Message to write in */ private void parsePskIdentity(PskClientKeyExchangeMessage msg) { msg.setIdentity(parseByteArrayField(msg.getIdentityLength().getValue())); LOGGER.debug("PskIdentity: " + ArrayConverter.bytesToHexString(msg.getIdentity().getValue())); } }
/** * Reads the next bytes as the PSKIdentityLength and writes them in the * message * * @param msg * Message to write in */ private void parsePskIdentityLength(PskClientKeyExchangeMessage msg) { msg.setIdentityLength(parseIntField(HandshakeByteLength.PSK_IDENTITY_LENGTH)); LOGGER.debug("PskIdentityLength: " + msg.getIdentityLength().getValue()); }
private void preparePremasterSecret(PskClientKeyExchangeMessage msg) { msg.getComputations().setPremasterSecret(premasterSecret); LOGGER.debug("PremasterSecret: " + ArrayConverter.bytesToHexString(msg.getComputations().getPremasterSecret().getValue())); }
/** * Writes the PskIdentityLength of the PskClientKeyExchangeMessage into the * final byte[] */ private void writePskIdentityLength(PskClientKeyExchangeMessage msg) { appendInt(msg.getIdentityLength().getValue(), HandshakeByteLength.PSK_IDENTITY_LENGTH); LOGGER.debug("PskIdentityLength: " + msg.getIdentityLength().getValue()); }
/** * Writes the pskIdentity of the PskClientKeyExchangeMessage into the final * byte[] */ private void writePskIdentity(PskClientKeyExchangeMessage msg) { appendBytes(msg.getIdentity().getValue()); LOGGER.debug("PskIdentity: " + ArrayConverter.bytesToHexString(msg.getIdentity().getValue())); } }
@Override public void prepareAfterParse(boolean clientMode) { if (!clientMode) { msg.prepareComputations(); premasterSecret = generatePremasterSecret(); preparePremasterSecret(msg); prepareClientServerRandom(msg); } } }
private void prepareClientServerRandom(PskClientKeyExchangeMessage msg) { clientRandom = ArrayConverter.concatenate(chooser.getClientRandom(), chooser.getServerRandom()); msg.getComputations().setClientServerRandom(clientRandom); LOGGER.debug("ClientServerRandom: " + ArrayConverter.bytesToHexString(msg.getComputations().getClientServerRandom().getValue())); }
return new DHClientKeyExchangeMessage(config); case PSK: return new PskClientKeyExchangeMessage(config); case DHE_PSK: return new PskDhClientKeyExchangeMessage(config);