[API] Expose IkeExceptions to public

As required by API Council in b/148596690, IKE API should be
public because IKE library runs in the client process and it
is not feasible to restrict the code with permissions. In
addition, VCN also requires part of IKE API to be public for
configuring IKE and Child Sessions.

Test: FrameworksIkeTests, CtsIkeTestCases
Bug: 151984042
Change-Id: Ibfa56428e9899ebe4c73fb47f275d95225f86cd4
diff --git a/Android.bp b/Android.bp
index 607a723..3ac8f3e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -40,6 +40,7 @@
         "android.net.eap",
         "android.net.ipsec.ike",
         "android.net.ipsec.ike.exceptions",
+        "android.net.ipsec.ike.exceptions.protocol",
         "android.net.ipsec.ike.ike3gpp",
     ],
 
diff --git a/api/current.txt b/api/current.txt
index d802177..340ed6e 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -1 +1,113 @@
 // Signature format: 2.0
+package android.net.ipsec.ike.exceptions {
+
+  public final class AuthenticationFailedException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public AuthenticationFailedException(@NonNull String);
+    ctor public AuthenticationFailedException(@NonNull Throwable);
+  }
+
+  public final class ChildSaNotFoundException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public ChildSaNotFoundException(int);
+    method public int getIpSecSpi();
+  }
+
+  public final class FailedCpRequiredException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public FailedCpRequiredException();
+  }
+
+  public abstract class IkeException extends java.lang.Exception {
+  }
+
+  public final class IkeInternalException extends android.net.ipsec.ike.exceptions.IkeException {
+    ctor public IkeInternalException(@NonNull Throwable);
+    ctor public IkeInternalException(@NonNull String, @NonNull Throwable);
+  }
+
+  public abstract class IkeProtocolException extends android.net.ipsec.ike.exceptions.IkeException {
+    method public int getErrorType();
+    field public static final int ERROR_TYPE_AUTHENTICATION_FAILED = 24; // 0x18
+    field public static final int ERROR_TYPE_CHILD_SA_NOT_FOUND = 44; // 0x2c
+    field public static final int ERROR_TYPE_FAILED_CP_REQUIRED = 37; // 0x25
+    field public static final int ERROR_TYPE_INTERNAL_ADDRESS_FAILURE = 36; // 0x24
+    field public static final int ERROR_TYPE_INVALID_IKE_SPI = 4; // 0x4
+    field public static final int ERROR_TYPE_INVALID_KE_PAYLOAD = 17; // 0x11
+    field public static final int ERROR_TYPE_INVALID_MAJOR_VERSION = 5; // 0x5
+    field public static final int ERROR_TYPE_INVALID_MESSAGE_ID = 9; // 0x9
+    field public static final int ERROR_TYPE_INVALID_SELECTORS = 39; // 0x27
+    field public static final int ERROR_TYPE_INVALID_SYNTAX = 7; // 0x7
+    field public static final int ERROR_TYPE_NO_ADDITIONAL_SAS = 35; // 0x23
+    field public static final int ERROR_TYPE_NO_PROPOSAL_CHOSEN = 14; // 0xe
+    field public static final int ERROR_TYPE_SINGLE_PAIR_REQUIRED = 34; // 0x22
+    field public static final int ERROR_TYPE_TEMPORARY_FAILURE = 43; // 0x2b
+    field public static final int ERROR_TYPE_TS_UNACCEPTABLE = 38; // 0x26
+    field public static final int ERROR_TYPE_UNSUPPORTED_CRITICAL_PAYLOAD = 1; // 0x1
+  }
+
+  public final class InternalAddressFailureException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InternalAddressFailureException();
+  }
+
+  public final class InvalidIkeSpiException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InvalidIkeSpiException();
+  }
+
+  public final class InvalidKeException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InvalidKeException(int);
+    method public int getDhGroup();
+  }
+
+  public final class InvalidMajorVersionException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InvalidMajorVersionException(byte);
+    method public byte getMajorVersion();
+  }
+
+  public final class InvalidMessageIdException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InvalidMessageIdException(int);
+    method public int getMessageId();
+  }
+
+  public final class InvalidSelectorsException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InvalidSelectorsException(int, @NonNull byte[]);
+    method @NonNull public byte[] getIpSecPacketInfo();
+    method public int getIpSecSpi();
+  }
+
+  public final class InvalidSyntaxException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public InvalidSyntaxException(@NonNull String);
+    ctor public InvalidSyntaxException(@NonNull Throwable);
+    ctor public InvalidSyntaxException(@NonNull String, @NonNull Throwable);
+  }
+
+  public final class NoAdditionalSasException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public NoAdditionalSasException();
+  }
+
+  public final class NoValidProposalChosenException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public NoValidProposalChosenException(@NonNull String);
+    ctor public NoValidProposalChosenException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class SinglePairRequiredException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public SinglePairRequiredException();
+  }
+
+  public final class TemporaryFailureException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public TemporaryFailureException(@NonNull String);
+  }
+
+  public final class TsUnacceptableException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public TsUnacceptableException();
+  }
+
+  public final class UnrecognizedIkeProtocolException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public UnrecognizedIkeProtocolException(int, @NonNull byte[]);
+    method @NonNull public byte[] getUnrecognizedErrorData();
+  }
+
+  public final class UnsupportedCriticalPayloadException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
+    ctor public UnsupportedCriticalPayloadException(@NonNull java.util.List<java.lang.Integer>);
+    method @NonNull public java.util.List<java.lang.Integer> getUnsupportedCriticalPayloadList();
+  }
+
+}
+
diff --git a/api/system-current.txt b/api/system-current.txt
index 3ff654b..d5d3a89 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -334,31 +334,8 @@
 
 package android.net.ipsec.ike.exceptions {
 
-  public abstract class IkeException extends java.lang.Exception {
-  }
-
-  public final class IkeInternalException extends android.net.ipsec.ike.exceptions.IkeException {
-  }
-
   public abstract class IkeProtocolException extends android.net.ipsec.ike.exceptions.IkeException {
     method @Nullable public byte[] getErrorData();
-    method public int getErrorType();
-    field public static final int ERROR_TYPE_AUTHENTICATION_FAILED = 24; // 0x18
-    field public static final int ERROR_TYPE_CHILD_SA_NOT_FOUND = 44; // 0x2c
-    field public static final int ERROR_TYPE_FAILED_CP_REQUIRED = 37; // 0x25
-    field public static final int ERROR_TYPE_INTERNAL_ADDRESS_FAILURE = 36; // 0x24
-    field public static final int ERROR_TYPE_INVALID_IKE_SPI = 4; // 0x4
-    field public static final int ERROR_TYPE_INVALID_KE_PAYLOAD = 17; // 0x11
-    field public static final int ERROR_TYPE_INVALID_MAJOR_VERSION = 5; // 0x5
-    field public static final int ERROR_TYPE_INVALID_MESSAGE_ID = 9; // 0x9
-    field public static final int ERROR_TYPE_INVALID_SELECTORS = 39; // 0x27
-    field public static final int ERROR_TYPE_INVALID_SYNTAX = 7; // 0x7
-    field public static final int ERROR_TYPE_NO_ADDITIONAL_SAS = 35; // 0x23
-    field public static final int ERROR_TYPE_NO_PROPOSAL_CHOSEN = 14; // 0xe
-    field public static final int ERROR_TYPE_SINGLE_PAIR_REQUIRED = 34; // 0x22
-    field public static final int ERROR_TYPE_TEMPORARY_FAILURE = 43; // 0x2b
-    field public static final int ERROR_TYPE_TS_UNACCEPTABLE = 38; // 0x26
-    field public static final int ERROR_TYPE_UNSUPPORTED_CRITICAL_PAYLOAD = 1; // 0x1
   }
 
 }
diff --git a/src/java/android/net/ipsec/ike/exceptions/AuthenticationFailedException.java b/src/java/android/net/ipsec/ike/exceptions/AuthenticationFailedException.java
index c419f91..1e93ee6 100644
--- a/src/java/android/net/ipsec/ike/exceptions/AuthenticationFailedException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/AuthenticationFailedException.java
@@ -22,7 +22,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.21.2">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class AuthenticationFailedException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/ChildSaNotFoundException.java b/src/java/android/net/ipsec/ike/exceptions/ChildSaNotFoundException.java
index 0259463..6a549ac 100644
--- a/src/java/android/net/ipsec/ike/exceptions/ChildSaNotFoundException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/ChildSaNotFoundException.java
@@ -23,7 +23,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.25">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class ChildSaNotFoundException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/FailedCpRequiredException.java b/src/java/android/net/ipsec/ike/exceptions/FailedCpRequiredException.java
index 92fbc56..dae882c 100644
--- a/src/java/android/net/ipsec/ike/exceptions/FailedCpRequiredException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/FailedCpRequiredException.java
@@ -24,7 +24,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.19">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class FailedCpRequiredException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/IkeException.java b/src/java/android/net/ipsec/ike/exceptions/IkeException.java
index fae5f61..b86b4a6 100644
--- a/src/java/android/net/ipsec/ike/exceptions/IkeException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/IkeException.java
@@ -15,14 +15,9 @@
  */
 package android.net.ipsec.ike.exceptions;
 
-import android.annotation.SystemApi;
-
 /**
  * IkeException represents a generic exception that includes internal and protocol exceptions.
- *
- * @hide
  */
-@SystemApi
 public abstract class IkeException extends Exception {
     /** @hide */
     protected IkeException() {
diff --git a/src/java/android/net/ipsec/ike/exceptions/IkeInternalException.java b/src/java/android/net/ipsec/ike/exceptions/IkeInternalException.java
index 85760df..aaa69e4 100644
--- a/src/java/android/net/ipsec/ike/exceptions/IkeInternalException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/IkeInternalException.java
@@ -16,17 +16,13 @@
 package android.net.ipsec.ike.exceptions;
 
 import android.annotation.NonNull;
-import android.annotation.SystemApi;
 
 /**
  * IkeInternalException encapsulates all local implementation or resource related exceptions.
  *
  * <p>Causes may include exceptions such as {@link IpSecManager.SpiUnavailableException} when the
  * requested SPI resources failed to be allocated.
- *
- * @hide
  */
-@SystemApi
 public final class IkeInternalException extends IkeException {
     /**
      * Constructs a new exception with the specified cause.
@@ -36,7 +32,6 @@
      *
      * @param cause the cause (which is saved for later retrieval by the {@link #getCause()}
      *     method).
-     * @hide
      */
     public IkeInternalException(@NonNull Throwable cause) {
         super(cause);
@@ -52,7 +47,6 @@
      *     #getMessage()} method).
      * @param cause the cause (which is saved for later retrieval by the {@link #getCause()}
      *     method).
-     * @hide
      */
     public IkeInternalException(@NonNull String message, @NonNull Throwable cause) {
         super(message, cause);
diff --git a/src/java/android/net/ipsec/ike/exceptions/IkeProtocolException.java b/src/java/android/net/ipsec/ike/exceptions/IkeProtocolException.java
index 812b270..9364558 100644
--- a/src/java/android/net/ipsec/ike/exceptions/IkeProtocolException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/IkeProtocolException.java
@@ -33,9 +33,7 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-3.10.1">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
-@SystemApi
 public abstract class IkeProtocolException extends IkeException {
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
diff --git a/src/java/android/net/ipsec/ike/exceptions/InternalAddressFailureException.java b/src/java/android/net/ipsec/ike/exceptions/InternalAddressFailureException.java
index b89c310..bd95ce1 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InternalAddressFailureException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InternalAddressFailureException.java
@@ -23,7 +23,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-3.15.4">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class InternalAddressFailureException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/InvalidIkeSpiException.java b/src/java/android/net/ipsec/ike/exceptions/InvalidIkeSpiException.java
index 3ec94d7..0a2dd0c 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InvalidIkeSpiException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InvalidIkeSpiException.java
@@ -23,7 +23,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.21">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class InvalidIkeSpiException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/InvalidKeException.java b/src/java/android/net/ipsec/ike/exceptions/InvalidKeException.java
index 2d69627..d58abca 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InvalidKeException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InvalidKeException.java
@@ -24,7 +24,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-1.3">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // Responder should include an INVALID_KE_PAYLOAD Notify payload in a response message for both
 // IKE INIT exchange and other SA negotiation exchanges after IKE is setup, as per RFC 7296
diff --git a/src/java/android/net/ipsec/ike/exceptions/InvalidMajorVersionException.java b/src/java/android/net/ipsec/ike/exceptions/InvalidMajorVersionException.java
index d8296ac..25eb20d 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InvalidMajorVersionException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InvalidMajorVersionException.java
@@ -22,7 +22,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.5">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // Include INVALID_MAJOR_VERSION Notify payload in an unencrypted response message containing
 // version number 2.
diff --git a/src/java/android/net/ipsec/ike/exceptions/InvalidMessageIdException.java b/src/java/android/net/ipsec/ike/exceptions/InvalidMessageIdException.java
index f65b5b6..5d95336 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InvalidMessageIdException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InvalidMessageIdException.java
@@ -20,7 +20,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.3">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // Notifications based on this exception contains the four-octet invalid message ID. It MUST only
 // ever be sent in an INFORMATIONAL request. Sending this notification is OPTIONAL, and
diff --git a/src/java/android/net/ipsec/ike/exceptions/InvalidSelectorsException.java b/src/java/android/net/ipsec/ike/exceptions/InvalidSelectorsException.java
index 8e1b541..ad83d3d 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InvalidSelectorsException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InvalidSelectorsException.java
@@ -29,7 +29,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-3.10.1">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class InvalidSelectorsException extends IkeProtocolException {
     // Minimum IP header length plus 64 bits
diff --git a/src/java/android/net/ipsec/ike/exceptions/InvalidSyntaxException.java b/src/java/android/net/ipsec/ike/exceptions/InvalidSyntaxException.java
index d7e5d4f..864a9d6 100644
--- a/src/java/android/net/ipsec/ike/exceptions/InvalidSyntaxException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/InvalidSyntaxException.java
@@ -25,7 +25,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-3.10.1">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // Include INVALID_SYNTAX Notify payload in an encrypted response message if current message is
 // an encrypted request and cryptographic checksum is valid. Fatal error.
diff --git a/src/java/android/net/ipsec/ike/exceptions/NoAdditionalSasException.java b/src/java/android/net/ipsec/ike/exceptions/NoAdditionalSasException.java
index 9302741..8a4383f 100644
--- a/src/java/android/net/ipsec/ike/exceptions/NoAdditionalSasException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/NoAdditionalSasException.java
@@ -23,7 +23,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-1.3">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class NoAdditionalSasException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/NoValidProposalChosenException.java b/src/java/android/net/ipsec/ike/exceptions/NoValidProposalChosenException.java
index d26de18..313e6ce 100644
--- a/src/java/android/net/ipsec/ike/exceptions/NoValidProposalChosenException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/NoValidProposalChosenException.java
@@ -25,7 +25,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.7">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // Include the NO_PROPOSAL_CHOSEN Notify payload in an encrypted response message if received
 // message is an encrypted request from SA initiator.
diff --git a/src/java/android/net/ipsec/ike/exceptions/SinglePairRequiredException.java b/src/java/android/net/ipsec/ike/exceptions/SinglePairRequiredException.java
index 81cadba..6d9792f 100644
--- a/src/java/android/net/ipsec/ike/exceptions/SinglePairRequiredException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/SinglePairRequiredException.java
@@ -24,7 +24,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.9">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public class SinglePairRequiredException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/TemporaryFailureException.java b/src/java/android/net/ipsec/ike/exceptions/TemporaryFailureException.java
index 56d46d6..ee1c93c 100644
--- a/src/java/android/net/ipsec/ike/exceptions/TemporaryFailureException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/TemporaryFailureException.java
@@ -25,7 +25,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.7">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 public final class TemporaryFailureException extends IkeProtocolException {
     private static final int EXPECTED_ERROR_DATA_LEN = 0;
diff --git a/src/java/android/net/ipsec/ike/exceptions/TsUnacceptableException.java b/src/java/android/net/ipsec/ike/exceptions/TsUnacceptableException.java
index f801d69..0486d3d 100644
--- a/src/java/android/net/ipsec/ike/exceptions/TsUnacceptableException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/TsUnacceptableException.java
@@ -20,8 +20,6 @@
  *
  * <p>This exception indicates either proposed Traffic Selectors by callers is not acceptable or the
  * negotiated Traffic Selectors from the remote server is invalid.
- *
- * @hide
  */
 // If remote server is the exchange initiator, IKE library should respond with a TS_UNACCEPTABLE
 // Notify message. If the remote server is the exchange responder, IKE library should initiate a
diff --git a/src/java/android/net/ipsec/ike/exceptions/UnrecognizedIkeProtocolException.java b/src/java/android/net/ipsec/ike/exceptions/UnrecognizedIkeProtocolException.java
index d251af5..aadbb6f 100644
--- a/src/java/android/net/ipsec/ike/exceptions/UnrecognizedIkeProtocolException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/UnrecognizedIkeProtocolException.java
@@ -24,7 +24,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-3.10.1">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // When receiving an unrecognized error notification in a response, IKE Session MUST assume that
 // the corresponding request has failed entirely. If it is in a request, IKE Session MUST ignore it.
diff --git a/src/java/android/net/ipsec/ike/exceptions/UnsupportedCriticalPayloadException.java b/src/java/android/net/ipsec/ike/exceptions/UnsupportedCriticalPayloadException.java
index 672ede8..09c4686 100644
--- a/src/java/android/net/ipsec/ike/exceptions/UnsupportedCriticalPayloadException.java
+++ b/src/java/android/net/ipsec/ike/exceptions/UnsupportedCriticalPayloadException.java
@@ -27,7 +27,6 @@
  *
  * @see <a href="https://tools.ietf.org/html/rfc7296#section-2.5">RFC 7296, Internet Key Exchange
  *     Protocol Version 2 (IKEv2)</a>
- * @hide
  */
 // Include UNSUPPORTED_CRITICAL_PAYLOAD Notify payloads in a response message. Each payload
 // contains only one payload type.