diff options
Diffstat (limited to 'libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/tls/TlsSessionImpl.java')
-rw-r--r-- | libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/tls/TlsSessionImpl.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/tls/TlsSessionImpl.java b/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/tls/TlsSessionImpl.java new file mode 100644 index 000000000..af11bf08a --- /dev/null +++ b/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/tls/TlsSessionImpl.java @@ -0,0 +1,48 @@ +package org.spongycastle.crypto.tls; + +import org.spongycastle.util.Arrays; + +class TlsSessionImpl implements TlsSession +{ + final byte[] sessionID; + SessionParameters sessionParameters; + + TlsSessionImpl(byte[] sessionID, SessionParameters sessionParameters) + { + if (sessionID == null) + { + throw new IllegalArgumentException("'sessionID' cannot be null"); + } + if (sessionID.length < 1 || sessionID.length > 32) + { + throw new IllegalArgumentException("'sessionID' must have length between 1 and 32 bytes, inclusive"); + } + + this.sessionID = Arrays.clone(sessionID); + this.sessionParameters = sessionParameters; + } + + public synchronized SessionParameters exportSessionParameters() + { + return this.sessionParameters == null ? null : this.sessionParameters.copy(); + } + + public synchronized byte[] getSessionID() + { + return sessionID; + } + + public synchronized void invalidate() + { + if (this.sessionParameters != null) + { + this.sessionParameters.clear(); + this.sessionParameters = null; + } + } + + public synchronized boolean isResumable() + { + return this.sessionParameters != null; + } +} |