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);