© Enkel/Shutterstock.com
Diese JEPs sind Teil des JDKs

Java 15


JEP339.tif_fmt1.png

JEP 339 – Edwards-curve Digital Signature Algorithm (EdDSA)

Im Jahr 2007 wurden von Harold Edwards, seines Zeichens amerikanischer Mathematiker, Mathematikhistoriker und bis zu seinem Ruhestand Professor an der New York University, die sogenannten Edwards-Kurven vorgestellt. Diese elliptischen Kurven werden im Bereich der Elliptic Curve Cryptography eingesetzt. Der EdDSA ist nun ein modernes und performanteres Signaturschema, das deutliche Vorteile gegenüber dem im JDK implementierten Schema haben soll. Im RFC 8032 sind sämtliche Details zu dem Schema enthalten, das allerdings nicht das herkömmliche ECDSA (Elliptic Curve Digital Signature Algorithm) ersetzt.

Die neuen Services Signature, KeyFactory und KeyPairGenerator wurden für die Unterstützung von EdDSA dem SunEC-Provider hinzugefügt; neue Klassen und Interfaces sind entsprechend für die Repräsentation im API vorhanden. Wiederverwendet wird hingegen die Klasse NamedParameterSpec, die einst für XDH (JEP 324) entwickelt wurde, um EdDSA-Varianten und Kurvendomänenparameter zu beschreiben. Für Edwards-Kurvenpunkte, EdDSA-Schlüssel und Signaturparameter wurden neue Klassen und Interfaces entwickelt. Für die Nutzung des API gibt JEP 339 das in Listing 1 gezeigte Beispiel.

Listing 1

// example: generate a key pair and sign KeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed25519"); KeyPair kp = kpg.generateKeyPair(); // algorithm is pure Ed25519 Signature sig = Signature.getInstance("Ed25519"); sig.initSign(kp.getPrivate()); sig.update(msg); byte[] s = sig.sign(); // example: use KeyFactory to contruct a public key KeyFactory kf = KeyFactory.getInstance("EdDSA"); boolean xOdd = ... BigInteger y = ... NamedParameterSpec paramSpec = new NamedParameterSpec("Ed25519"); EdECPublicKeySpec pubSpec = new EdECPublicKeySpec(paramSpec, new EdPoint(xOdd, y)); PublicKey pubKey = kf.generatePublic(pubSpec);
JEP360.tif_fmt1.png

JEP 360 – Sealed Classes (Preview)

Aus Projekt Amber kommen Sealed Classes als Preview Feature ins JDK. „Versiegelte Klassen“, also Sealed Classes, haben eine stark eingeschränkte Subclassing-Fähigkeit, die in der entsprechenden Klassendeklaration definiert wird. Zunächst wird der Deklaration der Modifikator sealed hinzugefügt, um das Feature zu aktivieren. Anschließend wird via permits-Klausel spezifiziert, welche Klassen die versiegelte Klasse erweitern dürfen:

package com.example.geometry; public sealed class Shape permits Circle, Rectangle, Square {...}

Das funktioniert übrigens auch mit abstrakten Klassen ...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang