public class NamedGroup
extends java.lang.Object
implements java.lang.Cloneable
NamedGroup
element of the
SupportedGroups
(supported_groups) TLS extension as specified by RFC 7919, RFC 8446.
The SupportedGroups
(supported_groups) extension replaces
the SupportedEllipticCurves
(elliptic_curves) extension to
extend it about support for finite field based Diffie-Hellman (DH) key exchange.
Although the [@link SupportedEllipticCurves SupportedEllipticCurves} class can
still be used for backwards compatibility to former iSaSiLk versions it is
recommended to use this SupportedGroups
implementation
instead of it.
A SupportedGroups
extension might be sent by the client within
an extended ClientHello
message to tell the server which groups
are supported by the client when using an ECDHE or DHE based cipher suite. The server
uses the information sent by the client to select an ECC/DHE cipher suite in
accordance with the ECDHE/FFDHE groups supported by the client. The server
itself generally does not send a SupportedGroups
extension.
TLS defines the SupportedGroups
extension as list of named
groups (see RFC 7919):
enum { Elliptic Curve Groups (ECDHE) secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019), x25519(0x001D), x448(0x001E), // Finite Field Groups (DHE) ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102), ffdhe6144(0x0103), ffdhe8192(0x0104), // Reserved Code Points ffdhe_private_use(0x01FC..0x01FF), ecdhe_private_use(0xFE00..0xFEFF), (0xFFFF) } NamedGroup; struct { NamedGroup named_group_list<2..2^16-1>; } NamedGroupList;The client shall send the list of supported groups in its preference order.
In addition to the elliptic groups listed above, iSaSiLk supports the following Brainpool groups from RFC 7027:
enum { brainpoolP256r1(26), brainpoolP384r1(27), brainpoolP512r1(28) } NamedGroup;iSaSiLk also supports the following hybrid groups combining a classical (ECC) and a PQ (ML-KEM) key exchange algorithm to protect key establishment in transition to post quantum cryptography (see Post-quantum hybrid ECDHE-MLKEM Key Agreement for TLSv1.3 and Hybrid key exchange in TLS 1.3:
enum { SecP256r1MLKEM768(0x11EB), X25519MLKEM768(0x11EC) } NamedGroup;
SupportedGroups
Constructor and Description |
---|
NamedGroup(java.lang.String name,
int id)
Creates a group with the given name, oid string and id.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Gets a clone of this NamedGroup object.
|
boolean |
equals(java.lang.Object obj)
Checks if this NamedGroup is equal to the given object.
|
int |
getID()
Gets the TLS id of this group.
|
java.lang.String |
getName()
Gets the name of the group.
|
int |
hashCode()
Gets a hash code of this NamedGroup object.
|
java.lang.String |
toString()
Gets a String representation of this NamedGroup.
|
public NamedGroup(java.lang.String name, int id)
name
- the name of the groupid
- the TLS id of the groupjava.lang.IllegalArgumentException
- if the given TLS id is out-of-range (not between 1 and
216-1); or name
is null
public java.lang.String getName()
public int getID()
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
true
if this NamedGroup is equal to the given object
(same group id), false
if it is not equal to itpublic java.lang.Object clone()
clone
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object