Register AesEaxProtoSerialization.
PiperOrigin-RevId: 494679418
Change-Id: Ibe60ce69a333c7a7c1c59a64e7c56cf03ad3497d
diff --git a/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java b/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java
index 560ad3c..1c75607 100644
--- a/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java
+++ b/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java
@@ -126,6 +126,7 @@
public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
Registry.registerKeyManager(new AesEaxKeyManager(), newKeyAllowed);
+ AesEaxProtoSerialization.register();
}
/**
diff --git a/src/main/java/com/google/crypto/tink/aead/AesEaxProtoSerialization.java b/src/main/java/com/google/crypto/tink/aead/AesEaxProtoSerialization.java
index 7ace17b..4cf4a8f 100644
--- a/src/main/java/com/google/crypto/tink/aead/AesEaxProtoSerialization.java
+++ b/src/main/java/com/google/crypto/tink/aead/AesEaxProtoSerialization.java
@@ -85,7 +85,9 @@
switch (outputPrefixType) {
case TINK:
return AesEaxParameters.Variant.TINK;
+ /** Parse LEGACY prefix to CRUNCHY, since they act the same for this type of key */
case CRUNCHY:
+ case LEGACY:
return AesEaxParameters.Variant.CRUNCHY;
case RAW:
return AesEaxParameters.Variant.NO_PREFIX;
diff --git a/src/main/java/com/google/crypto/tink/aead/BUILD.bazel b/src/main/java/com/google/crypto/tink/aead/BUILD.bazel
index 3f2e263..00b1af2 100644
--- a/src/main/java/com/google/crypto/tink/aead/BUILD.bazel
+++ b/src/main/java/com/google/crypto/tink/aead/BUILD.bazel
@@ -221,6 +221,7 @@
name = "aes_eax_key_manager",
srcs = ["AesEaxKeyManager.java"],
deps = [
+ ":aes_eax_proto_serialization",
"//proto:aes_eax_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:aead",
@@ -543,6 +544,7 @@
name = "aes_eax_key_manager-android",
srcs = ["AesEaxKeyManager.java"],
deps = [
+ ":aes_eax_proto_serialization-android",
"//proto:aes_eax_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:aead-android",
diff --git a/src/test/java/com/google/crypto/tink/aead/AesEaxProtoSerializationTest.java b/src/test/java/com/google/crypto/tink/aead/AesEaxProtoSerializationTest.java
index a436c88..93c8248 100644
--- a/src/test/java/com/google/crypto/tink/aead/AesEaxProtoSerializationTest.java
+++ b/src/test/java/com/google/crypto/tink/aead/AesEaxProtoSerializationTest.java
@@ -300,6 +300,26 @@
}
@Test
+ public void parseKey_legacy() throws Exception {
+ ProtoKeySerialization serialization =
+ ProtoKeySerialization.create(
+ TYPE_URL,
+ com.google.crypto.tink.proto.AesEaxKey.newBuilder()
+ .setVersion(0)
+ .setKeyValue(KEY_BYTES_16_AS_BYTE_STRING)
+ .setParams(AesEaxParams.newBuilder().setIvSize(16))
+ .build()
+ .toByteString(),
+ KeyMaterialType.SYMMETRIC,
+ OutputPrefixType.LEGACY,
+ 1479);
+ // Legacy keys are parsed to crunchy
+ Key parsed = registry.parseKey(serialization, InsecureSecretKeyAccess.get());
+ assertThat(((AesEaxParameters) parsed.getParameters()).getVariant())
+ .isEqualTo(AesEaxParameters.Variant.CRUNCHY);
+ }
+
+ @Test
public void testSerializeKeys_noAccess_throws() throws Exception {
AesEaxParameters parameters =
AesEaxParameters.builder()
@@ -408,18 +428,6 @@
KeyMaterialType.SYMMETRIC,
OutputPrefixType.TINK,
1479),
- // Legacy prefix
- ProtoKeySerialization.create(
- TYPE_URL,
- com.google.crypto.tink.proto.AesEaxKey.newBuilder()
- .setVersion(0)
- .setKeyValue(KEY_BYTES_16_AS_BYTE_STRING)
- .setParams(AesEaxParams.newBuilder().setIvSize(16))
- .build()
- .toByteString(),
- KeyMaterialType.SYMMETRIC,
- OutputPrefixType.LEGACY,
- 1479),
};
} catch (GeneralSecurityException e) {
throw new RuntimeException(e);