DefaultOpenSslSession Class — netty Architecture
Architecture documentation for the DefaultOpenSslSession class in ReferenceCountedOpenSslEngine.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 70581b12_79ee_1937_703d_e9d4631c418e["DefaultOpenSslSession"] e8cf4c21_519c_af0d_e66f_ef135c52b428["ReferenceCountedOpenSslEngine.java"] 70581b12_79ee_1937_703d_e9d4631c418e -->|defined in| e8cf4c21_519c_af0d_e66f_ef135c52b428 7db95b56_7d68_6c82_5d8a_8cc4d6d4156c["DefaultOpenSslSession()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 7db95b56_7d68_6c82_5d8a_8cc4d6d4156c 3322025e_579f_b5b5_be14_bd49d0b70335["SSLSessionBindingEvent()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 3322025e_579f_b5b5_be14_bd49d0b70335 0df93b1e_6ec5_8163_ec8f_ad4169ec0aa3["prepareHandshake()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 0df93b1e_6ec5_8163_ec8f_ad4169ec0aa3 6ea33493_29cb_2a78_e5c3_fba44fe98971["setSessionDetails()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 6ea33493_29cb_2a78_e5c3_fba44fe98971 612fc544_b101_5d3a_c33c_f07f573f44a5["keyValueStorage()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 612fc544_b101_5d3a_c33c_f07f573f44a5 23ebb116_ac2d_3518_355f_85beec7211e7["OpenSslSessionId()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 23ebb116_ac2d_3518_355f_85beec7211e7 5bfd738f_3448_e7c6_b382_edb87a3c5321["setLocalCertificate()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 5bfd738f_3448_e7c6_b382_edb87a3c5321 28ba8623_d0ad_96c5_f334_c219f5c0fbe1["getId()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 28ba8623_d0ad_96c5_f334_c219f5c0fbe1 0d38468c_1095_f167_fa10_00d01b230a70["OpenSslSessionContext()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 0d38468c_1095_f167_fa10_00d01b230a70 5a7dc011_6418_7fa6_d06f_e0ac3d90a7cb["getCreationTime()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 5a7dc011_6418_7fa6_d06f_e0ac3d90a7cb 9ebb643a_3027_6df4_0739_674082920624["setLastAccessedTime()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 9ebb643a_3027_6df4_0739_674082920624 278eee38_3ab3_bcb1_038d_a2a77b0a731e["getLastAccessedTime()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 278eee38_3ab3_bcb1_038d_a2a77b0a731e 6d96ea60_b093_00e4_d25c_ef64ba482b35["invalidate()"] 70581b12_79ee_1937_703d_e9d4631c418e -->|method| 6d96ea60_b093_00e4_d25c_ef64ba482b35
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java lines 2373–2760
private final class DefaultOpenSslSession implements OpenSslInternalSession {
private final OpenSslSessionContext sessionContext;
// These are guarded by synchronized(OpenSslEngine.this) as handshakeFinished() may be triggered by any
// thread.
private X509Certificate[] x509PeerCerts;
private Certificate[] peerCerts;
private boolean valid = true;
private String protocol;
private String cipher;
private OpenSslSessionId id = OpenSslSessionId.NULL_ID;
private long creationTime;
// Updated once a new handshake is started and so the SSLSession reused.
private long lastAccessed = -1;
private volatile int applicationBufferSize = MAX_PLAINTEXT_LENGTH;
private volatile Certificate[] localCertificateChain;
private volatile Map<String, Object> keyValueStorage = new ConcurrentHashMap<String, Object>();
DefaultOpenSslSession(OpenSslSessionContext sessionContext) {
this.sessionContext = sessionContext;
}
private SSLSessionBindingEvent newSSLSessionBindingEvent(String name) {
return new SSLSessionBindingEvent(session, name);
}
@Override
public void prepareHandshake() {
keyValueStorage.clear();
}
@Override
public void setSessionDetails(
long creationTime, long lastAccessedTime, OpenSslSessionId sessionId,
Map<String, Object> keyValueStorage) {
synchronized (ReferenceCountedOpenSslEngine.this) {
if (id == OpenSslSessionId.NULL_ID) {
id = sessionId;
this.creationTime = creationTime;
lastAccessed = lastAccessedTime;
// Update the key value storage. It's fine to just drop the previous stored values on the floor
// as the JDK does the same in the sense that it will use a new SSLSessionImpl instance once the
// handshake was done
this.keyValueStorage = keyValueStorage;
}
}
}
@Override
public Map<String, Object> keyValueStorage() {
return keyValueStorage;
}
@Override
public OpenSslSessionId sessionId() {
synchronized (ReferenceCountedOpenSslEngine.this) {
if (this.id == OpenSslSessionId.NULL_ID && !destroyed) {
byte[] sessionId = SSL.getSessionId(ssl);
if (sessionId != null) {
id = new OpenSslSessionId(sessionId);
}
}
return id;
}
}
@Override
public void setLocalCertificate(Certificate[] localCertificate) {
localCertificateChain = localCertificate;
}
@Override
public byte[] getId() {
return sessionId().cloneBytes();
}
Source
Frequently Asked Questions
What is the DefaultOpenSslSession class?
DefaultOpenSslSession is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java.
Where is DefaultOpenSslSession defined?
DefaultOpenSslSession is defined in handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java at line 2373.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free