84 CipherSuite cipherSuite; |
84 CipherSuite cipherSuite; |
85 private static final byte[] emptyByteArray = new byte[0]; |
85 private static final byte[] emptyByteArray = new byte[0]; |
86 |
86 |
87 // Please never use the transport parameter other than storing a |
87 // Please never use the transport parameter other than storing a |
88 // reference to this object. |
88 // reference to this object. |
|
89 // |
89 // Called by SSLEngineImpl |
90 // Called by SSLEngineImpl |
90 TransportContext(SSLContextImpl sslContext, SSLTransport transport, |
91 TransportContext(SSLContextImpl sslContext, SSLTransport transport, |
91 InputRecord inputRecord, OutputRecord outputRecord) { |
92 InputRecord inputRecord, OutputRecord outputRecord) { |
92 this(sslContext, transport, new SSLConfiguration(sslContext, true), |
93 this(sslContext, transport, new SSLConfiguration(sslContext, true), |
93 inputRecord, outputRecord, true); |
94 inputRecord, outputRecord, true); |
94 } |
95 } |
95 |
96 |
96 // Please never use the transport parameter other than storing a |
97 // Please never use the transport parameter other than storing a |
97 // reference to this object. |
98 // reference to this object. |
|
99 // |
98 // Called by SSLSocketImpl |
100 // Called by SSLSocketImpl |
99 TransportContext(SSLContextImpl sslContext, SSLTransport transport, |
101 TransportContext(SSLContextImpl sslContext, SSLTransport transport, |
100 InputRecord inputRecord, OutputRecord outputRecord, |
102 InputRecord inputRecord, OutputRecord outputRecord, |
101 boolean isClientMode) { |
103 boolean isClientMode) { |
102 this(sslContext, transport, |
104 this(sslContext, transport, |
103 new SSLConfiguration(sslContext, isClientMode), |
105 new SSLConfiguration(sslContext, isClientMode), |
104 inputRecord, outputRecord,false); |
106 inputRecord, outputRecord, false); |
105 } |
107 } |
106 |
108 |
107 // Please never use the transport parameter other than storing a |
109 // Please never use the transport parameter other than storing a |
108 // reference to this object. |
110 // reference to this object. |
|
111 // |
109 // Called by SSLSocketImpl with an existing SSLConfig |
112 // Called by SSLSocketImpl with an existing SSLConfig |
110 TransportContext(SSLContextImpl sslContext, SSLTransport transport, |
113 TransportContext(SSLContextImpl sslContext, SSLTransport transport, |
111 SSLConfiguration sslConfig, |
114 SSLConfiguration sslConfig, |
112 InputRecord inputRecord, OutputRecord outputRecord) { |
115 InputRecord inputRecord, OutputRecord outputRecord) { |
113 this(sslContext, transport, (SSLConfiguration)sslConfig.clone(), |
116 this(sslContext, transport, (SSLConfiguration)sslConfig.clone(), |
634 } |
637 } |
635 |
638 |
636 // A separate thread is allocated to deliver handshake completion |
639 // A separate thread is allocated to deliver handshake completion |
637 // events. |
640 // events. |
638 private static class NotifyHandshake implements Runnable { |
641 private static class NotifyHandshake implements Runnable { |
639 private Set<Map.Entry<HandshakeCompletedListener, |
642 private final Set<Map.Entry<HandshakeCompletedListener, |
640 AccessControlContext>> targets; // who gets notified |
643 AccessControlContext>> targets; // who gets notified |
641 private HandshakeCompletedEvent event; // the notification |
644 private final HandshakeCompletedEvent event; // the notification |
642 |
645 |
643 NotifyHandshake( |
646 NotifyHandshake( |
644 Map<HandshakeCompletedListener,AccessControlContext> listeners, |
647 Map<HandshakeCompletedListener,AccessControlContext> listeners, |
645 HandshakeCompletedEvent event) { |
648 HandshakeCompletedEvent event) { |
646 this.targets = new HashSet<>(listeners.entrySet()); // clone |
649 this.targets = new HashSet<>(listeners.entrySet()); // clone |