iaik.security.ssl
Class PskKeyExchangeModes

java.lang.Object
  extended by iaik.security.ssl.Extension
      extended by iaik.security.ssl.PskKeyExchangeModes
All Implemented Interfaces:
java.lang.Cloneable

public final class PskKeyExchangeModes
extends Extension
implements java.lang.Cloneable

This class implements the TLS 1.3 psk_key_exchange_modes extension (see RFC 8446).

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.

Version:
File Revision 43
See Also:
Extension, ExtensionList

Nested Class Summary
static class PskKeyExchangeModes.PskKeyExchangeMode
          PskKeyExchangeMode.
 
Field Summary
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 Summary
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.
 
Method Summary
 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.
 
Methods inherited from class iaik.security.ssl.Extension
getAllowedProtocolVersions, getExtensionType, getName, getType, setCritical
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PSK_KE

public static final PskKeyExchangeModes.PskKeyExchangeMode PSK_KE
PskKeyExchangeMode psk_ke.


PSK_DHE_KE

public static final PskKeyExchangeModes.PskKeyExchangeMode PSK_DHE_KE
PskKeyExchangeMode psk_dhe_ke.


TYPE

public static final ExtensionType TYPE
The type (45) of the psk_key_exchange_modes extension.

Constructor Detail

PskKeyExchangeModes

public PskKeyExchangeModes()
Creates a new PskKeyExchangeModes extension.
PskKeyExchangeModes have to be added by calling method setModes or method addMode.


PskKeyExchangeModes

public PskKeyExchangeModes(PskKeyExchangeModes.PskKeyExchangeMode[] modes)
Creates an PskKeyExchangeModes extension for the given psk key exchange modes.

Parameters:
modes - the psk key exchange modes
Throws:
java.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 supported

PskKeyExchangeModes

public PskKeyExchangeModes(PskKeyExchangeModes.PskKeyExchangeMode mode)
Creates an PskKeyExchangeModes extension for the given psk key exchange mode.

Additional psk key exchange modes may be added by calling method addMode.

Parameters:
mode - the psk key exchange mode
Throws:
java.lang.IllegalArgumentException - if the given PskKeyExchangeMode is null, or if the given PskKeyExchangeMode is not supported
Method Detail

getDefaultPskKeyExchangeModes

public static PskKeyExchangeModes getDefaultPskKeyExchangeModes()
Creates a PskKeyExchangeModes extension containing the psk key exchange modes supported by default.

Returns:
a PskKeyExchangeModes extension containing the psk key exchange modes supported by default.

getModes

public PskKeyExchangeModes.PskKeyExchangeMode[] getModes()
Gets the psk key exchange modes included in this psk key exchange mode list.

Returns:
the psk key exchange modes as array of PskKeyExchangeMode objects; the array maybe empty if no psk key exchange modes are included in the list

setModes

public void setModes(PskKeyExchangeModes.PskKeyExchangeMode[] modes)
Sets the psk key exchange modes.

Parameters:
modes - the modes to be set
Throws:
java.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 supported

setIgnoreClientPreferenceOrder

public 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).

Parameters:
ignore - true to ignore the client preference order false (default) to not ignore it

size

public int size()
Gets the number of psk key exchange modes included in this psk key exchange mode list.

Returns:
the number of psk key exchange modes included in this psk key exchange mode list

hashCode

public int hashCode()
Gets a hash code of this psk key exchange mode list.

Overrides:
hashCode in class java.lang.Object
Returns:
a hash code of this psk key exchange mode list

equals

public boolean equals(java.lang.Object obj)
Checks if this PskKeyExchangeModes extension is equal to the given object.

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.

Overrides:
equals in class java.lang.Object
Returns:
true if this PskKeyExchangeModes is equal to the given object, false if it is not equal to it

contains

public boolean contains(PskKeyExchangeModes.PskKeyExchangeMode mode)
Checks if this psk key exchange mode list contains the given psk key exchange mode.

Returns:
true if this psk key exchange mode list contains the given psk key exchange mode, false if it does not contain it

clone

public java.lang.Object clone()
Returns a clone of this psk key exchange mode list.

Overrides:
clone in class Extension
Returns:
a clone of this psk key exchange mode list

toString

public java.lang.String toString()
Gets a String representation of this PskKeyExchangeModes extension.

Specified by:
toString in class Extension
Returns:
a String representation of the PskKeyExchangeModes extension

This Javadoc may contain text parts from text parts from IETF Internet Standard specifications (see copyright note).

iSaSiLk 6.0, (c) 2002 IAIK, (c) 2003 - 2015 SIC