public final class PskKeyExchangeModes extends Extension implements java.lang.Cloneable
The psk_key_exchange_modes extension is sent by the client to tell the server the modes the client is supporting for use with pre shared keys. TLS servers do not send a psk_key_exchange_modes extension.
RFC 8446 defines the Pre-Shared Key Exchange Modes
extension as
enumeration of PskKeyExchangeMode ids:
enum { psk_ke(0), psk_dhe_ke(1), (255) } PskKeyExchangeMode; struct { PskKeyExchangeMode ke_modes<1..255>; } PskKeyExchangeModes;Although a PskKeyExchangeModes only will be sent from the client to the server, on both side of the connection (client and server) a PskKeyExchangeModes extension may be created to explicitly specify (or limit, respectively) the psk key exchange modes that shall be supported , e.g.:
PskKeyExchangeModes pskKeyExchangeModes = new PskKeyExchangeModes(PskKeyExchangeModes.PSK_DHE_KE); ... ExtensionList extensions = ...; extensions.addExtension(pskKeyExchangeModes); ... SSLContext context = ...; context.setExtensions(extensions);Currently only mode
PSK_DHE_KE
is supported.Extension
,
ExtensionList
Modifier and Type | Class and Description |
---|---|
static class |
PskKeyExchangeModes.PskKeyExchangeMode
PskKeyExchangeMode.
|
Modifier and Type | Field and Description |
---|---|
static PskKeyExchangeModes.PskKeyExchangeMode |
PSK_DHE_KE
PskKeyExchangeMode psk_dhe_ke.
|
static PskKeyExchangeModes.PskKeyExchangeMode |
PSK_KE
PskKeyExchangeMode psk_ke.
|
static ExtensionType |
TYPE
The type (45) of the psk_key_exchange_modes extension.
|
Constructor and Description |
---|
PskKeyExchangeModes()
Creates a new PskKeyExchangeModes extension.
|
PskKeyExchangeModes(PskKeyExchangeModes.PskKeyExchangeMode mode)
Creates an PskKeyExchangeModes extension for the given psk key exchange mode.
|
PskKeyExchangeModes(PskKeyExchangeModes.PskKeyExchangeMode[] modes)
Creates an PskKeyExchangeModes extension for the given psk key exchange modes.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Returns a clone of this psk key exchange mode list.
|
boolean |
contains(PskKeyExchangeModes.PskKeyExchangeMode mode)
Checks if this psk key exchange mode list contains the given psk key exchange mode.
|
boolean |
equals(java.lang.Object obj)
Checks if this PskKeyExchangeModes extension is equal to the given object.
|
static PskKeyExchangeModes |
getDefaultPskKeyExchangeModes()
Creates a PskKeyExchangeModes extension containing the psk key exchange modes supported by default.
|
PskKeyExchangeModes.PskKeyExchangeMode[] |
getModes()
Gets the psk key exchange modes included in this psk key exchange mode list.
|
int |
hashCode()
Gets a hash code of this psk key exchange mode list.
|
void |
setIgnoreClientPreferenceOrder(boolean ignore)
Sets whether to ignore the preference order of the psk key exchange modes sent
by the client (only meaningful on the server side).
|
void |
setModes(PskKeyExchangeModes.PskKeyExchangeMode[] modes)
Sets the psk key exchange modes.
|
int |
size()
Gets the number of psk key exchange modes included in this psk key exchange mode list.
|
java.lang.String |
toString()
Gets a String representation of this PskKeyExchangeModes extension.
|
getAllowedProtocolVersions, getExtensionType, getName, getType, setCritical
public static final PskKeyExchangeModes.PskKeyExchangeMode PSK_KE
public static final PskKeyExchangeModes.PskKeyExchangeMode PSK_DHE_KE
public static final ExtensionType TYPE
public PskKeyExchangeModes()
public PskKeyExchangeModes(PskKeyExchangeModes.PskKeyExchangeMode[] modes)
modes
- the psk key exchange modesjava.lang.IllegalArgumentException
- if the given array is empty or contains
a null
element, or if any of
the given psk key exchange modes is not supportedpublic PskKeyExchangeModes(PskKeyExchangeModes.PskKeyExchangeMode mode)
Additional psk key exchange modes may be added by calling method
.addMode
mode
- the psk key exchange modejava.lang.IllegalArgumentException
- if the given PskKeyExchangeMode is null
,
or if the given PskKeyExchangeMode is not supportedpublic static PskKeyExchangeModes getDefaultPskKeyExchangeModes()
public PskKeyExchangeModes.PskKeyExchangeMode[] getModes()
public void setModes(PskKeyExchangeModes.PskKeyExchangeMode[] modes)
modes
- the modes to be setjava.lang.IllegalArgumentException
- if the given array is empty or does contain
a null
element, or if any of
the given psk key exchange modes is not supportedpublic void setIgnoreClientPreferenceOrder(boolean ignore)
ignore
- true
to ignore the client preference order
false
(default) to not ignore itpublic int size()
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object obj)
Two psk key exchange mode list are treated as equal if they contain the same
PskKeyExchangeMode objects (same number and same order). The critical
value is not checked by this method.
equals
in class java.lang.Object
true
if this PskKeyExchangeModes is equal to the
given object, false
if it is not equal
to itpublic boolean contains(PskKeyExchangeModes.PskKeyExchangeMode mode)
true
if this psk key exchange mode list contains the given
psk key exchange mode, false
if it does not contain itpublic java.lang.Object clone()