public class SSLEngineResult extends Object
SSLEngine
I/O calls.
A SSLEngine
provides a means for establishing
secure communication sessions between two peers. SSLEngine
operations typically consume bytes from an input buffer and produce
bytes in an output buffer. This class provides operational result
values describing the state of the SSLEngine
, including
indications of what operations are needed to finish an
ongoing handshake. Lastly, it reports the number of bytes consumed
and produced as a result of this operation.
SSLEngine
,
SSLEngine.wrap(ByteBuffer, ByteBuffer)
,
SSLEngine.unwrap(ByteBuffer, ByteBuffer)
Modifier and Type | Class and Description |
---|---|
static class |
SSLEngineResult.HandshakeStatus
An
SSLEngineResult enum describing the current
handshaking state of this SSLEngine . |
static class |
SSLEngineResult.Status
An
SSLEngineResult enum describing the overall result
of the SSLEngine operation. |
Constructor and Description |
---|
SSLEngineResult(SSLEngineResult.Status status,
SSLEngineResult.HandshakeStatus handshakeStatus,
int bytesConsumed,
int bytesProduced)
Initializes a new instance of this class.
|
SSLEngineResult(SSLEngineResult.Status status,
SSLEngineResult.HandshakeStatus handshakeStatus,
int bytesConsumed,
int bytesProduced,
long sequenceNumber)
Initializes a new instance of this class.
|
Modifier and Type | Method and Description |
---|---|
int |
bytesConsumed()
Returns the number of bytes consumed from the input buffer.
|
int |
bytesProduced()
Returns the number of bytes written to the output buffer.
|
SSLEngineResult.HandshakeStatus |
getHandshakeStatus()
Gets the handshake status of this
SSLEngine
operation. |
SSLEngineResult.Status |
getStatus()
Gets the return value of this
SSLEngine operation. |
long |
sequenceNumber()
Returns the sequence number of the produced or consumed SSL/TLS/DTLS
record (optional operation).
|
String |
toString()
Returns a String representation of this object.
|
public SSLEngineResult(SSLEngineResult.Status status, SSLEngineResult.HandshakeStatus handshakeStatus, int bytesConsumed, int bytesProduced)
status
- the return value of the operation.handshakeStatus
- the current handshaking status.bytesConsumed
- the number of bytes consumed from the source ByteBufferbytesProduced
- the number of bytes placed into the destination ByteBufferIllegalArgumentException
- if the status
or handshakeStatus
arguments are null, or if bytesConsumed
or
bytesProduced
is negative.public SSLEngineResult(SSLEngineResult.Status status, SSLEngineResult.HandshakeStatus handshakeStatus, int bytesConsumed, int bytesProduced, long sequenceNumber)
status
- the return value of the operation.handshakeStatus
- the current handshaking status.bytesConsumed
- the number of bytes consumed from the source ByteBufferbytesProduced
- the number of bytes placed into the destination ByteBuffersequenceNumber
- the sequence number (unsigned long) of the produced or
consumed SSL/TLS/DTLS record, or $-1L
if no record
produced or consumedIllegalArgumentException
- if the status
or handshakeStatus
arguments are null, or if bytesConsumed
or
bytesProduced
is negativepublic final SSLEngineResult.Status getStatus()
SSLEngine
operation.public final SSLEngineResult.HandshakeStatus getHandshakeStatus()
SSLEngine
operation.public final int bytesConsumed()
public final int bytesProduced()
public final long sequenceNumber()
-1L
. It is desired to use the unsigned
long comparing mode for comparison of unsigned long values
(see also Long.compareUnsigned()
).
For DTLS protocols, the first 16 bits of the sequence number is a counter value (epoch) that is incremented on every cipher state change. The remaining 48 bits on the right side of the sequence number represents the sequence of the record, which is maintained separately for each epoch.
-1L
. If the sequence
number is close to wrapping, renegotiate should be requested,
otherwise the connection should be closed immediately.
This should be carried on automatically by the underlying
implementation.-1L
if no record is produced or consumed,
or this operation is not supported by the underlying providerLong.compareUnsigned(long, long)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2016, Oracle and/or its affiliates. All rights reserved.
DRAFT 9-internal+0-2016-01-26-133437.ivan.openjdk9onspinwait