aboutsummaryrefslogtreecommitdiffstats
path: root/security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-10-19 12:40:34 +0200
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-10-19 12:40:34 +0200
commit82c8d614762c3e4bb0abc14148a1fba1ca3182e5 (patch)
treebcbd539039e4e0b3ed4c35f41959eecb54994fbd /security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java
parent9bd0a86bba6280aded2ff575ba095a446d6aa4e7 (diff)
Add X25519 private to public key extraction and use for HPKE opening
Avoids the need to pass the full key pair when opening a sealed piece of ciphertext, since we can just extract the public key on-demand. Uses BouncyCastle X25519 utils under the hood.
Diffstat (limited to 'security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java')
-rw-r--r--security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java9
1 files changed, 2 insertions, 7 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java b/security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java
index 430a9d57097..8f6dffcb9c2 100644
--- a/security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java
+++ b/security-utils/src/main/java/com/yahoo/security/hpke/DHKemX25519HkdfSha256.java
@@ -118,18 +118,13 @@ final class DHKemX25519HkdfSha256 implements Kem {
* shared_secret = ExtractAndExpand(dh, kem_context)
* return shared_secret
* </pre>
- *
- * Implementation note: we take in the key pair to avoid needing to compute the public key (TODO!)
*/
@Override
- public byte[] decap(byte[] enc, KeyPair kpR) {
+ public byte[] decap(byte[] enc, XECPrivateKey skR) {
var pkE = deserializePublicKey(enc);
-
- var skR = (XECPrivateKey)kpR.getPrivate();
- var pkR = (XECPublicKey)kpR.getPublic();
byte[] dh = KeyUtils.ecdh(skR, pkE);
- byte[] pkRm = serializePublicKey(pkR);
+ byte[] pkRm = serializePublicKey(KeyUtils.extractX25519PublicKey(skR));
byte[] kemContext = concat(enc, pkRm);
return extractAndExpand(dh, kemContext);