public ByteBuffer getByteBuffer() { final WorkerThread workerThread = (WorkerThread) Thread.currentThread(); if (workerThread.getSSLEngine() != null) { return workerThread.getInputBB(); } return null; } });
public SSLEngine getSSLEngine() { return workerThread().getSSLEngine(); }
public SSLEngine getSSLEngine() { return workerThread().getSSLEngine(); }
@Override public void preProcess(InputStream input, OutputStream output) throws Exception { super.preProcess(input, output); ((SecureOutputBuffer) outputBuffer).setSSLEngine(((WorkerThread) Thread.currentThread()).getSSLEngine()); }
/** * Read and decrypt bytes from the underlying SSL connections. All * the SSLEngine operations are delegated to class {@link SSLUtils}. * @return number of bytes read * @throws java.io.IOException */ protected int doSecureRead() throws IOException{ final WorkerThread workerThread = (WorkerThread)Thread.currentThread(); int bytesRead = SSLUtils.doSecureRead((SocketChannel) key.channel(), workerThread.getSSLEngine(), byteBuffer, workerThread.getInputBB()); byteBuffer.flip(); return bytesRead; }
/** * Read and decrypt bytes from the underlying SSL connections. All * the SSLEngine operations are delegated to class {@link SSLUtils}. * @return number of bytes read * @throws java.io.IOException */ protected int doSecureRead() throws IOException{ final WorkerThread workerThread = (WorkerThread)Thread.currentThread(); int bytesRead = SSLUtils.doSecureRead((SocketChannel) key.channel(), workerThread.getSSLEngine(), byteBuffer, workerThread.getInputBB()); byteBuffer.flip(); return bytesRead; }
/** * Encrypt the response and flush it using {@link OutputWriter} * @param channel {@link SelectableChannel} to flush * @param bb {@link ByteBuffer} * @return number of bytes written * @throws java.io.IOException */ public static long flushChannel(SelectableChannel channel, ByteBuffer bb) throws IOException{ WorkerThread workerThread = (WorkerThread)Thread.currentThread(); SSLEngine sslEngine = workerThread.getSSLEngine(); ByteBuffer outputBB = workerThread.getOutputBB(); return flushChannel(channel,bb,outputBB,sslEngine); }
/** * Encrypt the response and flush it using {@link OutputWriter} * @param channel {@link SelectableChannel} to flush * @param bb {@link ByteBuffer} * @return number of bytes written * @throws java.io.IOException */ public static long flushChannel(SelectableChannel channel, ByteBuffer bb) throws IOException{ WorkerThread workerThread = (WorkerThread)Thread.currentThread(); SSLEngine sslEngine = workerThread.getSSLEngine(); ByteBuffer outputBB = workerThread.getOutputBB(); return flushChannel(channel,bb,outputBB,sslEngine); }
/** * Configure and return an instance of SSLEngine * @param key a {@link SelectionKey} * @return a configured instance of{@link SSLEngine} */ protected SSLEngine newSSLEngine(SelectionKey key){ SSLEngine sslEngine = null; if (key.attachment() instanceof ThreadAttachment) { sslEngine = ((WorkerThread) Thread.currentThread()).getSSLEngine(); } if (sslEngine == null) { sslEngine = newSSLEngine(); } sslEngine.setWantClientAuth(wantClientAuth); sslEngine.setNeedClientAuth(needClientAuth); return sslEngine; }
/** * Returns <code>ByteBuffer</code>, where PUReadFilter will read data * * @return <code>ByteBuffer</code> */ @Override public ByteBuffer getByteBuffer() { final WorkerThread workerThread = (WorkerThread) Thread.currentThread(); final SSLEngine sslEngine = workerThread.getSSLEngine(); if (sslEngine != null) { ByteBuffer secureInputBuffer = workerThread.getInputBB(); if (secureInputBuffer == null) { final int securedBBSize = sslEngine.getSession().getPacketBufferSize(); secureInputBuffer = ByteBuffer.allocate(securedBBSize * 2); workerThread.setInputBB(secureInputBuffer); } return secureInputBuffer; } return null; } }
/** * Encrypt the response and flush it using {@link OutputWriter} * @param channel {@link SelectableChannel} to flush * @param bb {@link ByteBuffer} * @return number of bytes written * @throws java.io.IOException */ public static long flushChannel(SelectableChannel channel, ByteBuffer bb) throws IOException{ WorkerThread workerThread = (WorkerThread)Thread.currentThread(); SSLEngine sslEngine = workerThread.getSSLEngine(); ByteBuffer outputBB = workerThread.getOutputBB(); return flushChannel(channel,bb,outputBB,sslEngine); }
/** * {@inheritDoc} */ @Override protected void configureProcessorTask(ProcessorTask processorTask, Context context, StreamAlgorithm streamAlgorithm) { super.configureProcessorTask(processorTask, context, streamAlgorithm); SSLSupport sslSupport = sslImplementation. getSSLSupport(((WorkerThread)Thread.currentThread()).getSSLEngine()); processorTask.setSSLSupport(sslSupport); }
ByteBuffer inputBB = workerThread.getInputBB(); int expectedSize = workerThread.getSSLEngine().getSession() .getPacketBufferSize(); if (defaultBufferSize < expectedSize){ expectedSize = workerThread.getSSLEngine().getSession() .getApplicationBufferSize(); if ( expectedSize > byteBuffer.capacity() ) {
buffer.position(position); try { SSLEngine sslEngine = workerThread.getSSLEngine(); AttributeHolder attributes = ctx.getAttributeHolderByScope(AttributeScope.CONNECTION);
/** * {@inheritDoc} */ @Override protected void configureProcessorTask(ProcessorTask processorTask, Context context, StreamAlgorithm streamAlgorithm, InputStream inputStream) { super.configureProcessorTask(processorTask, context, streamAlgorithm, inputStream); WorkerThread workerThread = (WorkerThread) Thread.currentThread(); SSLSupport sslSupport = sslImplementation. getSSLSupport(workerThread.getSSLEngine()); processorTask.setSSLSupport(sslSupport); // SSLAsyncProcessorTask should be initialized if (!processorTask.isInitialized()) { processorTask.initialize(); } SSLAsyncProcessorTask asyncProcessorTask = (SSLAsyncProcessorTask) processorTask; SSLAsyncOutputBuffer outputBuffer = asyncProcessorTask.getSSLAsyncOutputBuffer(); final SSLEngine engine = workerThread.getSSLEngine(); swapEncryptOutBuffer(workerThread, outputBuffer, engine); }
/** * Get the peer certificate list by initiating a new handshake. * @param key {@link SelectionKey} * @param needClientAuth * @return Object[] An array of X509Certificate. * @throws java.io.IOException */ public static Object[] doPeerCertificateChain(SelectionKey key, boolean needClientAuth) throws IOException { final WorkerThread workerThread = (WorkerThread)Thread.currentThread(); ByteBuffer byteBuffer = workerThread.getByteBuffer(); ByteBuffer inputBB = workerThread.getInputBB(); ByteBuffer outputBB = workerThread.getOutputBB(); SSLEngine sslEngine = workerThread.getSSLEngine(); return SSLUtils.doPeerCertificateChain((SocketChannel) key.channel(), byteBuffer, inputBB, outputBB, sslEngine, needClientAuth, InputReader.getDefaultReadTimeout()); }
ByteBuffer outputBB = workerThread.getOutputBB(); ByteBuffer inputBB = workerThread.getInputBB(); SSLEngine sslEngine = workerThread.getSSLEngine();
ByteBuffer outputBB = workerThread.getOutputBB(); ByteBuffer inputBB = workerThread.getInputBB(); SSLEngine sslEngine = workerThread.getSSLEngine();
public boolean execute(Context ctx) throws IOException { final WorkerThread thread = (WorkerThread) Thread.currentThread(); final SSLEngine sslEngine = thread.getSSLEngine();
SSLEngine sslEngine = workerThread.getSSLEngine(); if (sslEngine == null) { sslEngine = newSSLEngine(key);