/** * Return the highest protocol version. * * @param list * The List of protocolVersions to search in * @return The highest ProtocolVersion */ public static ProtocolVersion getHighestProtocolVersion(List<ProtocolVersion> list) { ProtocolVersion highestProtocolVersion = null; for (ProtocolVersion pv : list) { if (highestProtocolVersion == null) { highestProtocolVersion = pv; } if (pv != null && ArrayConverter.bytesToInt(pv.getValue()) > ArrayConverter.bytesToInt(highestProtocolVersion .getValue())) { highestProtocolVersion = pv; } } return highestProtocolVersion; }
private byte[] createProtocolVersionArray() { ByteArrayOutputStream stream = new ByteArrayOutputStream(); for (ProtocolVersion version : chooser.getConfig().getSupportedVersions()) { try { stream.write(version.getValue()); } catch (IOException ex) { throw new PreparationException("Could not write ProtocolVersion to byte[]", ex); } } return stream.toByteArray(); } }
private void prepareProtocolVersion() { ProtocolVersion ourVersion = chooser.getConfig().getHighestProtocolVersion(); if (chooser.getConfig().isEnforceSettings()) { msg.setProtocolVersion(ourVersion.getValue()); } else { msg.setProtocolVersion(ProtocolVersion.TLS13.getValue()); } LOGGER.debug("ProtocolVersion: " + ArrayConverter.bytesToHexString(msg.getProtocolVersion().getValue())); }
private void prepareProtocolVersion() { ProtocolVersion ourVersion = chooser.getConfig().getHighestProtocolVersion(); ProtocolVersion clientVersion = chooser.getHighestClientProtocolVersion(); int intRepresentationOurVersion = ourVersion.getValue()[0] * 0x100 + ourVersion.getValue()[1]; int intRepresentationClientVersion = clientVersion.getValue()[0] * 0x100 + clientVersion.getValue()[1]; if (chooser.getConfig().isEnforceSettings()) { msg.setProtocolVersion(ourVersion.getValue()); } else { if (chooser.getHighestClientProtocolVersion().isDTLS() msg.setProtocolVersion(ourVersion.getValue()); } else { msg.setProtocolVersion(clientVersion.getValue()); msg.setProtocolVersion(ourVersion.getValue()); } else { msg.setProtocolVersion(clientVersion.getValue()); msg.setProtocolVersion(chooser.getSelectedProtocolVersion().getValue());
private void prepareProtocolVersion(ClientHelloMessage msg) { if (chooser.getConfig().getHighestProtocolVersion().isTLS13()) { msg.setProtocolVersion(ProtocolVersion.TLS12.getValue()); } else { msg.setProtocolVersion(chooser.getConfig().getHighestProtocolVersion().getValue()); } LOGGER.debug("ProtocolVersion: " + ArrayConverter.bytesToHexString(msg.getProtocolVersion().getValue())); }
private void prepareProtocolVersion(Record record) { if (chooser.getSelectedProtocolVersion().isTLS13() || chooser.getContext().getActiveKeySetTypeWrite() == Tls13KeySetType.EARLY_TRAFFIC_SECRETS) { record.setProtocolVersion(ProtocolVersion.TLS12.getValue()); } else { record.setProtocolVersion(chooser.getSelectedProtocolVersion().getValue()); } LOGGER.debug("ProtocolVersion: " + ArrayConverter.bytesToHexString(record.getProtocolVersion().getValue())); }
private void prepareProtocolVersion(SSL2ClientHelloMessage message) { message.setProtocolVersion(chooser.getConfig().getHighestProtocolVersion().getValue()); LOGGER.debug("ProtocolVersion: " + ArrayConverter.bytesToHexString(message.getProtocolVersion().getValue())); }
private void prepareProtocolVersion(HelloVerifyRequestMessage msg) { msg.setProtocolVersion(chooser.getConfig().getHighestProtocolVersion().getValue()); LOGGER.debug("ProtocolVersion: " + ArrayConverter.bytesToHexString(msg.getProtocolVersion().getValue())); }
/** * Generates the StatePlaintext for the SessionTicket, mayby put this as * static function in the StatePlaintext class for better testing/debugging * * @return A struct with Stateinformation defined in * https://tools.ietf.org/html/rfc5077#section-4 */ private StatePlaintext generateStatePlaintext() { StatePlaintext plainstate = new StatePlaintext(); plainstate.setCipherSuite(chooser.getSelectedCipherSuite().getValue()); plainstate.setCompressionMethod(chooser.getSelectedCompressionMethod().getValue()); plainstate.setMasterSecret(chooser.getMasterSecret()); plainstate.setProtocolVersion(chooser.getSelectedProtocolVersion().getValue()); long timestamp = TimeHelper.getTime() / 1000; plainstate.setTimestamp(timestamp); switch (chooser.getConfig().getClientAuthenticationType()) { case ANONYMOUS: plainstate.setClientAuthenticationType(ClientAuthenticationType.ANONYMOUS.getValue()); plainstate.setClientAuthenticationData(new byte[0]); plainstate.setClientAuthenticationDataLength(0); break; case CERTIFICATE_BASED: throw new UnsupportedOperationException("Certificate based ClientAuthentication is not supported"); case PSK: throw new UnsupportedOperationException("PSK ClientAuthentication is not supported"); default: throw new UnsupportedOperationException("Unknown ClientAuthenticationType"); } return plainstate; }