package org.bouncycastle.crypto.tls; import org.bouncycastle.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; } }