Skip to content

Commit c8b1aad

Browse files
tholenstcopybara-github
authored andcommitted
Small HPKE cleanups.
PiperOrigin-RevId: 734141049 Change-Id: Ibfcfd48bee48eb9624df6b15f9f512a6b32cee5f
1 parent b7a3acd commit c8b1aad

File tree

3 files changed

+10
-63
lines changed

3 files changed

+10
-63
lines changed

src/main/java/com/google/crypto/tink/hybrid/internal/BUILD.bazel

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ java_library(
6868
deps = [
6969
":hpke_aead",
7070
":hpke_context",
71-
":hpke_encrypt",
7271
":hpke_kdf",
7372
":hpke_kem",
7473
":hpke_kem_private_key",
74+
":hpke_primitive_factory",
7575
"//src/main/java/com/google/crypto/tink:accesses_partial_key",
7676
"//src/main/java/com/google/crypto/tink:hybrid_decrypt",
7777
"//src/main/java/com/google/crypto/tink:insecure_secret_key_access",
@@ -87,20 +87,15 @@ java_library(
8787
name = "hpke_encrypt",
8888
srcs = ["HpkeEncrypt.java"],
8989
deps = [
90-
":aes_gcm_hpke_aead",
91-
":chacha20_poly1305_hpke_aead",
92-
":hkdf_hpke_kdf",
9390
":hpke_aead",
9491
":hpke_context",
9592
":hpke_kdf",
9693
":hpke_kem",
97-
":nist_curves_hpke_kem",
98-
":x25519_hpke_kem",
94+
":hpke_primitive_factory",
9995
"//src/main/java/com/google/crypto/tink:accesses_partial_key",
10096
"//src/main/java/com/google/crypto/tink:hybrid_encrypt",
10197
"//src/main/java/com/google/crypto/tink/hybrid:hpke_parameters",
10298
"//src/main/java/com/google/crypto/tink/hybrid:hpke_public_key",
103-
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
10499
"//src/main/java/com/google/crypto/tink/util:bytes",
105100
"@maven//:com_google_errorprone_error_prone_annotations",
106101
],
@@ -336,10 +331,10 @@ android_library(
336331
deps = [
337332
":hpke_aead-android",
338333
":hpke_context-android",
339-
":hpke_encrypt-android",
340334
":hpke_kdf-android",
341335
":hpke_kem-android",
342336
":hpke_kem_private_key-android",
337+
":hpke_primitive_factory-android",
343338
"//src/main/java/com/google/crypto/tink:accesses_partial_key-android",
344339
"//src/main/java/com/google/crypto/tink:hybrid_decrypt-android",
345340
"//src/main/java/com/google/crypto/tink:insecure_secret_key_access-android",
@@ -355,20 +350,15 @@ android_library(
355350
name = "hpke_encrypt-android",
356351
srcs = ["HpkeEncrypt.java"],
357352
deps = [
358-
":aes_gcm_hpke_aead-android",
359-
":chacha20_poly1305_hpke_aead-android",
360-
":hkdf_hpke_kdf-android",
361353
":hpke_aead-android",
362354
":hpke_context-android",
363355
":hpke_kdf-android",
364356
":hpke_kem-android",
365-
":nist_curves_hpke_kem-android",
366-
":x25519_hpke_kem-android",
357+
":hpke_primitive_factory-android",
367358
"//src/main/java/com/google/crypto/tink:accesses_partial_key-android",
368359
"//src/main/java/com/google/crypto/tink:hybrid_encrypt-android",
369360
"//src/main/java/com/google/crypto/tink/hybrid:hpke_parameters-android",
370361
"//src/main/java/com/google/crypto/tink/hybrid:hpke_public_key-android",
371-
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves-android",
372362
"//src/main/java/com/google/crypto/tink/util:bytes-android",
373363
"@maven//:com_google_errorprone_error_prone_annotations",
374364
],

src/main/java/com/google/crypto/tink/hybrid/internal/HpkeDecrypt.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ private static HpkeKemPrivateKey createHpkeKemPrivateKey(HpkePrivateKey privateK
9797

9898
public static HybridDecrypt create(HpkePrivateKey privateKey) throws GeneralSecurityException {
9999
HpkeParameters parameters = privateKey.getParameters();
100-
HpkeKem kem = HpkeEncrypt.createKem(parameters.getKemId());
101-
HpkeKdf kdf = HpkeEncrypt.createKdf(parameters.getKdfId());
102-
HpkeAead aead = HpkeEncrypt.createAead(parameters.getAeadId());
100+
HpkeKem kem = HpkePrimitiveFactory.createKem(parameters.getKemId());
101+
HpkeKdf kdf = HpkePrimitiveFactory.createKdf(parameters.getKdfId());
102+
HpkeAead aead = HpkePrimitiveFactory.createAead(parameters.getAeadId());
103103
int encapsulatedKeyLength = encodingSizeInBytes(parameters.getKemId());
104104
HpkeKemPrivateKey recipientKemPrivateKey = createHpkeKemPrivateKey(privateKey);
105105
return new HpkeDecrypt(

src/main/java/com/google/crypto/tink/hybrid/internal/HpkeEncrypt.java

Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.google.crypto.tink.HybridEncrypt;
2121
import com.google.crypto.tink.hybrid.HpkeParameters;
2222
import com.google.crypto.tink.hybrid.HpkePublicKey;
23-
import com.google.crypto.tink.subtle.EllipticCurves;
2423
import com.google.crypto.tink.util.Bytes;
2524
import com.google.errorprone.annotations.Immutable;
2625
import java.security.GeneralSecurityException;
@@ -58,54 +57,12 @@ public static HybridEncrypt create(HpkePublicKey key) throws GeneralSecurityExce
5857
HpkeParameters parameters = key.getParameters();
5958
return new HpkeEncrypt(
6059
key.getPublicKeyBytes(),
61-
createKem(parameters.getKemId()),
62-
createKdf(parameters.getKdfId()),
63-
createAead(parameters.getAeadId()),
60+
HpkePrimitiveFactory.createKem(parameters.getKemId()),
61+
HpkePrimitiveFactory.createKdf(parameters.getKdfId()),
62+
HpkePrimitiveFactory.createAead(parameters.getAeadId()),
6463
key.getOutputPrefix());
6564
}
6665

67-
static HpkeKem createKem(HpkeParameters.KemId kemId) throws GeneralSecurityException {
68-
if (kemId.equals(HpkeParameters.KemId.DHKEM_X25519_HKDF_SHA256)) {
69-
return new X25519HpkeKem(new HkdfHpkeKdf("HmacSha256"));
70-
}
71-
if (kemId.equals(HpkeParameters.KemId.DHKEM_P256_HKDF_SHA256)) {
72-
return NistCurvesHpkeKem.fromCurve(EllipticCurves.CurveType.NIST_P256);
73-
}
74-
if (kemId.equals(HpkeParameters.KemId.DHKEM_P384_HKDF_SHA384)) {
75-
return NistCurvesHpkeKem.fromCurve(EllipticCurves.CurveType.NIST_P384);
76-
}
77-
if (kemId.equals(HpkeParameters.KemId.DHKEM_P521_HKDF_SHA512)) {
78-
return NistCurvesHpkeKem.fromCurve(EllipticCurves.CurveType.NIST_P521);
79-
}
80-
throw new GeneralSecurityException("Unrecognized HPKE KEM identifier");
81-
}
82-
83-
static HpkeKdf createKdf(HpkeParameters.KdfId kdfId) throws GeneralSecurityException {
84-
if (kdfId.equals(HpkeParameters.KdfId.HKDF_SHA256)) {
85-
return new HkdfHpkeKdf("HmacSha256");
86-
}
87-
if (kdfId.equals(HpkeParameters.KdfId.HKDF_SHA384)) {
88-
return new HkdfHpkeKdf("HmacSha384");
89-
}
90-
if (kdfId.equals(HpkeParameters.KdfId.HKDF_SHA512)) {
91-
return new HkdfHpkeKdf("HmacSha512");
92-
}
93-
throw new GeneralSecurityException("Unrecognized HPKE KDF identifier");
94-
}
95-
96-
static HpkeAead createAead(HpkeParameters.AeadId aeadId) throws GeneralSecurityException {
97-
if (aeadId.equals(HpkeParameters.AeadId.AES_128_GCM)) {
98-
return new AesGcmHpkeAead(16);
99-
}
100-
if (aeadId.equals(HpkeParameters.AeadId.AES_256_GCM)) {
101-
return new AesGcmHpkeAead(32);
102-
}
103-
if (aeadId.equals(HpkeParameters.AeadId.CHACHA20_POLY1305)) {
104-
return new ChaCha20Poly1305HpkeAead();
105-
}
106-
throw new GeneralSecurityException("Unrecognized HPKE AEAD identifier");
107-
}
108-
10966
@Override
11067
public byte[] encrypt(final byte[] plaintext, final byte[] contextInfo)
11168
throws GeneralSecurityException {

0 commit comments

Comments
 (0)