@Override protected ClientHelloMessage createHandshakeMessage() { return new ClientHelloMessage(); }
private State executeClientHelloWorkflow(Config tlsConfig) { WorkflowTrace trace = new WorkflowTrace(); trace.addTlsAction(new ReceiveAction(new ClientHelloMessage())); State state = new State(tlsConfig, trace); WorkflowExecutor workflowExecutor = WorkflowExecutorFactory.createWorkflowExecutor( WorkflowExecutorType.DEFAULT, state); workflowExecutor.executeWorkflow(); return state; }
public static Certificate fetchServerCertificate(Config config) { WorkflowTrace trace = new WorkflowTrace(); trace.addTlsAction(new SendAction(new ClientHelloMessage(config))); trace.addTlsAction(new ReceiveTillAction(new CertificateMessage(config))); State state = new State(config, trace); WorkflowExecutor workflowExecutor = WorkflowExecutorFactory.createWorkflowExecutor( WorkflowExecutorType.DEFAULT, state); try { workflowExecutor.executeWorkflow(); if (!state.getTlsContext().getTransportHandler().isClosed()) { state.getTlsContext().getTransportHandler().closeConnection(); } } catch (IOException | WorkflowExecutionException E) { LOGGER.warn("Could not fetch ServerCertificate"); LOGGER.debug(E); } return state.getTlsContext().getServerCertificate(); }
clientHello = new ClientHelloMessage(config); earlyDataMsg = new ApplicationMessage(config); earlyDataMsg.setDataConfig(config.getEarlyData()); } else { clientHello = new ClientHelloMessage(); earlyDataMsg = new ApplicationMessage();
public boolean speaksTls(Config config) { config.setHttpsParsingEnabled(Boolean.TRUE); WorkflowTrace trace = new WorkflowTrace(); trace.addTlsAction(new SendAction(new ClientHelloMessage(config))); ReceiveTillAction receiveTillAction = new ReceiveTillAction(new ServerHelloDoneMessage()); trace.addTlsAction(receiveTillAction); State state = new State(config, trace); WorkflowExecutor executor = WorkflowExecutorFactory.createWorkflowExecutor(WorkflowExecutorType.DEFAULT, state); executor.executeWorkflow(); if (receiveTillAction.getRecords().size() > 0) { if (receiveTillAction.getRecords().get(0) instanceof Record) { return true; } else { for (ProtocolMessage message : receiveTillAction.getReceivedMessages()) { if (message instanceof ServerHelloMessage || message instanceof ServerHelloDoneMessage || message instanceof SSL2ServerHelloMessage) { return true; } } return false; } } else { return false; } } }
if (config.getHighestProtocolVersion() == ProtocolVersion.DTLS10 || config.getHighestProtocolVersion() == ProtocolVersion.DTLS12) { clientHello = new ClientHelloMessage(config); clientHello.setIncludeInDigest(false); } else { clientHello = new ClientHelloMessage(config); workflowTrace.addTlsAction(MessageActionFactory .createAction(connection, ConnectionEndType.SERVER, messages)); clientHello = new ClientHelloMessage(config); messages = new LinkedList<>(); messages.add(clientHello);
WorkflowTrace workflowTrace = new WorkflowTrace(); workflowTrace.addTlsAction(new SendAction(new ClientHelloMessage(tlsConfig)));
private WorkflowTrace createShortHelloWorkflow() { AliasedConnection connection = getConnection(); WorkflowTrace trace = new WorkflowTrace(); if (config.getStarttlsType() != StarttlsType.NONE) { addStartTlsActions(connection, config.getStarttlsType(), trace); } trace.addTlsAction(MessageActionFactory.createAction(connection, ConnectionEndType.CLIENT, new ClientHelloMessage(config))); trace.addTlsAction(MessageActionFactory.createAction(connection, ConnectionEndType.SERVER, new ServerHelloMessage(config))); return trace; }
/** * * @param config * @return */ @Override public List<WorkflowTrace> getPaddingOracleVectors(Config config) { List<WorkflowTrace> traceList = new LinkedList<>(); for (Record record : recordGenerator.getRecords(config.getDefaultSelectedCipherSuite(), config.getDefaultSelectedProtocolVersion())) { WorkflowTrace trace = new WorkflowTrace(); trace.addTlsAction(new SendAction(new ClientHelloMessage(config))); trace.addTlsAction(new ReceiveTillAction(new ServerHelloDoneMessage())); trace.addTlsAction(new SendDynamicClientKeyExchangeAction()); trace.addTlsAction(new SendAction(new ChangeCipherSpecMessage(), new FinishedMessage())); trace.addTlsAction(new ReceiveAction(new ChangeCipherSpecMessage(), new FinishedMessage())); ApplicationMessage applicationMessage = new ApplicationMessage(config); SendAction sendAction = new SendAction(applicationMessage); sendAction.setRecords(new LinkedList<AbstractRecord>()); sendAction.getRecords().add(record); trace.addTlsAction(sendAction); trace.addTlsAction(new GenericReceiveAction()); traceList.add(trace); } return traceList; } }
private WorkflowTrace createResumptionWorkflow() { AliasedConnection connection = getConnection(); WorkflowTrace trace = new WorkflowTrace(); MessageAction action = MessageActionFactory.createAction(connection, ConnectionEndType.CLIENT, new ClientHelloMessage(config)); trace.addTlsAction(action); action = MessageActionFactory.createAction(connection, ConnectionEndType.SERVER, new ServerHelloMessage(config), new ChangeCipherSpecMessage(config), new FinishedMessage(config)); trace.addTlsAction(action); action = MessageActionFactory.createAction(connection, ConnectionEndType.CLIENT, new ChangeCipherSpecMessage( config), new FinishedMessage(config)); trace.addTlsAction(action); return trace; }