Add intra-core API required by conscrypt

An initial set of methods that need to be visible in
the intra-core API surface for conscrypt to compile.

There's a fix in JavaLibrary.bp to the core-current-stubs-gen
target to stop files in openjdk_mmodule_extra_files showing
up in the core.current.stubs.

Bug: 110404540
Bug: 113148576
Test: build
Change-Id: I4bade4dac925cfcb14df9335918319be897ac50d
diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index ae84030..c8044fc 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -525,7 +525,9 @@
     srcs: [":core_api_files"],
     installable: false,
     no_framework_libs: true,
-    args: " --exclude-annotations",
+    args: " --exclude-annotations "
+        + "--hide-annotation libcore.api.Hide",
+    merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
 }
 
 // A library containing the parts of the public SDK API provided by the core libraries.
diff --git a/dalvik/src/main/java/dalvik/system/BlockGuard.java b/dalvik/src/main/java/dalvik/system/BlockGuard.java
index b0ffecc..549da9e 100644
--- a/dalvik/src/main/java/dalvik/system/BlockGuard.java
+++ b/dalvik/src/main/java/dalvik/system/BlockGuard.java
@@ -33,6 +33,7 @@
  *
  * @hide
  */
+@libcore.api.IntraCoreApi
 public final class BlockGuard {
 
     // TODO: refactor class name to something more generic, since its scope is
@@ -41,6 +42,7 @@
     /**
      * Per-thread interface used to implement {@code StrictMode.ThreadPolicy}.
      */
+    @libcore.api.IntraCoreApi
     public interface Policy {
         /**
          * Called on disk writes.
@@ -55,6 +57,7 @@
         /**
          * Called on network operations.
          */
+        @libcore.api.IntraCoreApi
         void onNetwork();
 
         /**
@@ -182,6 +185,7 @@
      * @return the current thread's policy. Will return the {@link #LAX_POLICY}
      *         instance if nothing else is set.
      */
+    @libcore.api.IntraCoreApi
     public static @NonNull Policy getThreadPolicy() {
         return threadPolicy.get();
     }
diff --git a/dalvik/src/main/java/dalvik/system/CloseGuard.java b/dalvik/src/main/java/dalvik/system/CloseGuard.java
index 072959b..6b05be0 100644
--- a/dalvik/src/main/java/dalvik/system/CloseGuard.java
+++ b/dalvik/src/main/java/dalvik/system/CloseGuard.java
@@ -108,6 +108,7 @@
  *
  * @hide
  */
+@libcore.api.IntraCoreApi
 public final class CloseGuard {
 
     /**
@@ -134,6 +135,7 @@
      * Returns a CloseGuard instance. {@code #open(String)} can be used to set
      * up the instance to warn on failure to close.
      */
+    @libcore.api.IntraCoreApi
     public static CloseGuard get() {
         return new CloseGuard();
     }
@@ -207,6 +209,7 @@
      * @param closer non-null name of explicit termination method. Printed by warnIfOpen.
      * @throws NullPointerException if closer is null.
      */
+    @libcore.api.IntraCoreApi
     public void open(String closer) {
         // always perform the check for valid API usage...
         if (closer == null) {
@@ -235,6 +238,7 @@
      * Marks this CloseGuard instance as closed to avoid warnings on
      * finalization.
      */
+    @libcore.api.IntraCoreApi
     public void close() {
         Tracker tracker = currentTracker;
         if (tracker != null && closerNameOrAllocationInfo instanceof Throwable) {
@@ -251,6 +255,7 @@
      * the allocation to the current reporter. If it was not enabled, it just
      * directly logs a brief message.
      */
+    @libcore.api.IntraCoreApi
     public void warnIfOpen() {
         if (closerNameOrAllocationInfo != null) {
             if (closerNameOrAllocationInfo instanceof String) {
diff --git a/luni/src/main/java/android/system/ErrnoException.java b/luni/src/main/java/android/system/ErrnoException.java
index e60ac8f..472acbd 100644
--- a/luni/src/main/java/android/system/ErrnoException.java
+++ b/luni/src/main/java/android/system/ErrnoException.java
@@ -76,6 +76,7 @@
     /**
      * @hide - internal use only.
      */
+    @libcore.api.IntraCoreApi
     public SocketException rethrowAsSocketException() throws SocketException {
         throw new SocketException(getMessage(), this);
     }
diff --git a/luni/src/main/java/android/system/StructTimeval.java b/luni/src/main/java/android/system/StructTimeval.java
index 91a6f2a..bf864fc 100644
--- a/luni/src/main/java/android/system/StructTimeval.java
+++ b/luni/src/main/java/android/system/StructTimeval.java
@@ -24,11 +24,14 @@
  *
  * @hide
  */
+@libcore.api.IntraCoreApi
 public final class StructTimeval {
     /** Seconds. */
+    @libcore.api.IntraCoreApi
     public final long tv_sec;
 
     /** Microseconds. */
+    @libcore.api.IntraCoreApi
     public final long tv_usec;
 
     private StructTimeval(long tv_sec, long tv_usec) {
@@ -36,17 +39,21 @@
         this.tv_usec = tv_usec;
     }
 
+    @libcore.api.IntraCoreApi
     public static StructTimeval fromMillis(long millis) {
         long tv_sec = millis / 1000;
         long tv_usec = (millis - (tv_sec * 1000)) * 1000;
         return new StructTimeval(tv_sec, tv_usec);
     }
 
+    @libcore.api.IntraCoreApi
     public long toMillis() {
         return (tv_sec * 1000) + (tv_usec / 1000);
     }
 
-    @Override public String toString() {
+    @libcore.api.IntraCoreApi
+    @Override
+    public String toString() {
         return Objects.toString(this);
     }
 }
diff --git a/luni/src/main/java/libcore/io/IoUtils.java b/luni/src/main/java/libcore/io/IoUtils.java
index 46ea573..f4853c1 100644
--- a/luni/src/main/java/libcore/io/IoUtils.java
+++ b/luni/src/main/java/libcore/io/IoUtils.java
@@ -31,6 +31,8 @@
 import libcore.util.NonNull;
 import static android.system.OsConstants.*;
 
+/** @hide */
+@libcore.api.IntraCoreApi
 public final class IoUtils {
     private IoUtils() {
     }
@@ -151,6 +153,7 @@
     /**
      * Closes 'closeable', ignoring any checked exceptions. Does nothing if 'closeable' is null.
      */
+    @libcore.api.IntraCoreApi
     public static void closeQuietly(AutoCloseable closeable) {
         if (closeable != null) {
             try {
diff --git a/luni/src/main/java/libcore/io/Libcore.java b/luni/src/main/java/libcore/io/Libcore.java
index cbc5a55..3574a64 100644
--- a/luni/src/main/java/libcore/io/Libcore.java
+++ b/luni/src/main/java/libcore/io/Libcore.java
@@ -16,6 +16,8 @@
 
 package libcore.io;
 
+/** @hide */
+@libcore.api.IntraCoreApi
 public final class Libcore {
     private Libcore() { }
 
@@ -29,5 +31,6 @@
     /**
      * Access to syscalls with helpful checks/guards.
      */
+    @libcore.api.IntraCoreApi
     public static Os os = new BlockGuardOs(rawOs);
 }
diff --git a/luni/src/main/java/libcore/io/Os.java b/luni/src/main/java/libcore/io/Os.java
index 3f1c809..bdebfce 100644
--- a/luni/src/main/java/libcore/io/Os.java
+++ b/luni/src/main/java/libcore/io/Os.java
@@ -44,6 +44,8 @@
 import java.net.SocketException;
 import java.nio.ByteBuffer;
 
+/** @hide */
+@libcore.api.IntraCoreApi
 public interface Os {
     public FileDescriptor accept(FileDescriptor fd, SocketAddress peerAddress) throws ErrnoException, SocketException;
     public boolean access(String path, int mode) throws ErrnoException;
@@ -164,6 +166,7 @@
     public void setsockoptIpMreqn(FileDescriptor fd, int level, int option, int value) throws ErrnoException;
     public void setsockoptGroupReq(FileDescriptor fd, int level, int option, StructGroupReq value) throws ErrnoException;
     public void setsockoptLinger(FileDescriptor fd, int level, int option, StructLinger value) throws ErrnoException;
+    @libcore.api.IntraCoreApi
     public void setsockoptTimeval(FileDescriptor fd, int level, int option, StructTimeval value) throws ErrnoException;
     public void setuid(int uid) throws ErrnoException;
     public void setxattr(String path, String name, byte[] value, int flags) throws ErrnoException;
diff --git a/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java b/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
index d9c87a4..51cfdde 100644
--- a/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
+++ b/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
@@ -25,11 +25,15 @@
  *
  * <p>The policy currently consists of a single flag: whether cleartext network traffic is
  * permitted. See {@link #isCleartextTrafficPermitted()}.
+ *
+ * @hide
  */
+@libcore.api.IntraCoreApi
 public abstract class NetworkSecurityPolicy {
 
     private static volatile NetworkSecurityPolicy instance = new DefaultNetworkSecurityPolicy();
 
+    @libcore.api.IntraCoreApi
     public static NetworkSecurityPolicy getInstance() {
         return instance;
     }
@@ -77,6 +81,7 @@
      *
      * <p>See RFC6962 section 3.3 for more details.
      */
+    @libcore.api.IntraCoreApi
     public abstract boolean isCertificateTransparencyVerificationRequired(String hostname);
 
     public static final class DefaultNetworkSecurityPolicy extends NetworkSecurityPolicy {
diff --git a/non_openjdk_java_files.bp b/non_openjdk_java_files.bp
index 0a07b23..918c3e9 100644
--- a/non_openjdk_java_files.bp
+++ b/non_openjdk_java_files.bp
@@ -159,7 +159,11 @@
         "luni/src/main/java/libcore/api/CorePlatformApi.java",
         "luni/src/main/java/libcore/api/Hide.java",
         "luni/src/main/java/libcore/api/IntraCoreApi.java",
+        "luni/src/main/java/libcore/io/IoUtils.java",
+        "luni/src/main/java/libcore/io/Libcore.java",
+        "luni/src/main/java/libcore/io/Os.java",
         "luni/src/main/java/libcore/mmodule/libart/DemoLibartClass.java",
+        "luni/src/main/java/libcore/net/NetworkSecurityPolicy.java",
         "json/src/main/java/org/json/JSON.java",
         "json/src/main/java/org/json/JSONArray.java",
         "json/src/main/java/org/json/JSONException.java",
@@ -274,18 +278,14 @@
         "luni/src/main/java/libcore/io/ForwardingOs.java",
         "luni/src/main/java/libcore/io/IoBridge.java",
         "luni/src/main/java/libcore/io/IoTracker.java",
-        "luni/src/main/java/libcore/io/IoUtils.java",
-        "luni/src/main/java/libcore/io/Libcore.java",
         "luni/src/main/java/libcore/io/Linux.java",
         "luni/src/main/java/libcore/io/Memory.java",
         "luni/src/main/java/libcore/io/MemoryMappedFile.java",
         "luni/src/main/java/libcore/io/NioBufferIterator.java",
-        "luni/src/main/java/libcore/io/Os.java",
         "luni/src/main/java/libcore/io/SizeOf.java",
         "luni/src/main/java/libcore/io/Streams.java",
         "luni/src/main/java/libcore/math/MathUtils.java",
         "luni/src/main/java/libcore/net/MimeUtils.java",
-        "luni/src/main/java/libcore/net/NetworkSecurityPolicy.java",
         "luni/src/main/java/libcore/net/event/NetworkEventDispatcher.java",
         "luni/src/main/java/libcore/net/event/NetworkEventListener.java",
         "luni/src/main/java/libcore/net/http/HttpDate.java",
diff --git a/ojluni/annotations/mmodule/Placheholder.annotated.java b/ojluni/annotations/mmodule/Placheholder.annotated.java
deleted file mode 100644
index 50c398f..0000000
--- a/ojluni/annotations/mmodule/Placheholder.annotated.java
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file doesn't contain any code!
-// It exists to allow the :ojluni-annotated-mmodule-stubs target to exist
-// before any real .annotated.java files have been checked in.
-
-// TODO: Delete this when the first real files go in.
diff --git a/ojluni/annotations/mmodule/java/sun/security/util/DerEncoder.annotated.java b/ojluni/annotations/mmodule/java/sun/security/util/DerEncoder.annotated.java
new file mode 100644
index 0000000..1307552
--- /dev/null
+++ b/ojluni/annotations/mmodule/java/sun/security/util/DerEncoder.annotated.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.util;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+@libcore.api.Hide
+@libcore.api.IntraCoreApi
+public interface DerEncoder {
+
+    @libcore.api.IntraCoreApi
+    public void derEncode(OutputStream out)
+        throws IOException;
+
+}
diff --git a/ojluni/annotations/mmodule/java/sun/security/x509/AlgorithmId.annotated.java b/ojluni/annotations/mmodule/java/sun/security/x509/AlgorithmId.annotated.java
new file mode 100644
index 0000000..20987ae
--- /dev/null
+++ b/ojluni/annotations/mmodule/java/sun/security/x509/AlgorithmId.annotated.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.x509;
+
+import java.io.*;
+import java.util.*;
+import java.security.*;
+
+import sun.security.util.*;
+
+@libcore.api.Hide
+@libcore.api.IntraCoreApi
+public class AlgorithmId implements Serializable, DerEncoder {
+
+    @libcore.api.IntraCoreApi
+    public String getName() {
+        throw new RuntimeException("Stub!");
+    }
+
+    @libcore.api.IntraCoreApi
+    public static AlgorithmId get(String algname) throws NoSuchAlgorithmException {
+        throw new RuntimeException("Stub!");
+    }
+}
diff --git a/ojluni/src/main/java/java/net/InetAddress.java b/ojluni/src/main/java/java/net/InetAddress.java
index 2e6b534..e58f307 100644
--- a/ojluni/src/main/java/java/net/InetAddress.java
+++ b/ojluni/src/main/java/java/net/InetAddress.java
@@ -1614,6 +1614,7 @@
      *
      * @hide used by frameworks/base to ensure that a getAllByName won't cause a DNS lookup.
      */
+    @libcore.api.IntraCoreApi
     public static boolean isNumeric(String address) {
         InetAddress inetAddress = parseNumericAddressNoThrow(address);
         return inetAddress != null && disallowDeprecatedFormats(address, inetAddress) != null;
diff --git a/ojluni/src/main/java/java/net/Socket.java b/ojluni/src/main/java/java/net/Socket.java
index e36d15b..92a3b9f 100644
--- a/ojluni/src/main/java/java/net/Socket.java
+++ b/ojluni/src/main/java/java/net/Socket.java
@@ -1777,6 +1777,7 @@
     /**
      * @hide internal use only
      */
+    @libcore.api.IntraCoreApi
     public FileDescriptor getFileDescriptor$() {
         return impl.getFileDescriptor();
     }
diff --git a/ojluni/src/main/java/java/security/spec/ECParameterSpec.java b/ojluni/src/main/java/java/security/spec/ECParameterSpec.java
index 65bd027..ce27045 100644
--- a/ojluni/src/main/java/java/security/spec/ECParameterSpec.java
+++ b/ojluni/src/main/java/java/security/spec/ECParameterSpec.java
@@ -121,6 +121,7 @@
      *
      * @hide
      */
+    @libcore.api.IntraCoreApi
     public void setCurveName(String curveName) {
         this.curveName = curveName;
     }
@@ -131,6 +132,7 @@
      *
      * @hide
      */
+    @libcore.api.IntraCoreApi
     public String getCurveName() {
         return curveName;
     }
diff --git a/openjdk_java_files.bp b/openjdk_java_files.bp
index c555fdc..631348e 100644
--- a/openjdk_java_files.bp
+++ b/openjdk_java_files.bp
@@ -1393,6 +1393,8 @@
     name: "openjdk_mmodule_extra_files",
     path: "ojluni/src/lambda/java",
     srcs: [
+        "ojluni/src/main/java/sun/security/util/DerEncoder.java",
+        "ojluni/src/main/java/sun/security/x509/AlgorithmId.java",
     ],
 }
 
@@ -1671,7 +1673,6 @@
         "ojluni/src/main/java/sun/security/util/ByteArrayTagOrder.java",
         "ojluni/src/main/java/sun/security/util/Cache.java",
         "ojluni/src/main/java/sun/security/util/Debug.java",
-        "ojluni/src/main/java/sun/security/util/DerEncoder.java",
         "ojluni/src/main/java/sun/security/util/DerIndefLenConverter.java",
         "ojluni/src/main/java/sun/security/util/DerInputBuffer.java",
         "ojluni/src/main/java/sun/security/util/DerInputStream.java",
@@ -1689,7 +1690,6 @@
         "ojluni/src/main/java/sun/security/util/SecurityConstants.java",
         "ojluni/src/main/java/sun/security/util/SignatureFileVerifier.java",
         "ojluni/src/main/java/sun/security/x509/AccessDescription.java",
-        "ojluni/src/main/java/sun/security/x509/AlgorithmId.java",
         "ojluni/src/main/java/sun/security/x509/AttributeNameEnumeration.java",
         "ojluni/src/main/java/sun/security/x509/AuthorityInfoAccessExtension.java",
         "ojluni/src/main/java/sun/security/x509/AuthorityKeyIdentifierExtension.java",