/* * Copyright 2017 LinkedIn Corp. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ package com.github.ambry.rest; import java.nio.ByteBuffer; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngineResult; import javax.net.ssl.SSLException; import javax.net.ssl.SSLParameters; import javax.net.ssl.SSLSession; /** * A mock of {@link SSLEngine} that either delegates to a passed in {@link SSLEngine}, or returns the provided * objects. */ class MockSSLEngine extends SSLEngine { private final SSLEngine delegateEngine; private final SSLSession sessionToReturn; /** * @param delegateEngine An {@link SSLEngine} to delegate to in most cases. * @param sessionToReturn If not {@code null}, return this certificate in {@link #getSession()} instead of delegating. */ MockSSLEngine(SSLEngine delegateEngine, SSLSession sessionToReturn) { this.delegateEngine = delegateEngine; this.sessionToReturn = sessionToReturn; } @Override public String getPeerHost() { return delegateEngine.getPeerHost(); } @Override public int getPeerPort() { return delegateEngine.getPeerPort(); } @Override public SSLEngineResult wrap(ByteBuffer byteBuffer, ByteBuffer byteBuffer1) throws SSLException { return delegateEngine.wrap(byteBuffer, byteBuffer1); } @Override public SSLEngineResult wrap(ByteBuffer[] byteBuffers, ByteBuffer byteBuffer) throws SSLException { return delegateEngine.wrap(byteBuffers, byteBuffer); } @Override public SSLEngineResult wrap(ByteBuffer[] byteBuffers, int i, int i1, ByteBuffer byteBuffer) throws SSLException { return delegateEngine.wrap(byteBuffers, i, i1, byteBuffer); } @Override public SSLEngineResult unwrap(ByteBuffer byteBuffer, ByteBuffer byteBuffer1) throws SSLException { return delegateEngine.unwrap(byteBuffer, byteBuffer1); } @Override public SSLEngineResult unwrap(ByteBuffer byteBuffer, ByteBuffer[] byteBuffers) throws SSLException { return delegateEngine.unwrap(byteBuffer, byteBuffers); } @Override public SSLEngineResult unwrap(ByteBuffer byteBuffer, ByteBuffer[] byteBuffers, int i, int i1) throws SSLException { return delegateEngine.unwrap(byteBuffer, byteBuffers, i, i1); } @Override public Runnable getDelegatedTask() { return delegateEngine.getDelegatedTask(); } @Override public void closeInbound() throws SSLException { delegateEngine.closeInbound(); } @Override public boolean isInboundDone() { return delegateEngine.isInboundDone(); } @Override public void closeOutbound() { delegateEngine.closeOutbound(); } @Override public boolean isOutboundDone() { return delegateEngine.isOutboundDone(); } @Override public String[] getSupportedCipherSuites() { return delegateEngine.getSupportedCipherSuites(); } @Override public String[] getEnabledCipherSuites() { return delegateEngine.getEnabledCipherSuites(); } @Override public void setEnabledCipherSuites(String[] strings) { delegateEngine.setEnabledCipherSuites(strings); } @Override public String[] getSupportedProtocols() { return delegateEngine.getSupportedProtocols(); } @Override public String[] getEnabledProtocols() { return delegateEngine.getEnabledProtocols(); } @Override public void setEnabledProtocols(String[] strings) { delegateEngine.setEnabledProtocols(strings); } @Override public SSLSession getSession() { return sessionToReturn != null ? sessionToReturn : delegateEngine.getSession(); } @Override public SSLSession getHandshakeSession() { return delegateEngine.getHandshakeSession(); } @Override public void beginHandshake() throws SSLException { delegateEngine.beginHandshake(); } @Override public SSLEngineResult.HandshakeStatus getHandshakeStatus() { return delegateEngine.getHandshakeStatus(); } @Override public void setUseClientMode(boolean b) { delegateEngine.setUseClientMode(b); } @Override public boolean getUseClientMode() { return delegateEngine.getUseClientMode(); } @Override public void setNeedClientAuth(boolean b) { delegateEngine.setNeedClientAuth(b); } @Override public boolean getNeedClientAuth() { return delegateEngine.getNeedClientAuth(); } @Override public void setWantClientAuth(boolean b) { delegateEngine.setWantClientAuth(b); } @Override public boolean getWantClientAuth() { return delegateEngine.getWantClientAuth(); } @Override public void setEnableSessionCreation(boolean b) { delegateEngine.setEnableSessionCreation(b); } @Override public boolean getEnableSessionCreation() { return delegateEngine.getEnableSessionCreation(); } @Override public SSLParameters getSSLParameters() { return delegateEngine.getSSLParameters(); } @Override public void setSSLParameters(SSLParameters sslParameters) { delegateEngine.setSSLParameters(sslParameters); } }