Skip to content

Commit 633eff2

Browse files
tholenstcopybara-github
authored andcommitted
Add another test based on the vectors in HpkeTestUtil.
PiperOrigin-RevId: 761524443 Change-Id: Ib9e68fc9de1db13bf8505b4de0f6bbad638fd2c1
1 parent 7781039 commit 633eff2

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

src/main/java/com/google/crypto/tink/hybrid/internal/testing/HpkeTestUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private static SecretBytes getX25519PrivateKeyAsBytes() {
119119
InsecureSecretKeyAccess.get());
120120
}
121121

122-
private static HybridTestVector createTestVector0() throws GeneralSecurityException {
122+
public static HybridTestVector createTestVector0() throws GeneralSecurityException {
123123
HpkeParameters params =
124124
HpkeParameters.builder()
125125
.setVariant(HpkeParameters.Variant.NO_PREFIX)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,11 @@ java_test(
362362
srcs = ["HpkeHelperForAndroidKeystoreTest.java"],
363363
deps = [
364364
"//src/main/java/com/google/crypto/tink/hybrid:hpke_parameters",
365+
"//src/main/java/com/google/crypto/tink/hybrid:hpke_private_key",
365366
"//src/main/java/com/google/crypto/tink/hybrid:hpke_public_key",
366367
"//src/main/java/com/google/crypto/tink/hybrid/internal:hpke_helper_for_android_keystore",
368+
"//src/main/java/com/google/crypto/tink/hybrid/internal/testing:hpke_test_util",
369+
"//src/main/java/com/google/crypto/tink/hybrid/internal/testing:hybrid_test_vector",
367370
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
368371
"//src/main/java/com/google/crypto/tink/subtle:hex",
369372
"//src/main/java/com/google/crypto/tink/util:bytes",

src/test/java/com/google/crypto/tink/hybrid/internal/HpkeHelperForAndroidKeystoreTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
import static org.junit.Assert.assertThrows;
2121

2222
import com.google.crypto.tink.hybrid.HpkeParameters;
23+
import com.google.crypto.tink.hybrid.HpkePrivateKey;
2324
import com.google.crypto.tink.hybrid.HpkePublicKey;
25+
import com.google.crypto.tink.hybrid.internal.testing.HpkeTestUtil;
26+
import com.google.crypto.tink.hybrid.internal.testing.HybridTestVector;
2427
import com.google.crypto.tink.subtle.EllipticCurves;
2528
import com.google.crypto.tink.subtle.EllipticCurves.CurveType;
2629
import com.google.crypto.tink.subtle.EllipticCurves.PointFormatType;
@@ -29,6 +32,7 @@
2932
import java.math.BigInteger;
3033
import java.security.GeneralSecurityException;
3134
import java.security.spec.ECPoint;
35+
import java.util.Arrays;
3236
import org.junit.Test;
3337
import org.junit.runner.RunWith;
3438
import org.junit.runners.JUnit4;
@@ -39,6 +43,32 @@ public final class HpkeHelperForAndroidKeystoreTest {
3943
@Test
4044
public void decryptUnauthenticatedWithEncapsulatedKeyAndP256SharedSecret_success()
4145
throws Exception {
46+
HybridTestVector vector = HpkeTestUtil.createTestVector0();
47+
HpkePrivateKey privateKey = (HpkePrivateKey) vector.getPrivateKey();
48+
// The shared secret is needed for decryption with
49+
// decryptUnauthenticatedWithEncapsulatedKeyAndP256SharedSecret -- we logged it to enable this
50+
// code.
51+
byte[] dhSharedSecret =
52+
Hex.decode("c47e13b026cac2b065b83c5985cc03f683382ed027448b3432fa51d34e54f7e6");
53+
54+
// Variant NO_PREFIX, DHKEM_P256_HKDF_SHA256 -> the first 65 bytes are the encapsulated key.
55+
byte[] encapsulatedKey = Arrays.copyOf(vector.getCiphertext(), 65);
56+
HpkeHelperForAndroidKeystore helper =
57+
HpkeHelperForAndroidKeystore.create(privateKey.getPublicKey());
58+
assertThat(
59+
helper.decryptUnauthenticatedWithEncapsulatedKeyAndP256SharedSecret(
60+
encapsulatedKey,
61+
dhSharedSecret,
62+
vector.getCiphertext(),
63+
65,
64+
vector.getContextInfo()))
65+
.isEqualTo(vector.getPlaintext());
66+
}
67+
68+
/** A second test with a test vector. Here only due to history (and it doesn't seem to hurt). */
69+
@Test
70+
public void decryptUnauthenticatedWithEncapsulatedKeyAndP256SharedSecret_testVector2_success()
71+
throws Exception {
4272
HpkeParameters params =
4373
HpkeParameters.builder()
4474
.setVariant(HpkeParameters.Variant.NO_PREFIX)

0 commit comments

Comments
 (0)