Integrate the new way of C++ symbol prefixing with Bindgen. Update-Note: bindgen.rs is now created differently; it should though be optional for downstream builds to take over this change, as prefixing is and remains optional and unprefixed builds should not be affected. Nevertheless giving a heads up as there is a chance the changes here impact a downstream build. Bug: 42220000 Change-Id: I209dcef63f4581046e1cf5e574aee5476a6a6964 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/87407 Commit-Queue: Rudolf Polzer <rpolzer@google.com> Reviewed-by: Xiangfei Ding <xfding@google.com>
diff --git a/BUILDING.md b/BUILDING.md index 96e08e6..1c5fc9e 100644 --- a/BUILDING.md +++ b/BUILDING.md
@@ -126,6 +126,9 @@ -DBORINGSSL_PREFIX=MY_CUSTOM_PREFIX` will configure the build to add the prefix `MY_CUSTOM_PREFIX` to all of the symbols defined by the library. +In case you want to also build the Rust crate, run `export +BORINGSSL_PREFIX=MY_CUSTOM_PREFIX` prior to running `cargo`. + Note that symbol prefixing cannot be used with the combination of FIPS and static libraries.
diff --git a/rust/bssl-sys/README.md b/rust/bssl-sys/README.md index c0fb610..67b36c4 100644 --- a/rust/bssl-sys/README.md +++ b/rust/bssl-sys/README.md
@@ -14,5 +14,6 @@ 2. Install `bindgen`. 3. Install [`cargo-deny`](https://github.com/EmbarkStudios/cargo-deny). +4. In case you have passed `-DBORINGSSL_PREFIX=foo` to `cmake`, run `export BORINGSSL_PREFIX=foo` prior to calling `cargo`. After that, the `bssl-sys` crate can be built via `cargo`. By default, it looks for `bindgen` output and BoringSSL static libraries in the `build` directory. This can be reconfigured with `BORINGSSL_BUILD_DIR` environment variable. Note the environment variable is evaluated relative to `rust/bssl-sys/src`, so using an absolute path may be more convenient.
diff --git a/rust/bssl-sys/boringssl_prefix_symbols_bindgen.rs.in b/rust/bssl-sys/boringssl_prefix_symbols_bindgen.rs.in new file mode 100644 index 0000000..cc4873c --- /dev/null +++ b/rust/bssl-sys/boringssl_prefix_symbols_bindgen.rs.in
@@ -0,0 +1,773 @@ +// Copyright 2024 The BoringSSL Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Generated by go ./util/pregenerate. Do not edit manually. + +pub use ${BORINGSSL_PREFIX}_CBS_data as CBS_data; +pub use ${BORINGSSL_PREFIX}_CBS_init as CBS_init; +pub use ${BORINGSSL_PREFIX}_CBS_len as CBS_len; +pub use ${BORINGSSL_PREFIX}_ERR_GET_FUNC as ERR_GET_FUNC; +pub use ${BORINGSSL_PREFIX}_ERR_GET_LIB as ERR_GET_LIB; +pub use ${BORINGSSL_PREFIX}_ERR_GET_REASON as ERR_GET_REASON; +pub use ${BORINGSSL_PREFIX}_ERR_equals as ERR_equals; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_call_cmp_func as sk_ACCESS_DESCRIPTION_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_call_copy_func as sk_ACCESS_DESCRIPTION_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_call_delete_if_func as sk_ACCESS_DESCRIPTION_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_call_free_func as sk_ACCESS_DESCRIPTION_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_deep_copy as sk_ACCESS_DESCRIPTION_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_delete as sk_ACCESS_DESCRIPTION_delete; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_delete_if as sk_ACCESS_DESCRIPTION_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_delete_ptr as sk_ACCESS_DESCRIPTION_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_dup as sk_ACCESS_DESCRIPTION_dup; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_find as sk_ACCESS_DESCRIPTION_find; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_free as sk_ACCESS_DESCRIPTION_free; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_insert as sk_ACCESS_DESCRIPTION_insert; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_is_sorted as sk_ACCESS_DESCRIPTION_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_new as sk_ACCESS_DESCRIPTION_new; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_new_null as sk_ACCESS_DESCRIPTION_new_null; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_num as sk_ACCESS_DESCRIPTION_num; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_pop as sk_ACCESS_DESCRIPTION_pop; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_pop_free as sk_ACCESS_DESCRIPTION_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_push as sk_ACCESS_DESCRIPTION_push; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_set as sk_ACCESS_DESCRIPTION_set; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_set_cmp_func as sk_ACCESS_DESCRIPTION_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_shift as sk_ACCESS_DESCRIPTION_shift; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_sort as sk_ACCESS_DESCRIPTION_sort; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_value as sk_ACCESS_DESCRIPTION_value; +pub use ${BORINGSSL_PREFIX}_sk_ACCESS_DESCRIPTION_zero as sk_ACCESS_DESCRIPTION_zero; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_call_cmp_func as sk_ASN1_INTEGER_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_call_copy_func as sk_ASN1_INTEGER_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_call_delete_if_func as sk_ASN1_INTEGER_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_call_free_func as sk_ASN1_INTEGER_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_deep_copy as sk_ASN1_INTEGER_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_delete as sk_ASN1_INTEGER_delete; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_delete_if as sk_ASN1_INTEGER_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_delete_ptr as sk_ASN1_INTEGER_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_dup as sk_ASN1_INTEGER_dup; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_find as sk_ASN1_INTEGER_find; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_free as sk_ASN1_INTEGER_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_insert as sk_ASN1_INTEGER_insert; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_is_sorted as sk_ASN1_INTEGER_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_new as sk_ASN1_INTEGER_new; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_new_null as sk_ASN1_INTEGER_new_null; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_num as sk_ASN1_INTEGER_num; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_pop as sk_ASN1_INTEGER_pop; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_pop_free as sk_ASN1_INTEGER_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_push as sk_ASN1_INTEGER_push; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_set as sk_ASN1_INTEGER_set; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_set_cmp_func as sk_ASN1_INTEGER_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_shift as sk_ASN1_INTEGER_shift; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_sort as sk_ASN1_INTEGER_sort; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_value as sk_ASN1_INTEGER_value; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_INTEGER_zero as sk_ASN1_INTEGER_zero; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_call_cmp_func as sk_ASN1_OBJECT_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_call_copy_func as sk_ASN1_OBJECT_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_call_delete_if_func as sk_ASN1_OBJECT_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_call_free_func as sk_ASN1_OBJECT_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_deep_copy as sk_ASN1_OBJECT_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_delete as sk_ASN1_OBJECT_delete; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_delete_if as sk_ASN1_OBJECT_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_delete_ptr as sk_ASN1_OBJECT_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_dup as sk_ASN1_OBJECT_dup; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_find as sk_ASN1_OBJECT_find; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_free as sk_ASN1_OBJECT_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_insert as sk_ASN1_OBJECT_insert; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_is_sorted as sk_ASN1_OBJECT_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_new as sk_ASN1_OBJECT_new; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_new_null as sk_ASN1_OBJECT_new_null; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_num as sk_ASN1_OBJECT_num; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_pop as sk_ASN1_OBJECT_pop; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_pop_free as sk_ASN1_OBJECT_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_push as sk_ASN1_OBJECT_push; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_set as sk_ASN1_OBJECT_set; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_set_cmp_func as sk_ASN1_OBJECT_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_shift as sk_ASN1_OBJECT_shift; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_sort as sk_ASN1_OBJECT_sort; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_value as sk_ASN1_OBJECT_value; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_OBJECT_zero as sk_ASN1_OBJECT_zero; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_call_cmp_func as sk_ASN1_TYPE_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_call_copy_func as sk_ASN1_TYPE_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_call_delete_if_func as sk_ASN1_TYPE_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_call_free_func as sk_ASN1_TYPE_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_deep_copy as sk_ASN1_TYPE_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_delete as sk_ASN1_TYPE_delete; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_delete_if as sk_ASN1_TYPE_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_delete_ptr as sk_ASN1_TYPE_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_dup as sk_ASN1_TYPE_dup; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_find as sk_ASN1_TYPE_find; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_free as sk_ASN1_TYPE_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_insert as sk_ASN1_TYPE_insert; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_is_sorted as sk_ASN1_TYPE_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_new as sk_ASN1_TYPE_new; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_new_null as sk_ASN1_TYPE_new_null; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_num as sk_ASN1_TYPE_num; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_pop as sk_ASN1_TYPE_pop; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_pop_free as sk_ASN1_TYPE_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_push as sk_ASN1_TYPE_push; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_set as sk_ASN1_TYPE_set; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_set_cmp_func as sk_ASN1_TYPE_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_shift as sk_ASN1_TYPE_shift; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_sort as sk_ASN1_TYPE_sort; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_value as sk_ASN1_TYPE_value; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_TYPE_zero as sk_ASN1_TYPE_zero; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_call_cmp_func as sk_ASN1_VALUE_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_call_copy_func as sk_ASN1_VALUE_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_call_delete_if_func as sk_ASN1_VALUE_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_call_free_func as sk_ASN1_VALUE_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_deep_copy as sk_ASN1_VALUE_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_delete as sk_ASN1_VALUE_delete; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_delete_if as sk_ASN1_VALUE_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_delete_ptr as sk_ASN1_VALUE_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_dup as sk_ASN1_VALUE_dup; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_find as sk_ASN1_VALUE_find; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_free as sk_ASN1_VALUE_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_insert as sk_ASN1_VALUE_insert; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_is_sorted as sk_ASN1_VALUE_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_new as sk_ASN1_VALUE_new; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_new_null as sk_ASN1_VALUE_new_null; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_num as sk_ASN1_VALUE_num; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_pop as sk_ASN1_VALUE_pop; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_pop_free as sk_ASN1_VALUE_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_push as sk_ASN1_VALUE_push; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_set as sk_ASN1_VALUE_set; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_set_cmp_func as sk_ASN1_VALUE_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_shift as sk_ASN1_VALUE_shift; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_sort as sk_ASN1_VALUE_sort; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_value as sk_ASN1_VALUE_value; +pub use ${BORINGSSL_PREFIX}_sk_ASN1_VALUE_zero as sk_ASN1_VALUE_zero; +pub use ${BORINGSSL_PREFIX}_sk_BIO_call_cmp_func as sk_BIO_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_BIO_call_copy_func as sk_BIO_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_BIO_call_delete_if_func as sk_BIO_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_BIO_call_free_func as sk_BIO_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_BIO_deep_copy as sk_BIO_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_BIO_delete as sk_BIO_delete; +pub use ${BORINGSSL_PREFIX}_sk_BIO_delete_if as sk_BIO_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_BIO_delete_ptr as sk_BIO_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_BIO_dup as sk_BIO_dup; +pub use ${BORINGSSL_PREFIX}_sk_BIO_find as sk_BIO_find; +pub use ${BORINGSSL_PREFIX}_sk_BIO_free as sk_BIO_free; +pub use ${BORINGSSL_PREFIX}_sk_BIO_insert as sk_BIO_insert; +pub use ${BORINGSSL_PREFIX}_sk_BIO_is_sorted as sk_BIO_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_BIO_new as sk_BIO_new; +pub use ${BORINGSSL_PREFIX}_sk_BIO_new_null as sk_BIO_new_null; +pub use ${BORINGSSL_PREFIX}_sk_BIO_num as sk_BIO_num; +pub use ${BORINGSSL_PREFIX}_sk_BIO_pop as sk_BIO_pop; +pub use ${BORINGSSL_PREFIX}_sk_BIO_pop_free as sk_BIO_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_BIO_push as sk_BIO_push; +pub use ${BORINGSSL_PREFIX}_sk_BIO_set as sk_BIO_set; +pub use ${BORINGSSL_PREFIX}_sk_BIO_set_cmp_func as sk_BIO_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_BIO_shift as sk_BIO_shift; +pub use ${BORINGSSL_PREFIX}_sk_BIO_sort as sk_BIO_sort; +pub use ${BORINGSSL_PREFIX}_sk_BIO_value as sk_BIO_value; +pub use ${BORINGSSL_PREFIX}_sk_BIO_zero as sk_BIO_zero; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_call_cmp_func as sk_CONF_VALUE_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_call_copy_func as sk_CONF_VALUE_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_call_delete_if_func as sk_CONF_VALUE_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_call_free_func as sk_CONF_VALUE_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_deep_copy as sk_CONF_VALUE_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_delete as sk_CONF_VALUE_delete; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_delete_if as sk_CONF_VALUE_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_delete_ptr as sk_CONF_VALUE_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_dup as sk_CONF_VALUE_dup; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_find as sk_CONF_VALUE_find; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_free as sk_CONF_VALUE_free; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_insert as sk_CONF_VALUE_insert; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_is_sorted as sk_CONF_VALUE_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_new as sk_CONF_VALUE_new; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_new_null as sk_CONF_VALUE_new_null; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_num as sk_CONF_VALUE_num; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_pop as sk_CONF_VALUE_pop; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_pop_free as sk_CONF_VALUE_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_push as sk_CONF_VALUE_push; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_set as sk_CONF_VALUE_set; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_set_cmp_func as sk_CONF_VALUE_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_shift as sk_CONF_VALUE_shift; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_sort as sk_CONF_VALUE_sort; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_value as sk_CONF_VALUE_value; +pub use ${BORINGSSL_PREFIX}_sk_CONF_VALUE_zero as sk_CONF_VALUE_zero; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_call_cmp_func as sk_CRYPTO_BUFFER_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_call_copy_func as sk_CRYPTO_BUFFER_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_call_delete_if_func as sk_CRYPTO_BUFFER_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_call_free_func as sk_CRYPTO_BUFFER_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_deep_copy as sk_CRYPTO_BUFFER_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_delete as sk_CRYPTO_BUFFER_delete; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_delete_if as sk_CRYPTO_BUFFER_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_delete_ptr as sk_CRYPTO_BUFFER_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_dup as sk_CRYPTO_BUFFER_dup; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_find as sk_CRYPTO_BUFFER_find; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_free as sk_CRYPTO_BUFFER_free; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_insert as sk_CRYPTO_BUFFER_insert; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_is_sorted as sk_CRYPTO_BUFFER_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_new as sk_CRYPTO_BUFFER_new; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_new_null as sk_CRYPTO_BUFFER_new_null; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_num as sk_CRYPTO_BUFFER_num; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_pop as sk_CRYPTO_BUFFER_pop; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_pop_free as sk_CRYPTO_BUFFER_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_push as sk_CRYPTO_BUFFER_push; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_set as sk_CRYPTO_BUFFER_set; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_set_cmp_func as sk_CRYPTO_BUFFER_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_shift as sk_CRYPTO_BUFFER_shift; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_sort as sk_CRYPTO_BUFFER_sort; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_value as sk_CRYPTO_BUFFER_value; +pub use ${BORINGSSL_PREFIX}_sk_CRYPTO_BUFFER_zero as sk_CRYPTO_BUFFER_zero; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_call_cmp_func as sk_DIST_POINT_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_call_copy_func as sk_DIST_POINT_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_call_delete_if_func as sk_DIST_POINT_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_call_free_func as sk_DIST_POINT_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_deep_copy as sk_DIST_POINT_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_delete as sk_DIST_POINT_delete; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_delete_if as sk_DIST_POINT_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_delete_ptr as sk_DIST_POINT_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_dup as sk_DIST_POINT_dup; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_find as sk_DIST_POINT_find; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_free as sk_DIST_POINT_free; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_insert as sk_DIST_POINT_insert; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_is_sorted as sk_DIST_POINT_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_new as sk_DIST_POINT_new; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_new_null as sk_DIST_POINT_new_null; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_num as sk_DIST_POINT_num; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_pop as sk_DIST_POINT_pop; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_pop_free as sk_DIST_POINT_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_push as sk_DIST_POINT_push; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_set as sk_DIST_POINT_set; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_set_cmp_func as sk_DIST_POINT_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_shift as sk_DIST_POINT_shift; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_sort as sk_DIST_POINT_sort; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_value as sk_DIST_POINT_value; +pub use ${BORINGSSL_PREFIX}_sk_DIST_POINT_zero as sk_DIST_POINT_zero; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_call_cmp_func as sk_GENERAL_NAME_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_call_copy_func as sk_GENERAL_NAME_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_call_delete_if_func as sk_GENERAL_NAME_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_call_free_func as sk_GENERAL_NAME_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_deep_copy as sk_GENERAL_NAME_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_delete as sk_GENERAL_NAME_delete; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_delete_if as sk_GENERAL_NAME_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_delete_ptr as sk_GENERAL_NAME_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_dup as sk_GENERAL_NAME_dup; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_find as sk_GENERAL_NAME_find; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_free as sk_GENERAL_NAME_free; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_insert as sk_GENERAL_NAME_insert; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_is_sorted as sk_GENERAL_NAME_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_new as sk_GENERAL_NAME_new; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_new_null as sk_GENERAL_NAME_new_null; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_num as sk_GENERAL_NAME_num; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_pop as sk_GENERAL_NAME_pop; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_pop_free as sk_GENERAL_NAME_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_push as sk_GENERAL_NAME_push; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_set as sk_GENERAL_NAME_set; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_set_cmp_func as sk_GENERAL_NAME_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_shift as sk_GENERAL_NAME_shift; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_sort as sk_GENERAL_NAME_sort; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_value as sk_GENERAL_NAME_value; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_NAME_zero as sk_GENERAL_NAME_zero; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_call_cmp_func as sk_GENERAL_SUBTREE_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_call_copy_func as sk_GENERAL_SUBTREE_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_call_delete_if_func as sk_GENERAL_SUBTREE_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_call_free_func as sk_GENERAL_SUBTREE_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_deep_copy as sk_GENERAL_SUBTREE_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_delete as sk_GENERAL_SUBTREE_delete; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_delete_if as sk_GENERAL_SUBTREE_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_delete_ptr as sk_GENERAL_SUBTREE_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_dup as sk_GENERAL_SUBTREE_dup; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_find as sk_GENERAL_SUBTREE_find; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_free as sk_GENERAL_SUBTREE_free; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_insert as sk_GENERAL_SUBTREE_insert; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_is_sorted as sk_GENERAL_SUBTREE_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_new as sk_GENERAL_SUBTREE_new; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_new_null as sk_GENERAL_SUBTREE_new_null; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_num as sk_GENERAL_SUBTREE_num; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_pop as sk_GENERAL_SUBTREE_pop; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_pop_free as sk_GENERAL_SUBTREE_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_push as sk_GENERAL_SUBTREE_push; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_set as sk_GENERAL_SUBTREE_set; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_set_cmp_func as sk_GENERAL_SUBTREE_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_shift as sk_GENERAL_SUBTREE_shift; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_sort as sk_GENERAL_SUBTREE_sort; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_value as sk_GENERAL_SUBTREE_value; +pub use ${BORINGSSL_PREFIX}_sk_GENERAL_SUBTREE_zero as sk_GENERAL_SUBTREE_zero; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_call_cmp_func as sk_OPENSSL_STRING_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_call_copy_func as sk_OPENSSL_STRING_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_call_delete_if_func as sk_OPENSSL_STRING_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_call_free_func as sk_OPENSSL_STRING_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_deep_copy as sk_OPENSSL_STRING_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_delete as sk_OPENSSL_STRING_delete; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_delete_if as sk_OPENSSL_STRING_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_delete_ptr as sk_OPENSSL_STRING_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_dup as sk_OPENSSL_STRING_dup; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_find as sk_OPENSSL_STRING_find; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_free as sk_OPENSSL_STRING_free; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_insert as sk_OPENSSL_STRING_insert; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_is_sorted as sk_OPENSSL_STRING_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_new as sk_OPENSSL_STRING_new; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_new_null as sk_OPENSSL_STRING_new_null; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_num as sk_OPENSSL_STRING_num; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_pop as sk_OPENSSL_STRING_pop; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_pop_free as sk_OPENSSL_STRING_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_push as sk_OPENSSL_STRING_push; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_set as sk_OPENSSL_STRING_set; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_set_cmp_func as sk_OPENSSL_STRING_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_shift as sk_OPENSSL_STRING_shift; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_sort as sk_OPENSSL_STRING_sort; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_value as sk_OPENSSL_STRING_value; +pub use ${BORINGSSL_PREFIX}_sk_OPENSSL_STRING_zero as sk_OPENSSL_STRING_zero; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_call_cmp_func as sk_POLICYINFO_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_call_copy_func as sk_POLICYINFO_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_call_delete_if_func as sk_POLICYINFO_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_call_free_func as sk_POLICYINFO_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_deep_copy as sk_POLICYINFO_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_delete as sk_POLICYINFO_delete; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_delete_if as sk_POLICYINFO_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_delete_ptr as sk_POLICYINFO_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_dup as sk_POLICYINFO_dup; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_find as sk_POLICYINFO_find; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_free as sk_POLICYINFO_free; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_insert as sk_POLICYINFO_insert; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_is_sorted as sk_POLICYINFO_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_new as sk_POLICYINFO_new; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_new_null as sk_POLICYINFO_new_null; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_num as sk_POLICYINFO_num; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_pop as sk_POLICYINFO_pop; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_pop_free as sk_POLICYINFO_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_push as sk_POLICYINFO_push; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_set as sk_POLICYINFO_set; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_set_cmp_func as sk_POLICYINFO_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_shift as sk_POLICYINFO_shift; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_sort as sk_POLICYINFO_sort; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_value as sk_POLICYINFO_value; +pub use ${BORINGSSL_PREFIX}_sk_POLICYINFO_zero as sk_POLICYINFO_zero; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_call_cmp_func as sk_POLICYQUALINFO_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_call_copy_func as sk_POLICYQUALINFO_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_call_delete_if_func as sk_POLICYQUALINFO_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_call_free_func as sk_POLICYQUALINFO_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_deep_copy as sk_POLICYQUALINFO_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_delete as sk_POLICYQUALINFO_delete; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_delete_if as sk_POLICYQUALINFO_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_delete_ptr as sk_POLICYQUALINFO_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_dup as sk_POLICYQUALINFO_dup; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_find as sk_POLICYQUALINFO_find; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_free as sk_POLICYQUALINFO_free; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_insert as sk_POLICYQUALINFO_insert; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_is_sorted as sk_POLICYQUALINFO_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_new as sk_POLICYQUALINFO_new; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_new_null as sk_POLICYQUALINFO_new_null; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_num as sk_POLICYQUALINFO_num; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_pop as sk_POLICYQUALINFO_pop; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_pop_free as sk_POLICYQUALINFO_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_push as sk_POLICYQUALINFO_push; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_set as sk_POLICYQUALINFO_set; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_set_cmp_func as sk_POLICYQUALINFO_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_shift as sk_POLICYQUALINFO_shift; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_sort as sk_POLICYQUALINFO_sort; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_value as sk_POLICYQUALINFO_value; +pub use ${BORINGSSL_PREFIX}_sk_POLICYQUALINFO_zero as sk_POLICYQUALINFO_zero; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_call_cmp_func as sk_POLICY_MAPPING_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_call_copy_func as sk_POLICY_MAPPING_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_call_delete_if_func as sk_POLICY_MAPPING_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_call_free_func as sk_POLICY_MAPPING_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_deep_copy as sk_POLICY_MAPPING_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_delete as sk_POLICY_MAPPING_delete; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_delete_if as sk_POLICY_MAPPING_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_delete_ptr as sk_POLICY_MAPPING_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_dup as sk_POLICY_MAPPING_dup; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_find as sk_POLICY_MAPPING_find; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_free as sk_POLICY_MAPPING_free; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_insert as sk_POLICY_MAPPING_insert; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_is_sorted as sk_POLICY_MAPPING_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_new as sk_POLICY_MAPPING_new; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_new_null as sk_POLICY_MAPPING_new_null; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_num as sk_POLICY_MAPPING_num; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_pop as sk_POLICY_MAPPING_pop; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_pop_free as sk_POLICY_MAPPING_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_push as sk_POLICY_MAPPING_push; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_set as sk_POLICY_MAPPING_set; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_set_cmp_func as sk_POLICY_MAPPING_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_shift as sk_POLICY_MAPPING_shift; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_sort as sk_POLICY_MAPPING_sort; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_value as sk_POLICY_MAPPING_value; +pub use ${BORINGSSL_PREFIX}_sk_POLICY_MAPPING_zero as sk_POLICY_MAPPING_zero; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_call_cmp_func as sk_SRTP_PROTECTION_PROFILE_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_call_copy_func as sk_SRTP_PROTECTION_PROFILE_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_call_delete_if_func as sk_SRTP_PROTECTION_PROFILE_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_call_free_func as sk_SRTP_PROTECTION_PROFILE_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_deep_copy as sk_SRTP_PROTECTION_PROFILE_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_delete as sk_SRTP_PROTECTION_PROFILE_delete; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_delete_if as sk_SRTP_PROTECTION_PROFILE_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_delete_ptr as sk_SRTP_PROTECTION_PROFILE_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_dup as sk_SRTP_PROTECTION_PROFILE_dup; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_find as sk_SRTP_PROTECTION_PROFILE_find; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_free as sk_SRTP_PROTECTION_PROFILE_free; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_insert as sk_SRTP_PROTECTION_PROFILE_insert; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_is_sorted as sk_SRTP_PROTECTION_PROFILE_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_new as sk_SRTP_PROTECTION_PROFILE_new; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_new_null as sk_SRTP_PROTECTION_PROFILE_new_null; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_num as sk_SRTP_PROTECTION_PROFILE_num; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_pop as sk_SRTP_PROTECTION_PROFILE_pop; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_pop_free as sk_SRTP_PROTECTION_PROFILE_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_push as sk_SRTP_PROTECTION_PROFILE_push; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_set as sk_SRTP_PROTECTION_PROFILE_set; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_set_cmp_func as sk_SRTP_PROTECTION_PROFILE_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_shift as sk_SRTP_PROTECTION_PROFILE_shift; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_sort as sk_SRTP_PROTECTION_PROFILE_sort; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_value as sk_SRTP_PROTECTION_PROFILE_value; +pub use ${BORINGSSL_PREFIX}_sk_SRTP_PROTECTION_PROFILE_zero as sk_SRTP_PROTECTION_PROFILE_zero; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_call_cmp_func as sk_SSL_CIPHER_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_call_copy_func as sk_SSL_CIPHER_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_call_delete_if_func as sk_SSL_CIPHER_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_call_free_func as sk_SSL_CIPHER_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_deep_copy as sk_SSL_CIPHER_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_delete as sk_SSL_CIPHER_delete; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_delete_if as sk_SSL_CIPHER_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_delete_ptr as sk_SSL_CIPHER_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_dup as sk_SSL_CIPHER_dup; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_find as sk_SSL_CIPHER_find; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_free as sk_SSL_CIPHER_free; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_insert as sk_SSL_CIPHER_insert; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_is_sorted as sk_SSL_CIPHER_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_new as sk_SSL_CIPHER_new; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_new_null as sk_SSL_CIPHER_new_null; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_num as sk_SSL_CIPHER_num; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_pop as sk_SSL_CIPHER_pop; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_pop_free as sk_SSL_CIPHER_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_push as sk_SSL_CIPHER_push; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_set as sk_SSL_CIPHER_set; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_set_cmp_func as sk_SSL_CIPHER_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_shift as sk_SSL_CIPHER_shift; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_sort as sk_SSL_CIPHER_sort; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_value as sk_SSL_CIPHER_value; +pub use ${BORINGSSL_PREFIX}_sk_SSL_CIPHER_zero as sk_SSL_CIPHER_zero; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_call_cmp_func as sk_SSL_COMP_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_call_copy_func as sk_SSL_COMP_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_call_delete_if_func as sk_SSL_COMP_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_call_free_func as sk_SSL_COMP_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_deep_copy as sk_SSL_COMP_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_delete as sk_SSL_COMP_delete; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_delete_if as sk_SSL_COMP_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_delete_ptr as sk_SSL_COMP_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_dup as sk_SSL_COMP_dup; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_find as sk_SSL_COMP_find; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_free as sk_SSL_COMP_free; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_insert as sk_SSL_COMP_insert; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_is_sorted as sk_SSL_COMP_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_new as sk_SSL_COMP_new; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_new_null as sk_SSL_COMP_new_null; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_num as sk_SSL_COMP_num; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_pop as sk_SSL_COMP_pop; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_pop_free as sk_SSL_COMP_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_push as sk_SSL_COMP_push; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_set as sk_SSL_COMP_set; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_set_cmp_func as sk_SSL_COMP_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_shift as sk_SSL_COMP_shift; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_sort as sk_SSL_COMP_sort; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_value as sk_SSL_COMP_value; +pub use ${BORINGSSL_PREFIX}_sk_SSL_COMP_zero as sk_SSL_COMP_zero; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_call_cmp_func as sk_TRUST_TOKEN_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_call_copy_func as sk_TRUST_TOKEN_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_call_delete_if_func as sk_TRUST_TOKEN_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_call_free_func as sk_TRUST_TOKEN_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_deep_copy as sk_TRUST_TOKEN_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_delete as sk_TRUST_TOKEN_delete; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_delete_if as sk_TRUST_TOKEN_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_delete_ptr as sk_TRUST_TOKEN_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_dup as sk_TRUST_TOKEN_dup; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_find as sk_TRUST_TOKEN_find; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_free as sk_TRUST_TOKEN_free; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_insert as sk_TRUST_TOKEN_insert; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_is_sorted as sk_TRUST_TOKEN_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_new as sk_TRUST_TOKEN_new; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_new_null as sk_TRUST_TOKEN_new_null; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_num as sk_TRUST_TOKEN_num; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_pop as sk_TRUST_TOKEN_pop; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_pop_free as sk_TRUST_TOKEN_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_push as sk_TRUST_TOKEN_push; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_set as sk_TRUST_TOKEN_set; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_set_cmp_func as sk_TRUST_TOKEN_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_shift as sk_TRUST_TOKEN_shift; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_sort as sk_TRUST_TOKEN_sort; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_value as sk_TRUST_TOKEN_value; +pub use ${BORINGSSL_PREFIX}_sk_TRUST_TOKEN_zero as sk_TRUST_TOKEN_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_call_cmp_func as sk_X509_ALGOR_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_call_copy_func as sk_X509_ALGOR_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_call_delete_if_func as sk_X509_ALGOR_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_call_free_func as sk_X509_ALGOR_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_deep_copy as sk_X509_ALGOR_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_delete as sk_X509_ALGOR_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_delete_if as sk_X509_ALGOR_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_delete_ptr as sk_X509_ALGOR_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_dup as sk_X509_ALGOR_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_find as sk_X509_ALGOR_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_free as sk_X509_ALGOR_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_insert as sk_X509_ALGOR_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_is_sorted as sk_X509_ALGOR_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_new as sk_X509_ALGOR_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_new_null as sk_X509_ALGOR_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_num as sk_X509_ALGOR_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_pop as sk_X509_ALGOR_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_pop_free as sk_X509_ALGOR_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_push as sk_X509_ALGOR_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_set as sk_X509_ALGOR_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_set_cmp_func as sk_X509_ALGOR_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_shift as sk_X509_ALGOR_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_sort as sk_X509_ALGOR_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_value as sk_X509_ALGOR_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_ALGOR_zero as sk_X509_ALGOR_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_call_cmp_func as sk_X509_ATTRIBUTE_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_call_copy_func as sk_X509_ATTRIBUTE_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_call_delete_if_func as sk_X509_ATTRIBUTE_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_call_free_func as sk_X509_ATTRIBUTE_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_deep_copy as sk_X509_ATTRIBUTE_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_delete as sk_X509_ATTRIBUTE_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_delete_if as sk_X509_ATTRIBUTE_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_delete_ptr as sk_X509_ATTRIBUTE_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_dup as sk_X509_ATTRIBUTE_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_find as sk_X509_ATTRIBUTE_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_free as sk_X509_ATTRIBUTE_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_insert as sk_X509_ATTRIBUTE_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_is_sorted as sk_X509_ATTRIBUTE_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_new as sk_X509_ATTRIBUTE_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_new_null as sk_X509_ATTRIBUTE_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_num as sk_X509_ATTRIBUTE_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_pop as sk_X509_ATTRIBUTE_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_pop_free as sk_X509_ATTRIBUTE_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_push as sk_X509_ATTRIBUTE_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_set as sk_X509_ATTRIBUTE_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_set_cmp_func as sk_X509_ATTRIBUTE_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_shift as sk_X509_ATTRIBUTE_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_sort as sk_X509_ATTRIBUTE_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_value as sk_X509_ATTRIBUTE_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_ATTRIBUTE_zero as sk_X509_ATTRIBUTE_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_call_cmp_func as sk_X509_CRL_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_call_copy_func as sk_X509_CRL_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_call_delete_if_func as sk_X509_CRL_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_call_free_func as sk_X509_CRL_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_deep_copy as sk_X509_CRL_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_delete as sk_X509_CRL_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_delete_if as sk_X509_CRL_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_delete_ptr as sk_X509_CRL_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_dup as sk_X509_CRL_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_find as sk_X509_CRL_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_free as sk_X509_CRL_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_insert as sk_X509_CRL_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_is_sorted as sk_X509_CRL_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_new as sk_X509_CRL_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_new_null as sk_X509_CRL_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_num as sk_X509_CRL_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_pop as sk_X509_CRL_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_pop_free as sk_X509_CRL_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_push as sk_X509_CRL_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_set as sk_X509_CRL_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_set_cmp_func as sk_X509_CRL_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_shift as sk_X509_CRL_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_sort as sk_X509_CRL_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_value as sk_X509_CRL_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_CRL_zero as sk_X509_CRL_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_call_cmp_func as sk_X509_EXTENSION_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_call_copy_func as sk_X509_EXTENSION_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_call_delete_if_func as sk_X509_EXTENSION_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_call_free_func as sk_X509_EXTENSION_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_deep_copy as sk_X509_EXTENSION_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_delete as sk_X509_EXTENSION_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_delete_if as sk_X509_EXTENSION_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_delete_ptr as sk_X509_EXTENSION_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_dup as sk_X509_EXTENSION_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_find as sk_X509_EXTENSION_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_free as sk_X509_EXTENSION_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_insert as sk_X509_EXTENSION_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_is_sorted as sk_X509_EXTENSION_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_new as sk_X509_EXTENSION_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_new_null as sk_X509_EXTENSION_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_num as sk_X509_EXTENSION_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_pop as sk_X509_EXTENSION_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_pop_free as sk_X509_EXTENSION_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_push as sk_X509_EXTENSION_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_set as sk_X509_EXTENSION_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_set_cmp_func as sk_X509_EXTENSION_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_shift as sk_X509_EXTENSION_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_sort as sk_X509_EXTENSION_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_value as sk_X509_EXTENSION_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_EXTENSION_zero as sk_X509_EXTENSION_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_call_cmp_func as sk_X509_INFO_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_call_copy_func as sk_X509_INFO_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_call_delete_if_func as sk_X509_INFO_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_call_free_func as sk_X509_INFO_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_deep_copy as sk_X509_INFO_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_delete as sk_X509_INFO_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_delete_if as sk_X509_INFO_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_delete_ptr as sk_X509_INFO_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_dup as sk_X509_INFO_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_find as sk_X509_INFO_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_free as sk_X509_INFO_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_insert as sk_X509_INFO_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_is_sorted as sk_X509_INFO_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_new as sk_X509_INFO_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_new_null as sk_X509_INFO_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_num as sk_X509_INFO_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_pop as sk_X509_INFO_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_pop_free as sk_X509_INFO_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_push as sk_X509_INFO_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_set as sk_X509_INFO_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_set_cmp_func as sk_X509_INFO_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_shift as sk_X509_INFO_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_sort as sk_X509_INFO_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_value as sk_X509_INFO_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_INFO_zero as sk_X509_INFO_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_call_cmp_func as sk_X509_NAME_ENTRY_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_call_copy_func as sk_X509_NAME_ENTRY_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_call_delete_if_func as sk_X509_NAME_ENTRY_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_call_free_func as sk_X509_NAME_ENTRY_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_deep_copy as sk_X509_NAME_ENTRY_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_delete as sk_X509_NAME_ENTRY_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_delete_if as sk_X509_NAME_ENTRY_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_delete_ptr as sk_X509_NAME_ENTRY_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_dup as sk_X509_NAME_ENTRY_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_find as sk_X509_NAME_ENTRY_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_free as sk_X509_NAME_ENTRY_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_insert as sk_X509_NAME_ENTRY_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_is_sorted as sk_X509_NAME_ENTRY_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_new as sk_X509_NAME_ENTRY_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_new_null as sk_X509_NAME_ENTRY_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_num as sk_X509_NAME_ENTRY_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_pop as sk_X509_NAME_ENTRY_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_pop_free as sk_X509_NAME_ENTRY_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_push as sk_X509_NAME_ENTRY_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_set as sk_X509_NAME_ENTRY_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_set_cmp_func as sk_X509_NAME_ENTRY_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_shift as sk_X509_NAME_ENTRY_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_sort as sk_X509_NAME_ENTRY_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_value as sk_X509_NAME_ENTRY_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_ENTRY_zero as sk_X509_NAME_ENTRY_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_call_cmp_func as sk_X509_NAME_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_call_copy_func as sk_X509_NAME_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_call_delete_if_func as sk_X509_NAME_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_call_free_func as sk_X509_NAME_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_deep_copy as sk_X509_NAME_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_delete as sk_X509_NAME_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_delete_if as sk_X509_NAME_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_delete_ptr as sk_X509_NAME_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_dup as sk_X509_NAME_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_find as sk_X509_NAME_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_free as sk_X509_NAME_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_insert as sk_X509_NAME_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_is_sorted as sk_X509_NAME_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_new as sk_X509_NAME_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_new_null as sk_X509_NAME_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_num as sk_X509_NAME_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_pop as sk_X509_NAME_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_pop_free as sk_X509_NAME_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_push as sk_X509_NAME_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_set as sk_X509_NAME_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_set_cmp_func as sk_X509_NAME_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_shift as sk_X509_NAME_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_sort as sk_X509_NAME_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_value as sk_X509_NAME_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_NAME_zero as sk_X509_NAME_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_call_cmp_func as sk_X509_OBJECT_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_call_copy_func as sk_X509_OBJECT_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_call_delete_if_func as sk_X509_OBJECT_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_call_free_func as sk_X509_OBJECT_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_deep_copy as sk_X509_OBJECT_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_delete as sk_X509_OBJECT_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_delete_if as sk_X509_OBJECT_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_delete_ptr as sk_X509_OBJECT_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_dup as sk_X509_OBJECT_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_find as sk_X509_OBJECT_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_free as sk_X509_OBJECT_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_insert as sk_X509_OBJECT_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_is_sorted as sk_X509_OBJECT_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_new as sk_X509_OBJECT_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_new_null as sk_X509_OBJECT_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_num as sk_X509_OBJECT_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_pop as sk_X509_OBJECT_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_pop_free as sk_X509_OBJECT_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_push as sk_X509_OBJECT_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_set as sk_X509_OBJECT_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_set_cmp_func as sk_X509_OBJECT_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_shift as sk_X509_OBJECT_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_sort as sk_X509_OBJECT_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_value as sk_X509_OBJECT_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_OBJECT_zero as sk_X509_OBJECT_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_call_cmp_func as sk_X509_REVOKED_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_call_copy_func as sk_X509_REVOKED_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_call_delete_if_func as sk_X509_REVOKED_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_call_free_func as sk_X509_REVOKED_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_deep_copy as sk_X509_REVOKED_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_delete as sk_X509_REVOKED_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_delete_if as sk_X509_REVOKED_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_delete_ptr as sk_X509_REVOKED_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_dup as sk_X509_REVOKED_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_find as sk_X509_REVOKED_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_free as sk_X509_REVOKED_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_insert as sk_X509_REVOKED_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_is_sorted as sk_X509_REVOKED_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_new as sk_X509_REVOKED_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_new_null as sk_X509_REVOKED_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_num as sk_X509_REVOKED_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_pop as sk_X509_REVOKED_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_pop_free as sk_X509_REVOKED_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_push as sk_X509_REVOKED_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_set as sk_X509_REVOKED_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_set_cmp_func as sk_X509_REVOKED_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_shift as sk_X509_REVOKED_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_sort as sk_X509_REVOKED_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_value as sk_X509_REVOKED_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_REVOKED_zero as sk_X509_REVOKED_zero; +pub use ${BORINGSSL_PREFIX}_sk_X509_call_cmp_func as sk_X509_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_call_copy_func as sk_X509_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_call_delete_if_func as sk_X509_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_call_free_func as sk_X509_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_deep_copy as sk_X509_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_X509_delete as sk_X509_delete; +pub use ${BORINGSSL_PREFIX}_sk_X509_delete_if as sk_X509_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_X509_delete_ptr as sk_X509_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_X509_dup as sk_X509_dup; +pub use ${BORINGSSL_PREFIX}_sk_X509_find as sk_X509_find; +pub use ${BORINGSSL_PREFIX}_sk_X509_free as sk_X509_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_insert as sk_X509_insert; +pub use ${BORINGSSL_PREFIX}_sk_X509_is_sorted as sk_X509_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_X509_new as sk_X509_new; +pub use ${BORINGSSL_PREFIX}_sk_X509_new_null as sk_X509_new_null; +pub use ${BORINGSSL_PREFIX}_sk_X509_num as sk_X509_num; +pub use ${BORINGSSL_PREFIX}_sk_X509_pop as sk_X509_pop; +pub use ${BORINGSSL_PREFIX}_sk_X509_pop_free as sk_X509_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_X509_push as sk_X509_push; +pub use ${BORINGSSL_PREFIX}_sk_X509_set as sk_X509_set; +pub use ${BORINGSSL_PREFIX}_sk_X509_set_cmp_func as sk_X509_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_X509_shift as sk_X509_shift; +pub use ${BORINGSSL_PREFIX}_sk_X509_sort as sk_X509_sort; +pub use ${BORINGSSL_PREFIX}_sk_X509_value as sk_X509_value; +pub use ${BORINGSSL_PREFIX}_sk_X509_zero as sk_X509_zero; +pub use ${BORINGSSL_PREFIX}_sk_void_call_cmp_func as sk_void_call_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_void_call_copy_func as sk_void_call_copy_func; +pub use ${BORINGSSL_PREFIX}_sk_void_call_delete_if_func as sk_void_call_delete_if_func; +pub use ${BORINGSSL_PREFIX}_sk_void_call_free_func as sk_void_call_free_func; +pub use ${BORINGSSL_PREFIX}_sk_void_deep_copy as sk_void_deep_copy; +pub use ${BORINGSSL_PREFIX}_sk_void_delete as sk_void_delete; +pub use ${BORINGSSL_PREFIX}_sk_void_delete_if as sk_void_delete_if; +pub use ${BORINGSSL_PREFIX}_sk_void_delete_ptr as sk_void_delete_ptr; +pub use ${BORINGSSL_PREFIX}_sk_void_dup as sk_void_dup; +pub use ${BORINGSSL_PREFIX}_sk_void_find as sk_void_find; +pub use ${BORINGSSL_PREFIX}_sk_void_free as sk_void_free; +pub use ${BORINGSSL_PREFIX}_sk_void_insert as sk_void_insert; +pub use ${BORINGSSL_PREFIX}_sk_void_is_sorted as sk_void_is_sorted; +pub use ${BORINGSSL_PREFIX}_sk_void_new as sk_void_new; +pub use ${BORINGSSL_PREFIX}_sk_void_new_null as sk_void_new_null; +pub use ${BORINGSSL_PREFIX}_sk_void_num as sk_void_num; +pub use ${BORINGSSL_PREFIX}_sk_void_pop as sk_void_pop; +pub use ${BORINGSSL_PREFIX}_sk_void_pop_free as sk_void_pop_free; +pub use ${BORINGSSL_PREFIX}_sk_void_push as sk_void_push; +pub use ${BORINGSSL_PREFIX}_sk_void_set as sk_void_set; +pub use ${BORINGSSL_PREFIX}_sk_void_set_cmp_func as sk_void_set_cmp_func; +pub use ${BORINGSSL_PREFIX}_sk_void_shift as sk_void_shift; +pub use ${BORINGSSL_PREFIX}_sk_void_sort as sk_void_sort; +pub use ${BORINGSSL_PREFIX}_sk_void_value as sk_void_value; +pub use ${BORINGSSL_PREFIX}_sk_void_zero as sk_void_zero;
diff --git a/rust/bssl-sys/build.rs b/rust/bssl-sys/build.rs index aa211e8..143d85e 100644 --- a/rust/bssl-sys/build.rs +++ b/rust/bssl-sys/build.rs
@@ -104,12 +104,41 @@ // Find the bindgen generated target platform bindings file and put it into // OUT_DIR/bindgen.rs. let bindgen_source_file = bssl_sys_build_dir.join(format!("wrapper_{}.rs", target)); - std::fs::copy(&bindgen_source_file, &bindgen_out_file).expect(&format!( - "Could not copy bindings from '{}' to '{}'", + let prefix_inc_source_file = Path::new("boringssl_prefix_symbols_bindgen.rs.in"); + let bindgen_source = std::fs::read_to_string(&bindgen_source_file).expect(&format!( + "Could not read bindings from '{}'", bindgen_source_file.display(), - bindgen_out_file.display() )); println!("cargo:rerun-if-changed={}", bindgen_source_file.display()); + let prefix_source = match env::var("BORINGSSL_PREFIX") { + Ok(prefix) => { + // Preprocess the file to insert the prefix. + std::fs::read_to_string(&prefix_inc_source_file) + .expect(&format!( + "Could not read prefixing data from '{}'", + prefix_inc_source_file.display(), + )) + .replace("${BORINGSSL_PREFIX}", prefix.as_str()) + } + Err(env::VarError::NotPresent) => { + // Just don't append anything. + "".to_string() + } + Err(e) => panic!("failed to read BORINGSSL_PREFIX variable: {}", e), + }; + std::fs::write( + &bindgen_out_file, + format!("{}{}", bindgen_source, prefix_source), + ) + .expect(&format!( + "Could not write bindings to '{}'", + bindgen_out_file.display() + )); + println!( + "cargo:rerun-if-changed={}", + prefix_inc_source_file.display() + ); + println!("cargo:rerun-if-env-changed=BORINGSSL_PREFIX"); // Statically link libraries. println!(
diff --git a/util/pregenerate/build.go b/util/pregenerate/build.go index 4849273..7b142a9 100644 --- a/util/pregenerate/build.go +++ b/util/pregenerate/build.go
@@ -372,14 +372,25 @@ // MakePrefixingIncludes returns the tasks to generate the header files for symbol prefixing. func MakePrefixingIncludes(in map[string]InputTarget, targetsOut map[string]build.Target) []*Task { - var headers []string - for _, t := range in { - headers = append(headers, t.Hdrs...) + var cHeader, bindgenInclude []byte + var err error + buildHeadersOnce := func() { + var headers []string + for _, t := range in { + headers = append(headers, t.Hdrs...) + } + cHeader, bindgenInclude, err = BuildCRenamingIncludes(headers) } addGeneratedHeader(targetsOut, "include/openssl/prefix_symbols.h") + var once sync.Once return []*Task{ NewSimpleTask("include/openssl/prefix_symbols.h", func() ([]byte, error) { - return BuildCRenamingHeader(headers) + once.Do(buildHeadersOnce) + return cHeader, err + }), + NewSimpleTask("rust/bssl-sys/boringssl_prefix_symbols_bindgen.rs.in", func() ([]byte, error) { + once.Do(buildHeadersOnce) + return bindgenInclude, err }), } }
diff --git a/util/pregenerate/idextractor.go b/util/pregenerate/idextractor.go index c1086d8..c1a0c2f 100644 --- a/util/pregenerate/idextractor.go +++ b/util/pregenerate/idextractor.go
@@ -54,11 +54,11 @@ // BuildCRenamingHeader calls Clang to extract the AST of the headers, then processes them to extract the symbols. // -// It returns an include for C. -func BuildCRenamingHeader(headers []string) (cInclude []byte, err error) { +// It returns a header for C and a matching one for Rust's bindgen. +func BuildCRenamingIncludes(headers []string) (cHeader []byte, bindgenInclude []byte, err error) { cmd := *clangPath if cmd == "" { - return nil, fmt.Errorf("%w: clang has been disabled by flag", TaskSkipped) + return nil, nil, fmt.Errorf("%w: clang has been disabled by flag", TaskSkipped) } defer func() { @@ -69,7 +69,7 @@ isCL, err := isClangCL(cmd) if err != nil { - return nil, err + return nil, nil, err } var args []string @@ -115,13 +115,13 @@ stdout, err := c.StdoutPipe() if err != nil { - return nil, err + return nil, nil, err } defer stdout.Close() err = c.Start() if err != nil { - return nil, err + return nil, nil, err } var viaRedefineExtname = map[string]struct{}{} @@ -181,19 +181,19 @@ for sym := range viaMacro { if _, found := viaRedefineExtname[sym]; found { - return nil, fmt.Errorf("symbol %q both marked for macro and redefine_extname renaming; please fix", sym) + return nil, nil, fmt.Errorf("symbol %q both marked for macro and redefine_extname renaming; please fix", sym) } } err = idextractor.New(report, idextractor.Options{Language: "C++"}).Parse(stdout) if err != nil { c.Process.Kill() - return nil, err + return nil, nil, err } err = c.Wait() if err != nil { - return nil, err + return nil, nil, err } var cOutput bytes.Buffer @@ -236,5 +236,13 @@ cOutput.WriteString(` #endif // OPENSSL_HEADER_PREFIX_SYMBOLS_H `) - return cOutput.Bytes(), nil + + var bindgenOutput bytes.Buffer + writeHeader(&bindgenOutput, "//") + bindgenOutput.WriteString("\n") + for _, sym := range slices.Sorted(maps.Keys(viaMacro)) { + fmt.Fprintf(&bindgenOutput, "pub use ${BORINGSSL_PREFIX}_%s as %s;\n", sym, sym) + } + + return cOutput.Bytes(), bindgenOutput.Bytes(), nil }