JavaTM Platform
Standard Ed. 6

javax.net.ssl
클래스 SSLEngine

java.lang.Object 
  상위를 확장 javax.net.ssl.SSLEngine


public abstract class SSLEngine
extends Object

Secure Sockets Layer (SSL)나 IETF RFC 2246 의 Transport Layer Security (TLS) 프로토콜을 사용해, 전송에 의존하는 일 없이 시큐어 통신을 유효하게 하는 클래스입니다.  

시큐어 통신 모드에서는, 다음의 시큐리티 보호가 실시됩니다.

이러한 시큐리티 보호는, 「암호화 방식군」을 사용해 지정합니다. 암호화 방식군은, 지정된 SSL 접속으로 사용되는 암호화 알고리즘의 편성입니다. 협상을 실시하려면 , 2 개의 끝이 같은 암호화 방식군을 선택해, 그 암호화 방식군이 양쪽 모두의 환경에서 사용 가능하지 않으면 안됩니다. 공통의 암호화 방식군이 없는 경우는, SSL 접속을 확립하지 못하고, 데이터를 교환할 수 없습니다.  

사용되는 암호화 방식군은, 「핸드 쉐이크」라고 불리는 협상 프로세스에 의해 확립됩니다. 핸드 쉐이크에서는, 세션의 작성 또는 참가를 합니다. 작성 또는 참가한 세션은, 무효가 될 때까지 다양한 접속을 보호합니다. 핸드 쉐이크가 완료하면(자),getSession() 메소드를 사용해 세션 속성에 액세스 할 수 있습니다.  

SSLSocket 클래스도 거의 같은 시큐리티 기능을 제공합니다만, 모든 착신 및 발신 데이터는, 의도적으로 블록 모델을 사용하는 부하 Socket 에 의해 자동적으로 송신됩니다. 이 처리는 많은 어플리케이션에 대해서 적절합니다만, 이 모델은 대규모 서버에 필요한 확장성을 가져오지 않습니다.  

SSLEngine 의 주된 특장으로서 전송 기구에 의존하는 일 없이 착신/송신 바이트 스트림을 조작할 수 있는 점을 들 수 있습니다. SSLEngine 사용자는, 피어에 있어서의 입출력 전송의 신뢰성을 확보할 필요가 있습니다. SSL/TLS 추상화 객체를 입출력 전송 기구로부터 떼어내는 것으로,SSLEngine 를 다양한 입출력으로 광범위하게 이용할 수가 있습니다. 예를 들어,비블록 입출력 (폴링) ,선택형비블록 입출력 외,Socket 및 종래의 Input/OutputStream, 로컬 ByteBuffers , 바이트 배열,future asynchronous 입출력 모델등의 입출력으로 이용 가능합니다.  

상층부에서는,SSLEngine 는 다음과 같이 나타내집니다.

                   app data

                |           ^
                |     |     |
                v     |     |
           +----+-----|-----+----+
           |          |          |
           |       SSL|Engine    |
   wrap()  |          |          |  unwrap()
           | OUTBOUND | INBOUND  |
           |          |          |
           +----+-----|-----+----+
                |     |     ^
                |     |     |
                v           |

                   net data
 
어플리케이션 데이터 (별명 「plaintext」또는 「clear text」)는, 어플리케이션에 의해 생성 또는 소비되는 데이터입니다. 어플리케이션 데이터와 대가 되는 것으로서 네트워크 데이터가 있습니다. 네트워크 데이터는, 핸드 쉐이크나 암호화 데이터로 구성되어 입출력 기구를 개입시켜 전송 되는 데이터입니다. 착신 데이터는 피어로부터 수신되는 데이터, 송신 데이터는 피어에 송신되는 데이터입니다.  

SSLEngine 의 문맥에서는, 시큐어 접속의 확립 및 제어 목적으로 교환되는 데이터를 「핸드 쉐이크 데이터」라고 총칭합니다. 핸드 쉐이크 데이터에는, SSL/TLS 메세지 alert, change_cipher_spec, handshake 등이 있습니다.  

SSLEngine 는, 다음의 5 개의 단계를 더듬습니다.

  1. 작성 - SSLEngine 의 작성과 초기화는 완료했습니다만, 아직 사용되고는 있지 않습니다. 이 단계에서는, 어플리케이션에 의해,SSLEngine 고유의 모든 설정 (암호화 방식군의 유효화,SSLEngine 가 클라이언트 모드와 서버 모드의 어디에서 핸드 쉐이크를 실시할까 등)을 실시할 수가 있습니다. 핸드 쉐이크가 시작되면(자), 다음의 핸드 쉐이크로부터 클라이언트/서버 모드의 설정을 제외한 (아래와 같이 참조) 새로운 설정이 사용됩니다.
  2. 초기 핸드 쉐이크 - SSLSession 가 확립될 때까지, 2 개의 피어가 통신 파라미터를 교환하는 수속입니다. 이 단계에서는, 어플리케이션 데이터는 송신할 수 없습니다.
  3. 어플리케이션 데이터 - 통신 파라미터가 확립되어 핸드 쉐이크가 완료하면(자),SSLEngine 로부터 어플리케이션 데이터가 송신됩니다. 송신 어플리케이션 메세지는 암호화되어 데이터의 무결성이 확보됩니다. 착신 메세지에서는, 이 반대의 수속을 합니다.
  4. 재핸드 쉐이크 - 「어플리케이션 데이터」단계에서는, 어느 쪽측의 피어로부터에서도, 필요에 따라서 세션의 재협상을 요구할 수 있습니다. 어플리케이션 데이터에 새로운 핸드 쉐이크 데이터를 혼합할 수가 있습니다. 재핸드 쉐이크를 개시하기 전에, 어플리케이션은, SSL/TLS 통신 파라미터 (예: 유효한 암호화 방식군의 리스트)나, 클라이언트 인증을 사용할지 어떨지의 설정을 리셋 할 수 있습니다. 그러나, 클라이언트 모드와 서버 모드를 바꿀 수 없습니다. 전회와 같게, 핸드 쉐이크가 시작되고 나서 다음의 핸드 쉐이크까지, 새로운 SSLEngine 설정은 사용되지 않습니다.
  5. 종료 - 접속이 불필요하게 되었을 때, 어플리케이션은,SSLEngine 를 종료해, 피어와 송수신 하는 메세지가 남아 있는 경우는 송수신을 완료하고 나서, 부하의 전송 기구를 종료할 필요가 있습니다. 종료된 엔진은, 재사용할 수 없습니다. 새로운 SSLEngine 를 작성할 필요가 있습니다.
SSLEngine 를 작성하려면 , 초기화된 SSLContext 로부터 SSLContext.createSSLEngine() 를 호출합니다. 모든 설정 파라미터의 설정을 완료하고 나서,wrap(),unwrap(), 또는 beginHandshake() 의 최초의 호출을 실시합니다. 이러한 메소드는 모두, 초기 핸드 쉐이크를 트리거합니다.  

데이터는, 송신 데이터에 대해서 wrap() 를 호출하거나 착신 데이터에 대해서 unwrap() 를 호출하는 것에 의해, 엔진으로부터 전송 됩니다. SSLEngine 상태에 따라서는,wrap() 호출에 의해 소스 버퍼의 어플리케이션 데이터가 사용되어 행선지 버퍼에 네트워크 데이터가 써내지는 경우도 있습니다. 송신 데이터에는, 어플리케이션 데이터나 핸드 쉐이크 데이터가 포함됩니다. unwrap() 를 호출하면(자), 소스 버퍼가 체크되어 그 중의 데이터가 핸드 쉐이크 정보이면 핸드 쉐이크가 실시됩니다. 어플리케이션 데이터이면, 행선지 버퍼에 포함됩니다. 부하의 SSL/TLS 알고리즘 상태로부터, 데이터의 사용이나 생성의 타이밍을 판단할 수 있습니다.  

wrap()unwrap() 를 호출하면(자), 오퍼레이션 상태와 처리를 속행하는 경우의 엔진과의 교환의 내용 (옵션)을 나타내는 SSLEngineResult 가 돌려주어집니다.  

SSLEngine 는, 완전한 SSL/TLS 패킷 밖에 사용 또는 생성하지 않습니다. 다음의 wrap() 또는 unwrap() 의 호출까지의 사이에, 어플리케이션 데이터를 내부에 포함할 것은 없습니다. 따라서, 생성되는 레코드중 제일 사이즈가 큰 것을 포함할 수 있도록(듯이), 입출력 ByteBuffer 의 사이즈를 결정할 필요가 있습니다. 적절한 버퍼 사이즈를 판정하려면 ,SSLSession.getPacketBufferSize()SSLSession.getApplicationBufferSize() 의 호출을 사용합니다. 송신 어플리케이션 데이터 버퍼의 사이즈는, 일반적으로, 고려할 필요는 없습니다. 데이터의 사용 및 생성에 적절한 버퍼 조건이 아닌 경우, 어플리케이션은 SSLEngineResult 에 의해 문제를 특정해, 수정한 뒤, 재차 호출을 시행하지 않으면 안됩니다.  

예를 들어, 유효한 행선지 버퍼의 용량이 불충분하다라고 엔진이 판정했을 경우,unwrap()SSLEngineResult.Status.BUFFER_OVERFLOW 의 결과를 돌려줍니다. 필요에 따라서, 어플리케이션으로 SSLSession.getApplicationBufferSize() 를 호출해, 그 값과 행선지 버퍼내의 유효한 용량을 비교해, 버퍼를 크게 하도록 해 주세요. 같이unwrap()SSLEngineResult.Status.BUFFER_UNDERFLOW 를 돌려주려고 했을 경우는, 어플리케이션으로 SSLSession.getPacketBufferSize() 를 호출해, 레코드를 보관 유지하는데 충분한 용량을 소스 버퍼에 확보해 (또, 필요에 따라서 확장해), 보다 많은 착신 데이터를 취득하도록 해 주세요.

   SSLEngineResult r = engine.unwrap(src, dst);
   switch (r.getStatus()) {
   BUFFER_OVERFLOW:
       // Could attempt to drain the dst buffer of any already obtained
       // data, but we'll just increase it to the size needed.
       int appSize = engine.getSession(). getApplicationBufferSize();
       ByteBuffer b = ByteBuffer.allocate(appSize + dst.position());
       dst.flip();
       b.put(dst);
       dst = b;
       // retry the operation.
       break;
   BUFFER_UNDERFLOW:
       int netSize = engine.getSession(). getPacketBufferSize();
       // Resize buffer if needed.
       if (netSize > dst.capacity()) {
           ByteBuffer b = ByteBuffer.allocate(netSize);
           src.flip();
           b.put(src);
           src = b;
       }
       // Obtain more inbound network data for src,
       // then retry the operation.
       break;
   // other cases: CLOSED, OK.
   }
 

SSLSocket 과는 달리, SSLEngine 의 모든 메소드는 비동기 메소드입니다. SSLEngine 구현을 위해서(때문에) 필요한 태스크는, 완료까지 꽤 시간이 걸리거나 완료전에 블록 될 가능성이 있습니다. 예를 들어, TrustManager 는, 원격 증명서 확인 서비스에의 접속이 요구되는 일이 있습니다. 또, KeyManager 는, 클라이언트 인증의 일환으로서 사용해야 할 증명서를 결정하도록(듯이) 사용자에게 요구하는 일이 있습니다. 게다가 암호화 서명을 작성해, 이것들을 검증하는 경우, 처리 시간이 꽤 길어져, 처리가 블록 된 것처럼 보이는 일이 있습니다.  

SSLEngine 는, 블록 될 가능성이 있는 모든 오퍼레이션에 대해서,Runnable 위양 태스크를 생성합니다. SSLEngineResult 에 의해, 위양 태스크의 결과의 필요성이 나타났을 경우, 어플리케이션은 getDelegatedTask() 를 호출해 미실행의 위양 태스크를 취득해, 그 run() 메소드를 호출할 필요가 있습니다. 호출에 사용되는 thread는, 계산방법에 따라서 다릅니다. 어플리케이션은, 모든 위양 태스크를 취득하면(자), 최초의 오퍼레이션을 재시행합니다.  

어플리케이션은, 통신 세션의 종료시에 SSL/TLS 링크를 정상적으로 종료할 필요가 있습니다. SSL/TLS 프로토콜은 핸드 쉐이크 종료 메세지를 가지고 있어 이러한 메세지는,SSLEngine 가 해제되어 부하의 전송 기구가 종료하기 전에 피어에 송신되게 되어 있습니다. 통신 세션의 종료는, SSLException, 핸드 쉐이크 종료 메세지의 착신, 또는 임의의 종료 메소드에 의해 개시됩니다. 어느 경우에서도, 엔진으로부터 핸드 쉐이크 종료 메세지가 생성되어SSLEngineResult 상태가 CLOSED 가 되는지,isOutboundDone() 의 반환값이 true 가 될 때까지,wrap() 가 반복해 불려 갑니다. wrap() 메소드에 의해 취득된 데이터는 모두 피어에 송신됩니다.  

어플리케이션으로부터 송신되는 데이터가 이제 없는 것을 엔진에 통지하려면 ,closeOutbound() 를 사용합니다.  

피어는, 고유의 핸드 쉐이크 종료 메세지를 송신하는 것으로, 종료의 의도를 통지합니다. 이 메세지가 로컬의 SSLEngineunwrap() 호출에 의해 수신 및 처리되면(자), 어플리케이션은,unwrap() 를 호출해, 상태가 CLOSED 의 SSLEngineResult 를 검색합니다. 조건에 맞는 것이 발견되는지,isInboundDone() 의 반환값이 true 이면, 종료가 확인됩니다. 피어가 통신 링크를 종료할 때, 어떠한 이유로써 정상적인 SSL/TLS 종료 메세지가 송신되지 않았던 경우, 어플리케이션은 스트림의 종료 위치를 검출해, 더 이상 처리해야 할 착신 메세지가 없는 것을,closeInbound() 를 개입시켜 엔진에 통지합니다. 어플리케이션에 따라서는, 피어로부터의 종료 메세지를 일반적으로대로 받는 설정이 되어 있는 일이 있습니다. 이러한 어플리케이션은, 스트림의 종료 위치는 아니고, 핸드 쉐이크 메세지에 의해 종료를 체크합니다.  

암호화 방식군을 사용할 때는, 2 개의 그룹에 대해 이해할 필요가 있습니다.

디폴트의 구현으로 사용 가능하게 하는 암호화 방식군에서는, 서버를 인증해, 기밀성이 보증되지 않으면 안됩니다. 서버 인증을 하지 않고 기밀성이 보증되지 않는 암호화 방식군을 선택하는 경우는, 서버 인증을 하지 않고 비공개성이 보증되지 않는 (암호화되지 않는다) 통신이 사용되는 것에 2 개의 끝이 명시적으로 동의 할 필요가 있습니다.  

각 SSL/TLS 접속에는 클라이언트와 서버가 1 대씩 필요합니다. 이 때문에, 각 끝으로 담당하는 롤을 결정할 필요가 있습니다. 이 선택 내용에 의해, 어느 쪽측으로부터 핸드 쉐이크 처리를 개시하는지, 또, 서로 어떠한 메세지를 송신할지가 정해집니다. 모드의 설정은,setUseClientMode(boolean) 메소드로 실시합니다. 일단 초기 핸드 쉐이크가 개시되고 나서는, 재협상의 경우에서도,SSLEngine 의 모드를 클라이언트로부터 서버, 서버로부터 클라이언트로 전환할 수 없습니다.  

위양 태스크는 별thread로 처리할 수가 있습니다. SSLEngine 가 작성되면(자), 현재 AccessControlContext 가 보존됩니다. 그 후, 모든 위양 태스크는 이 문맥으로 처리됩니다. 즉, 액세스 제어의 의사결정은 모두, 엔진의 작성시의 문맥으로 행해집니다.  


동시성 처리에 대해:다음의 2 점에 주의해 주세요.
  1. wrap() 메소드와 unwrap() 메소드는, 병행 실행이 가능합니다.
  2. SSL/TLS 프로토콜은 패킷을 차례로 이용합니다. 어플리케이션은, 생성된 패킷이 올바른 차례로 전달할 필요가 있습니다. 패킷의 도착 순서가 올바르지 않으면 예기치 않은 결과 또는 치명적인 결과를 부르는 일이 있습니다.  

    다음에 예를 나타냅니다.  

                    synchronized (outboundLock) {
                        sslEngine.wrap(src, dst);
                        outboundQueue.put(dst);
                    }
            
    최종적인 패킷의 순서를 보증할 수가 없기 때문에, 결과적으로, 2 개의 thread가 같은 메소드 (wrap() 또는 unwrap())를 병행해 호출할 수 없습니다.

도입된 버젼:
1.5
관련 항목:
SSLContext , SSLSocket , SSLServerSocket , SSLSession , Socket

생성자 의 개요
protected SSLEngine ()
          내부 세션의 재사용에 관한 힌트를 제공하지 않는 SSLEngine 의 생성자 입니다.
protected SSLEngine (String  peerHost, int peerPort)
          SSLEngine 용 생성자 입니다.
 
메소드의 개요
abstract  void beginHandshake ()
          이 SSLEngine 의 초기 핸드 쉐이크 또는 재협상의 핸드 쉐이크를 개시합니다.
abstract  void closeInbound ()
          더 이상 이 SSLEngine 에 송신되는 착신 네트워크 데이터가 없는 것을 나타내는 신호입니다.
abstract  void closeOutbound ()
          더 이상 이 SSLEngine 에 송신되는 송신 어플리케이션 데이터가 없는 것을 나타내는 신호입니다.
abstract  Runnable getDelegatedTask ()
          이 SSLEngine 를 위해서(때문에) 위양 된 Runnable 태스크를 돌려줍니다.
abstract  String [] getEnabledCipherSuites ()
          이 엔진으로 현재 사용 가능하게 되어 있는 SSL 암호화 방식군의 이름을 돌려줍니다.
abstract  String [] getEnabledProtocols ()
          이 SSLEngine 로 현재 사용 가능하게 되어 있는 프로토콜의 버젼을 돌려줍니다.
abstract  boolean getEnableSessionCreation ()
          이 엔진으로 새로운 SSL 세션을 확립할 수 있는 경우는 true 를 돌려줍니다.
abstract  SSLEngineResult.HandshakeStatus getHandshakeStatus ()
          이 SSLEngine 의 현재의 핸드 쉐이크 상태를 돌려줍니다.
abstract  boolean getNeedClientAuth ()
          이 엔진에 클라이언트 인증이 필수인경우는 true 를 돌려줍니다.
 String getPeerHost ()
          피어의 호스트명을 돌려줍니다.
 int getPeerPort ()
          피어의 포트 번호를 돌려줍니다.
abstract  SSLSession getSession ()
          이 SSLEngine 로 사용중의 SSLSession 를 돌려줍니다.
 SSLParameters getSSLParameters ()
          이 SSLEngine 로 유효한 SSLParameters 를 돌려줍니다.
abstract  String [] getSupportedCipherSuites ()
          이 엔진으로 사용 가능하게 할 수 있는 암호화 방식군의 이름을 돌려줍니다.
abstract  String [] getSupportedProtocols ()
          이 SSLEngine 로 사용할 수가 있는 프로토콜의 이름을 돌려줍니다.
abstract  boolean getUseClientMode ()
          핸드 쉐이크시에 클라이언트 모드를 사용하도록(듯이) 엔진이 설정되어 있는 경우는 true
abstract  boolean getWantClientAuth ()
          이 엔진이 클라이언트 인증을 요구하는경우는 true 를 돌려줍니다.
abstract  boolean isInboundDone ()
          unwrap(ByteBuffer, ByteBuffer) 가 받아들이는 착신 데이터 메세지가 아직 있을지 어떨지를 돌려줍니다.
abstract  boolean isOutboundDone ()
          wrap(ByteBuffer, ByteBuffer) 가 생성하는 송신 데이터 메세지가 아직 있을지 어떨지를 돌려줍니다.
abstract  void setEnabledCipherSuites (String [] suites)
          이 엔진으로 사용 가능한 암호화 방식군을 설정합니다.
abstract  void setEnabledProtocols (String [] protocols)
          이 엔진으로 사용 가능한 프로토콜의 버젼을 설정합니다.
abstract  void setEnableSessionCreation (boolean flag)
          이 엔진으로 새로운 SSL 세션을 확립할 수 있을지 어떨지를 제어합니다.
abstract  void setNeedClientAuth (boolean need)
          클라이언트 인증이 필수가 되는 것같게 엔진을 설정합니다.
 void setSSLParameters (SSLParameters  params)
          이 엔진에 SSLParameters 를 적용합니다.
abstract  void setUseClientMode (boolean mode)
          핸드 쉐이크시, 엔진이 클라이언트 (또는 서버) 모드를 사용하도록(듯이) 설정합니다.
abstract  void setWantClientAuth (boolean want)
          클라이언트 인증을 요구하도록(듯이) 엔진을 설정합니다.
 SSLEngineResult unwrap (ByteBuffer  src, ByteBuffer  dst)
          SSL/TLS 네트워크 데이터를 plaintext의 어플리케이션 데이터 버퍼에 복호화 하려고 합니다.
 SSLEngineResult unwrap (ByteBuffer  src, ByteBuffer [] dsts)
          SSL/TLS 네트워크 데이터를 plaintext의 어플리케이션 데이터 버퍼의 순서에 복호화 하려고 합니다.
abstract  SSLEngineResult unwrap (ByteBuffer  src, ByteBuffer [] dsts, int offset, int length)
          SSL/TLS 네트워크 데이터를 plaintext의 어플리케이션 데이터 버퍼의 서브 순서에 복호화 하려고 합니다.
 SSLEngineResult wrap (ByteBuffer [] srcs, ByteBuffer  dst)
          plaintext 바이트를 데이터 버퍼 순서로부터 SSL/TLS 네트워크 데이터에 encode 하려고 합니다.
abstract  SSLEngineResult wrap (ByteBuffer [] srcs, int offset, int length, ByteBuffer  dst)
          plaintext 바이트를 데이터 버퍼의 서브 순서로부터 SSL/TLS 네트워크 데이터에 encode 하려고 합니다.
 SSLEngineResult wrap (ByteBuffer  src, ByteBuffer  dst)
          plaintext의 어플리케이션 데이터의 버퍼를 SSL/TLS 네트워크 데이터에 encode 하려고 합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

SSLEngine

protected SSLEngine()
내부 세션의 재사용에 관한 힌트를 제공하지 않는 SSLEngine 의 생성자 입니다.

관련 항목:
SSLContext.createSSLEngine() , SSLSessionContext

SSLEngine

protected SSLEngine(String  peerHost,
                    int peerPort)
SSLEngine 용 생성자 입니다.  

SSLEngine 구현은, 내부 세션을 재사용하기 위한 힌트로서peerHost 파라미터와 peerPort 파라미터를 사용할 수 있습니다.  

Kerberos 등, 원격 호스트명의 정보를 필요로 하는 암호화 방식군도 있습니다. 이 클래스의 구현은, 이 생성자 을 사용해 Kerberos 를 사용합니다.  

파라미터는,SSLEngine 에 의한 인증을 받지 않습니다.

파라미터:
peerHost - 피어의 호스트명
peerPort - 피어의 포트 번호
관련 항목:
SSLContext.createSSLEngine(String, int) , SSLSessionContext
메소드의 상세

getPeerHost

public String  getPeerHost()
피어의 호스트명을 돌려줍니다.  

이 값은 인증되어 있지 않기 때문에, 실제로 사용할 수 없습니다.

반환값:
피어의 호스트명. 사용할 수 있는 것이 없는 경우는 null.

getPeerPort

public int getPeerPort()
피어의 포트 번호를 돌려줍니다.  

이 값은 인증되어 있지 않기 때문에, 실제로 사용할 수 없습니다.

반환값:
피어의 포트 번호. 사용할 수 있는 것이 없는 경우는 -1.

wrap

public SSLEngineResult  wrap(ByteBuffer  src,
                            ByteBuffer  dst)
                     throws SSLException 
plaintext의 어플리케이션 데이터의 버퍼를 SSL/TLS 네트워크 데이터에 encode 하려고 합니다.  

이 메소드 호출의 동작은, 다음의 호출의 동작과 완전히 같습니다.

 engine.wrap(new ByteBuffer [] { src }, 0, 1, dst); 

파라미터:
src - 송신 어플리케이션 데이터를 포함하는 ByteBuffer
dst - 송신 네트워크 데이터를 포함하는 ByteBuffer
반환값:
이 오퍼레이션의 결과를 설명하는 SSLEngineResult
예외:
SSLException - 데이터 처리중에 발생해,SSLEngine 의 이상종료(ABEND)의 원인이 된 문제. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
ReadOnlyBufferException - ReadOnlyBufferException dst 버퍼가 읽어내 전용의 경우
IllegalArgumentException - IllegalArgumentException src 또는 dst 가 null 의 경우
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
wrap(ByteBuffer [], int, int, ByteBuffer)

wrap

public SSLEngineResult  wrap(ByteBuffer [] srcs,
                            ByteBuffer  dst)
                     throws SSLException 
plaintext 바이트를 데이터 버퍼 순서로부터 SSL/TLS 네트워크 데이터에 encode 하려고 합니다.  

이 메소드 호출의 동작은, 다음의 호출의 동작과 완전히 같습니다.

 engine.wrap(srcs, 0, srcs.length, dst); 

파라미터:
srcs - 송신 어플리케이션 데이터를 포함하는 ByteBuffer 의 배열
dst - 송신 네트워크 데이터를 포함하는 ByteBuffer
반환값:
이 오퍼레이션의 결과를 설명하는 SSLEngineResult
예외:
SSLException - 데이터 처리중에 발생해,SSLEngine 의 이상종료(ABEND)의 원인이 된 문제. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
ReadOnlyBufferException - ReadOnlyBufferException dst 버퍼가 읽어내 전용의 경우
IllegalArgumentException - IllegalArgumentException srcdsts 의 어느 쪽인지 한편이 null 의 경우, 또는 srcs 에 null 의 요소가 포함되는 경우
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
wrap(ByteBuffer [], int, int, ByteBuffer)

wrap

public abstract SSLEngineResult  wrap(ByteBuffer [] srcs,
                                     int offset,
                                     int length,
                                     ByteBuffer  dst)
                              throws SSLException 
plaintext 바이트를 데이터 버퍼의 서브 순서로부터 SSL/TLS 네트워크 데이터에 encode 하려고 합니다. 이 「수집」오퍼레이션은, 1 회의 호출로, 단일의 바이트 순서를 1 개 이상의 지정의 버퍼 순서에 encode 할 수 있습니다. 랩 수집은, 일반적으로, 네트워크 프로토콜이나 파일 형식 (예를 들어, 데이터를 1 개 이상의 고정장의 헤더와 가변 길이의 본체로부터 완성되는 세그먼트(segment)에 그룹화 하는 것 같은 파일 형식)을 구현할 때에 편리합니다. 수집의 자세한 것은 GatheringByteChannel , 수집 후의 동작의 자세한 것은 GatheringByteChannel.write(ByteBuffer[], int, int) 를 참조해 주세요.  

SSLEngine 상태에 따라서는, 이 메소드는, 어플리케이션 데이터를 일절 사용하지 않고 네트워크 데이터를 생성하는 일이 있습니다. 예를 들어, 핸드 쉐이크 데이터가 이것에 해당합니다.  

어플리케이션은, 네트워크 데이터를 피어에 안전하게 전송 할 필요가 있습니다. 또, 몇회인가의 wrap()의 호출에 의해 생성된 데이터를 생성순서에 전송 할 필요가 있습니다. 어플리케이션은, 이 메소드의 복수의 호출을 올바르고 동기화할 필요가 있습니다.  

SSLEngine 가 아직 초기 핸드 쉐이크를 개시하고 있지 않는 경우, 이 메소드에 의해 초기 핸드 쉐이크가 자동적으로 개시됩니다.  

이 메소드는, 단일의 SSL/TLS 패킷을 생성하려고 해, 가능한 한 많은 소스 데이터를 소비합니다. 그러나, 각 버퍼에 남아 있는 합계 바이트수이상을 소비할 것은 없습니다. 각 ByteBuffer 의 위치는, 소비 또는 생성된 데이터량에 맞추어 갱신됩니다. 상한/하한치는 바뀌지 않습니다.  

srcsdst 의 ByteBuffer 는, 부하에게 있는 각각 다른 메모리를 사용할 필요가 있습니다.  

엔진의 종료의 자세한 것은, 클래스의 설명을 참조

파라미터:
srcs - 송신 어플리케이션 데이터를 포함하는 ByteBuffer 의 배열
offset - offset 최초의 바이트의 취득처가 되는 버퍼 배열내의 오프셋(offset). srcs.length 이하의 제로 또는 정의 수
length - length 액세스 가능한 최대 버퍼수. srcs.length - offset 이하의 제로 또는 정의 수
dst - 송신 네트워크 데이터를 포함하는 ByteBuffer
반환값:
이 오퍼레이션의 결과를 설명하는 SSLEngineResult
예외:
SSLException - 데이터 처리중에 발생해,SSLEngine 의 이상종료(ABEND)의 원인이 된 문제. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
IndexOutOfBoundsException - IndexOutOfBoundsException offset 파라미터와 length 파라미터의 전제 조건이 채워지지 않은 경우
ReadOnlyBufferException - ReadOnlyBufferException dst 버퍼가 읽어내 전용의 경우
IllegalArgumentException - IllegalArgumentException srcsdst 의 어느 쪽인지 한편이 null 의 경우, 또는 지정된 srcs 서브 순서에 null 의 요소가 포함되는 경우
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
GatheringByteChannel , java.nio.channels.GatheringByteChannel#write(

unwrap

public SSLEngineResult  unwrap(ByteBuffer  src,
                              ByteBuffer  dst)
                       throws SSLException 
SSL/TLS 네트워크 데이터를 plaintext의 어플리케이션 데이터 버퍼에 복호화 하려고 합니다.  

이 메소드 호출의 동작은, 다음의 호출의 동작과 완전히 같습니다.

 engine.unwrap(src, new ByteBuffer [] { dst }, 0, 1); 

파라미터:
src - 착신 네트워크 데이터를 포함하는 ByteBuffer
dst - 착신 어플리케이션 데이터를 포함하는 ByteBuffer
반환값:
이 오퍼레이션의 결과를 설명하는 SSLEngineResult
예외:
SSLException - 데이터 처리중에 발생해,SSLEngine 의 이상종료(ABEND)의 원인이 된 문제. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
ReadOnlyBufferException - ReadOnlyBufferException dst 버퍼가 읽어내 전용의 경우
IllegalArgumentException - IllegalArgumentException src 또는 dst 가 null 의 경우
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
unwrap(ByteBuffer, ByteBuffer [], int, int)

unwrap

public SSLEngineResult  unwrap(ByteBuffer  src,
                              ByteBuffer [] dsts)
                       throws SSLException 
SSL/TLS 네트워크 데이터를 plaintext의 어플리케이션 데이터 버퍼의 순서에 복호화 하려고 합니다.  

이 메소드 호출의 동작은, 다음의 호출의 동작과 완전히 같습니다.

 engine.unwrap(src, dsts, 0, dsts.length); 

파라미터:
src - 착신 네트워크 데이터를 포함하는 ByteBuffer
dsts - 착신 어플리케이션 데이터를 포함하는 ByteBuffer 의 배열
반환값:
이 오퍼레이션의 결과를 설명하는 SSLEngineResult
예외:
SSLException - 데이터 처리중에 발생해,SSLEngine 의 이상종료(ABEND)의 원인이 된 문제. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
ReadOnlyBufferException - ReadOnlyBufferException 읽기 전용의 dst 버퍼가 존재하는 경우
IllegalArgumentException - IllegalArgumentException srcsdst 의 어느 쪽인지 한편이 null 의 경우, 또는 dsts 에 null 의 요소가 포함되는 경우
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
unwrap(ByteBuffer, ByteBuffer [], int, int)

unwrap

public abstract SSLEngineResult  unwrap(ByteBuffer  src,
                                       ByteBuffer [] dsts,
                                       int offset,
                                       int length)
                                throws SSLException 
SSL/TLS 네트워크 데이터를 plaintext의 어플리케이션 데이터 버퍼의 서브 순서에 복호화 하려고 합니다. 이 「살포」오퍼레이션은, 1 회의 호출로, 단일의 바이트 순서를 1 개 이상의 지정의 버퍼 순서에 복호화 할 수 있습니다. 분산하는 안 랩은, 일반적으로, 네트워크 프로토콜이나 파일 형식 (예를 들어, 데이터를 1 개 이상의 고정장의 헤더와 가변 길이의 본체로부터 완성되는 세그먼트(segment)에 그룹화 하는 것 같은 파일 형식)을 구현할 때에 편리합니다. 살포의 자세한 것은 ScatteringByteChannel , 살포 후의 동작의 자세한 것은 ScatteringByteChannel.read(ByteBuffer[], int, int) 를 참조해 주세요.  

SSLEngine 상태에 따라서는, 이 메소드는, 어플리케이션 데이터를 일절 생성하지 않고 네트워크 데이터를 사용하는 일이 있습니다. 예를 들어, 핸드 쉐이크 데이터가 이것에 해당합니다.  

어플리케이션은, 피어로부터 네트워크 데이터를 안전하게 취득할 필요가 있습니다. 또, 수신한 순서에 데이터의 랩을 해제 (unwrap() 호출) 할 필요가 있습니다. 어플리케이션은, 이 메소드의 복수의 호출을 올바르고 동기화할 필요가 있습니다.  

SSLEngine 가 아직 초기 핸드 쉐이크를 개시하고 있지 않는 경우, 이 메소드에 의해 초기 핸드 쉐이크가 자동적으로 개시됩니다.  

이 메소드는, 단일의 완전한 SSL/TLS 네트워크 패킷을 소비하려고 합니다만, 버퍼에 남아 있는 합계 바이트수이상을 소비할 것은 없습니다. 각 ByteBuffer 의 위치는, 소비 또는 생성된 데이터량에 맞추어 갱신됩니다. 상한/하한치는 바뀌지 않습니다.  

srcdsts 의 ByteBuffer 는, 부하에게 있는 각각 다른 메모리를 사용할 필요가 있습니다.  

이 호출의 결과, 착신 네트워크버퍼-가 변경되는 일이 있습니다. 이 때문에, 이차적인 목적으로 네트워크 데이터 패킷이 필요한 경우는, 이 메소드의 호출전에 데이터를 복제할 필요가 있습니다. 주:네트워크 데이터를 2 번째의 SSLEngine 로 사용할 수 없습니다. 각 SSLEngine 가, SSL/TLS 메세지에 영향을 미치는 일의의 랜덤인 상태를 가지고 있기 때문입니다.  

엔진의 종료의 자세한 것은, 클래스의 설명을 참조

파라미터:
src - 착신 네트워크 데이터를 포함하는 ByteBuffer
dsts - 착신 어플리케이션 데이터를 포함하는 ByteBuffer 의 배열
offset - 최초의 바이트의 전송처가 되는 버퍼 배열내의 오프셋(offset). dsts.length 이하의 제로 또는 정의 수
length - length 액세스 가능한 최대 버퍼수. dsts.length - offset 이하의 제로 또는 정의 수
반환값:
이 오퍼레이션의 결과를 설명하는 SSLEngineResult
예외:
SSLException - 데이터 처리중에 발생해,SSLEngine 의 이상종료(ABEND)의 원인이 된 문제. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
IndexOutOfBoundsException - IndexOutOfBoundsException offset 파라미터와 length 파라미터의 전제 조건이 채워지지 않은 경우
ReadOnlyBufferException - ReadOnlyBufferException 읽기 전용의 dst 버퍼가 존재하는 경우
IllegalArgumentException - IllegalArgumentException srcdsts 의 어느 쪽인지 한편이 null 의 경우, 또는 지정된 dsts 서브 순서에 null 의 요소가 포함되는 경우
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
ScatteringByteChannel , java.nio.channels.ScatteringByteChannel#read(

getDelegatedTask

public abstract Runnable  getDelegatedTask()
SSLEngine 를 위해서(때문에) 위양 된 Runnable 태스크를 돌려줍니다.  

SSLEngine 오퍼레이션에 필요한 오퍼레이션의 결과가 블록 되거나 완료까지 상당한 시간이 걸리는 일이 있습니다. 이 메소드는, 미처리 Runnable 오퍼레이션 (태스크)을 취득하기 위해서 사용됩니다. 각 태스크에는,run 오퍼레이션을 실행하는 thread (현재의 thread도 가능)를 할당할 필요가 있습니다. run 메소드가 종료한 뒤, 불필요하게 된 Runnable 객체는 폐기 가능합니다.  

위양 된 태스크는,AccessControlContext 내에서, 이 객체가 작성되었을 때에 실행됩니다.  

이 메소드의 호출은, 미처리의 태스크를 각각 1 회만 돌려줍니다.  

위양 된 복수의 태스크를 병렬 실행할 수도 있습니다.

반환값:
위양 된 Runnable 태스크. 사용할 수 있는 것이 없는 경우는 null

closeInbound

public abstract void closeInbound()
                           throws SSLException 
더 이상 이 SSLEngine 에 송신되는 착신 네트워크 데이터가 없는 것을 나타내는 신호입니다.  

어플리케이션이 closeOutbound() 를 호출해 종료 처리를 개시했을 때, 피어의 대응하는 종료 메세지를 기다릴 필요가 없는 경우가 있습니다 (종료의 경고의 대기에 관한 자세한 것은, TLS 스펙의 섹션 7.2. 1(RFC 2246 )을 참조). 이 경우, 이 메소드의 호출은 불필요합니다.  

이것에 대해서, 어플리케이션이 종료 처리를 개시하지 않았던 경우나, 상기의 상황에 들어맞지 않는 경우는, SSL/TLS 데이터 스트림의 종료 부분이 착신할 때마다 이 메소드를 호출할 필요가 있습니다. 이것에 의해, 착신측의 종료가 보증되어 피어가 SSL/TLS 종료 수속을 적절히 실행한 것을 확인해, 값의 절약해에 의한 공격의 가능성을 검출할 수가 있습니다.  

이 메소드는, 나무등입니다. 착신측이 벌써 종료하고 있는 경우는, 아무것도 실시하지 않습니다.  

나머지의 핸드 쉐이크 데이터를 플래시 하려면 ,wrap() 를 호출합니다.

예외:
SSLException - SSLException 이 엔진이 피어로부터 적절한 SSL/TLS 종료 통지 메세지를 받아들이지 않은 경우
관련 항목:
isInboundDone() , isOutboundDone()

isInboundDone

public abstract boolean isInboundDone()
unwrap(ByteBuffer, ByteBuffer) 가 받아들이는 착신 데이터 메세지가 아직 있을지 어떨지를 돌려줍니다.

반환값:
SSLEngine 가 더 이상 네트워크 데이터를 사용하지 않는 경우 (바꾸어 말하면, 더 이상 어플리케이션 데이터를 생성하지 않는 경우)는 true
관련 항목:
closeInbound()

closeOutbound

public abstract void closeOutbound()
더 이상 이 SSLEngine 에 송신되는 송신 어플리케이션 데이터가 없는 것을 나타내는 신호입니다.  

이 메소드는, 나무등입니다. 송신측이 벌써 종료하고 있는 경우는, 아무것도 실시하지 않습니다.  

나머지의 핸드 쉐이크 데이터를 플래시 하려면 ,wrap(ByteBuffer, ByteBuffer) 를 호출합니다.

관련 항목:
isOutboundDone()

isOutboundDone

public abstract boolean isOutboundDone()
wrap(ByteBuffer, ByteBuffer) 가 생성하는 송신 데이터 메세지가 아직 있을지 어떨지를 돌려줍니다.  

종료 단계에서,SSLEngine 는, 피어에 송신하는 핸드 쉐이크 종료 데이터를 생성합니다. 이 데이터를 생성하려면 ,wrap() 를 호출할 필요가 있습니다. 이 메소드의 반환값이 true 의 경우, 더 이상 송신 데이터는 생성되지 않습니다.

반환값:
SSLEngine 가 더 이상 네트워크 데이터를 생성하지 않는 경우는 true
관련 항목:
closeOutbound() , closeInbound()

getSupportedCipherSuites

public abstract String [] getSupportedCipherSuites()
이 엔진으로 사용 가능하게 할 수 있는 암호화 방식군의 이름을 돌려줍니다. 일반적으로은, 그 일부만이 디폴트로 사용 가능하게 됩니다. 디폴트의 서비스 품질 요건을 채우지 않은 암호화 방식군은, 사용 불가가 됩니다. 이러한 암호화 방식군은, 특수한 어플리케이션으로 사용됩니다.

반환값:
암호화 방식군명의 배열
관련 항목:
getEnabledCipherSuites() , setEnabledCipherSuites(String [])

getEnabledCipherSuites

public abstract String [] getEnabledCipherSuites()
이 엔진으로 현재 사용 가능하게 되어 있는 SSL 암호화 방식군의 이름을 돌려줍니다. SSL 엔진이 최초로 작성되었을 때에, 사용 가능하게는 모든 암호화 방식군으로, 최소한의 서비스 품질이 보증됩니다. 환경에 따라서는, 이 값은 빈 상태(empty)의 경우도 있습니다.  

암호화 방식군은, 비록 유효해도 사용되지 않는 것이 있습니다. 예를 들어, 피어가 암호화 방식군을 지원하지 않는 경우, 이 encode에 필요한 증명서나 비공개키를 사용할 수가 없는 경우, 또는, 익명의 암호화 방식군이 이용 가능해도 인증이 요구되는 경우 등입니다.

반환값:
암호화 방식군명의 배열
관련 항목:
getSupportedCipherSuites() , setEnabledCipherSuites(String [])

setEnabledCipherSuites

public abstract void setEnabledCipherSuites(String [] suites)
이 엔진으로 사용 가능한 암호화 방식군을 설정합니다.  

suites 파라미터로 지정된 각 암호화 방식군은, getSupportedCipherSuites()로 리스트되어 있지 않으면 안됩니다. 그렇지 않은 경우, 메소드는 실패합니다. 이 메소드의 호출이 정상적으로 행해졌을 때,suites 파라미터에 리스트 된 암호화 방식군만, 사용할 수가 있습니다.  

왜 특정의 암호화 방식군을 엔진으로 사용할 수가 없는 것처럼 붙어서는,getEnabledCipherSuites() 를 참조해 주세요.

파라미터:
suites - 사용 가능하게 하는 모든 암호화 방식군의 이름
예외:
IllegalArgumentException - 파라미터로 지정된 암호화 방식군의 일부가 지원되지 않는 경우, 또는 파라미터가 null 의 경우.
관련 항목:
getSupportedCipherSuites() , getEnabledCipherSuites()

getSupportedProtocols

public abstract String [] getSupportedProtocols()
SSLEngine 로 사용할 수가 있는 프로토콜의 이름을 돌려줍니다.

반환값:
지원되고 있는 프로토콜의 배열

getEnabledProtocols

public abstract String [] getEnabledProtocols()
SSLEngine 로 현재 사용 가능하게 되어 있는 프로토콜의 버젼을 돌려줍니다.

반환값:
프로토콜의 배열
관련 항목:
setEnabledProtocols(String [])

setEnabledProtocols

public abstract void setEnabledProtocols(String [] protocols)
이 엔진으로 사용 가능한 프로토콜의 버젼을 설정합니다.  

프로토콜은, getSupportedProtocols()에 의해, 지원 대상으로 해 리스트되어 있지 않으면 안됩니다. 이 메소드의 호출이 정상적으로 행해졌을 때,protocols 파라미터에 리스트 된 프로토콜만, 사용할 수가 있습니다.

파라미터:
protocols - 사용 가능하게 하는 모든 프로토콜의 이름
예외:
IllegalArgumentException - 파라미터로 지정된 프로토콜의 일부가 지원되지 않는 경우, 또는 파라미터가 null 의 경우.
관련 항목:
getEnabledProtocols()

getSession

public abstract SSLSession  getSession()
SSLEngine 로 사용중의 SSLSession 를 돌려줍니다.  

SSL 세션은 유효기간이 길고, 사용자에 따라서는 로그인 세션 전체에 대응하는 일도 있습니다. 세션에는, 세션내의 모든 접속으로 사용되는 암호화 방식군과 세션의 클라이언트와 서버의 식별 정보가 지정되고 있습니다.  

이 메소드는,SSLSocket.getSession() 과는 달리, 핸드 쉐이크가 완료할 때까지 블록 되지 않습니다.  

초기 핸드 쉐이크가 완료하면(자), 무효인 암호화 방식군 SSL_NULL_WITH_NULL_NULL 를 보고하는 세션 객체를 돌려줍니다.

반환값:
SSLEngineSSLSession
관련 항목:
SSLSession

beginHandshake

public abstract void beginHandshake()
                             throws SSLException 
이 SSLEngine 의 초기 핸드 쉐이크 또는 재협상의 핸드 쉐이크를 개시합니다.  

이 메소드는, 초기 핸드 쉐이크시에는 필요 없습니다. 핸드 쉐이크가 아직 개시되어 있지 않은 경우는,wrap() 메소드와 unwrap() 메소드에 의해 암묵적으로 이 메소드가 불려 가기 때문입니다.  

피어도, 적절한 세션재협상의 핸드 쉐이크 메세지를 송신하는 것으로써, 이 SSLEngine 와의 세션의 재협상을 요구하는 일이 있습니다.  

이 메소드는,SSLSocket#startHandshake() 메소드와는 달라, 핸드 쉐이크가 완료할 때까지 블록 되지 않습니다.  

강제적으로 SSL/TLS 세션의 재협상을 실시하는 경우는, 현재의 세션을 무효로 하고 나서 이 메소드를 호출할 필요가 있습니다.  

기존의 엔진상에서 복수의 핸드 쉐이크를 지원하지 않고,SSLException 를 throw 하는 프로토콜도 있습니다.

예외:
SSLException - SSLException SSLEngine 에 새롭고 핸드 쉐이크를 개시하도록(듯이) 통지하고 있을 때, 문제가 발생했을 경우. 엔진의 종료의 자세한 것은, 클래스의 설명을 참조
IllegalStateException - IllegalStateException 클라이언트/서버 모드가 미설정의 경우
관련 항목:
SSLSession.invalidate()

getHandshakeStatus

public abstract SSLEngineResult.HandshakeStatus  getHandshakeStatus()
SSLEngine 의 현재의 핸드 쉐이크 상태를 돌려줍니다.

반환값:
현재의 SSLEngineResult.HandshakeStatus

setUseClientMode

public abstract void setUseClientMode(boolean mode)
핸드 쉐이크시, 엔진이 클라이언트 (또는 서버) 모드를 사용하도록(듯이) 설정합니다.  

이 메소드는, 모든 핸드 쉐이크의 전에 호출할 필요가 있습니다. 일단 핸드 쉐이크가 개시되면(자), 이 엔진의 수명이 다할 때까지, 현재의 모드를 리셋 할 수 없습니다.  

일반적으로, 서버는 자신을 인증합니다만, 클라이언트는 반드시 그렇다고는 할 수 없습니다.

파라미터:
mode - mode 핸드 쉐이크를 클라이언트 모드로 개시하는 경우는 true
예외:
IllegalArgumentException - 최초의 핸드 쉐이크가 개시되고 나서 모드를 변경하려고 했을 경우.
관련 항목:
getUseClientMode()

getUseClientMode

public abstract boolean getUseClientMode()
핸드 쉐이크시에 클라이언트 모드를 사용하도록(듯이) 엔진이 설정되어 있는 경우는 true

반환값:
클라이언트 모드로 핸드 쉐이크를 실시하는 경우는 true
관련 항목:
setUseClientMode(boolean)

setNeedClientAuth

public abstract void setNeedClientAuth(boolean need)
클라이언트 인증이 필수가 되는 것같게 엔진을 설정합니다. 이 옵션은, 서버 모드의 엔진만으로 사용합니다.  

엔진의 클라이언트 인증 설정은, 다음의 어느 쪽인가에 됩니다.

setWantClientAuth(boolean) 의 경우와는 달라, 이 옵션이 설정되어 있어, 한편 클라이언트 인증 정보가 제공되지 않는 경우는, 협상이 정지해, 엔진은, 종료 프로시저를 개시합니다.  

이 메소드를 호출하면(자), 지금까지 이 메소드 또는 setWantClientAuth(boolean) 에 의해 설정된 내용이 오버라이드(override) 됩니다.

파라미터:
need - 클라이언트 인증이 필수의 경우는 true, 클라이언트 인증이 불필요한 경우는 false.
관련 항목:
getNeedClientAuth() , setWantClientAuth(boolean) , getWantClientAuth() , setUseClientMode(boolean)

getNeedClientAuth

public abstract boolean getNeedClientAuth()
이 엔진에 클라이언트 인증이 필수인경우는 true 를 돌려줍니다. 이 옵션은, 서버 모드의 엔진만으로 사용합니다.

반환값:
클라이언트 인증이 필수의 경우는 true, 클라이언트 인증이 불필요한 경우는 false.
관련 항목:
setNeedClientAuth(boolean) , setWantClientAuth(boolean) , getWantClientAuth() , setUseClientMode(boolean)

setWantClientAuth

public abstract void setWantClientAuth(boolean want)
클라이언트 인증을 요구하도록(듯이) 엔진을 설정합니다. 이 옵션은, 서버 모드의 엔진만으로 사용합니다.  

엔진의 클라이언트 인증 설정은, 다음의 어느 쪽인가에 됩니다.

setNeedClientAuth(boolean) 와 달리, 이 옵션이 설정되어 있어, 한편 클라이언트 인증 정보가 제공되지 않는 경우에서도, 협상은 속행됩니다.  

이 메소드를 호출하면(자), 지금까지 이 메소드 또는 setNeedClientAuth(boolean) 에 의해 설정된 내용이 오버라이드(override) 됩니다.

파라미터:
want - 클라이언트 인증이 요구되었을 경우는 true, 클라이언트 인증이 불필요한 경우는 false.
관련 항목:
getWantClientAuth() , setNeedClientAuth(boolean) , getNeedClientAuth() , setUseClientMode(boolean)

getWantClientAuth

public abstract boolean getWantClientAuth()
이 엔진이 클라이언트 인증을 요구하는경우는 true 를 돌려줍니다. 이 옵션은, 서버 모드의 엔진만으로 사용합니다.

반환값:
클라이언트 인증이 요구되었을 경우는 true, 클라이언트 인증이 불필요한 경우는 false.
관련 항목:
setNeedClientAuth(boolean) , getNeedClientAuth() , setWantClientAuth(boolean) , setUseClientMode(boolean)

setEnableSessionCreation

public abstract void setEnableSessionCreation(boolean flag)
이 엔진으로 새로운 SSL 세션을 확립할 수 있을지 어떨지를 제어합니다. 세션을 작성하지 못하고, 재개할 수 있는 기존의 세션이 없는 경우, 핸드 쉐이크는 성공하지 않습니다.

파라미터:
flag - 세션을 작성할 수 있는 경우는 true (디폴트). 기존의 세션을 재개하는 경우는 false
관련 항목:
getEnableSessionCreation()

getEnableSessionCreation

public abstract boolean getEnableSessionCreation()
이 엔진으로 새로운 SSL 세션을 확립할 수 있는 경우는 true 를 돌려줍니다.

반환값:
세션을 작성할 수 있는 경우는 true (디폴트). 기존의 세션을 재개하는 경우는 false
관련 항목:
setEnableSessionCreation(boolean)

getSSLParameters

public SSLParameters  getSSLParameters()
이 SSLEngine 로 유효한 SSLParameters 를 돌려줍니다. 반환되는 SSLParameters 의 암호화 방식군과 프로토콜은, 항상 null 이외입니다.

반환값:
이 SSLEngine 로 유효한 SSLParameters.
도입된 버젼:
1.6

setSSLParameters

public void setSSLParameters(SSLParameters  params)
이 엔진에 SSLParameters 를 적용합니다.

이것은 다음 일을 의미합니다.

파라미터:
params - 파라미터
예외:
IllegalArgumentException - setEnabledCipherSuites() 또는 the setEnabledProtocols()의 호출해에 실패했을 경우
도입된 버젼:
1.6

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.