crypto/x509/v3_cpols.cc: do not forward declare ASN.1 items.

Doing so causes then to have external linkage and thus to appear as
symbols in the library.

Instead, order them so no forward declaration is necessary.

Bug: 42220000
Change-Id: I36303d0fba0ae960b6a42f0f8d02cff1866f6fea
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/86049
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: Rudolf Polzer <rpolzer@google.com>
diff --git a/crypto/x509/v3_cpols.cc b/crypto/x509/v3_cpols.cc
index 217a808..2d65775 100644
--- a/crypto/x509/v3_cpols.cc
+++ b/crypto/x509/v3_cpols.cc
@@ -61,23 +61,19 @@
     nullptr,
 };
 
-DECLARE_ASN1_ITEM(POLICYINFO)
-DECLARE_ASN1_ITEM(POLICYQUALINFO)
-DECLARE_ASN1_ITEM(USERNOTICE)
-DECLARE_ASN1_ITEM(NOTICEREF)
+ASN1_SEQUENCE(NOTICEREF) = {
+    ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
+    ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER),
+} ASN1_SEQUENCE_END(NOTICEREF)
 
-ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) = ASN1_EX_TEMPLATE_TYPE(
-    ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, POLICYINFO)
-ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES)
+IMPLEMENT_ASN1_ALLOC_FUNCTIONS(NOTICEREF)
 
-IMPLEMENT_ASN1_FUNCTIONS_const(CERTIFICATEPOLICIES)
+ASN1_SEQUENCE(USERNOTICE) = {
+    ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
+    ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT),
+} ASN1_SEQUENCE_END(USERNOTICE)
 
-ASN1_SEQUENCE(POLICYINFO) = {
-    ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
-    ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO),
-} ASN1_SEQUENCE_END(POLICYINFO)
-
-IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICYINFO)
+IMPLEMENT_ASN1_ALLOC_FUNCTIONS(USERNOTICE)
 
 ASN1_ADB_TEMPLATE(policydefault) = ASN1_SIMPLE(POLICYQUALINFO, d.other,
                                                ASN1_ANY);
@@ -96,19 +92,18 @@
 
 IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICYQUALINFO)
 
-ASN1_SEQUENCE(USERNOTICE) = {
-    ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
-    ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT),
-} ASN1_SEQUENCE_END(USERNOTICE)
+ASN1_SEQUENCE(POLICYINFO) = {
+    ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
+    ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO),
+} ASN1_SEQUENCE_END(POLICYINFO)
 
-IMPLEMENT_ASN1_ALLOC_FUNCTIONS(USERNOTICE)
+IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICYINFO)
 
-ASN1_SEQUENCE(NOTICEREF) = {
-    ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
-    ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER),
-} ASN1_SEQUENCE_END(NOTICEREF)
+ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) = ASN1_EX_TEMPLATE_TYPE(
+    ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, POLICYINFO)
+ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES)
 
-IMPLEMENT_ASN1_ALLOC_FUNCTIONS(NOTICEREF)
+IMPLEMENT_ASN1_FUNCTIONS_const(CERTIFICATEPOLICIES)
 
 static void *r2i_certpol(const X509V3_EXT_METHOD *method, const X509V3_CTX *ctx,
                          const char *value) {