gnu: Add rust-ring-0.17.

* gnu/packages/crates-io.scm (rust-ring-0.17, rust-ring-0.17-sources):
New variables.
(rust-ring-0.16): Inherit from rust-ring-0.17.

Change-Id: Ic71f17e7d9c21f75a449ceededf8725870c2395b
This commit is contained in:
Efraim Flashner 2023-12-24 10:03:49 +02:00
parent 9f84e0b5b0
commit 18c35009eb
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351
3 changed files with 711 additions and 6 deletions

View file

@ -2003,6 +2003,7 @@ dist_patch_DATA = \
%D%/packages/patches/rust-1.70-fix-rustix-build.patch \
%D%/packages/patches/rust-ring-0.16-missing-files.patch \
%D%/packages/patches/rust-ring-0.16-test-files.patch \
%D%/packages/patches/rust-ring-0.17-ring-core.patch \
%D%/packages/patches/i3status-rust-enable-unstable-features.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \

View file

@ -61,9 +61,11 @@ (define-module (gnu packages crates-io)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages assembly)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages c)
#:use-module (gnu packages cmake)
@ -78,6 +80,7 @@ (define-module (gnu packages crates-io)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages golang)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages jemalloc)
@ -63978,8 +63981,218 @@ (define-public rust-rfc6979-0.4
Digital Signature Algorithm} (ECDSA).")
(license (list license:asl2.0 license:expat))))
(define computed-origin-method (@@ (guix packages) computed-origin-method))
(define rust-ring-0.17-sources
(let* ((version "0.17.7")
(upstream-source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/briansmith/ring")
(commit "2be687bebdf76648ce85109d40c015412e14b0da")))
(file-name (git-file-name "rust-ring" version))
(sha256
(base32 "1i3b7sha8yj990v2s5yk2a5dx3v4x9b8ckzm6bgiyi6wk4vnid69"))
(patches (search-patches "rust-ring-0.17-ring-core.patch")))))
(origin
(method computed-origin-method)
(file-name (string-append "rust-ring-" version ".tar.gz"))
(sha256 #f)
(uri
(delay
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(set-path-environment-variable
"PATH" '("bin")
(list #+(canonical-package gzip)
#+(canonical-package tar)
#+perl
#+nasm
#+go
#+clang ; clang-format
#+python-minimal))
(setenv "HOME" (getcwd))
(copy-recursively #+upstream-source
(string-append "ring-" #$version))
(with-directory-excursion (string-append "ring-" #$version)
(begin
;; It turns out Guix's nasm works just fine here.
(substitute* "build.rs"
(("./target/tools/windows/nasm/nasm") "nasm"))
;; Files which would be deleted in a snippet:
(delete-file "crypto/curve25519/curve25519_tables.h")
(delete-file "crypto/fipsmodule/ec/p256-nistz-table.h")
(delete-file "crypto/fipsmodule/ec/p256_table.h")
;; This file causes problems during the 'package phase and
;; is not distributed with the packaged crate.
(substitute* "Cargo.toml"
(("\"bench\",") ""))
(delete-file "bench/Cargo.toml")
;; Files to be generated in the sources:
(format #t "Generating the missing files ...~%")
(force-output)
(with-directory-excursion "crypto/curve25519"
(with-output-to-file "curve25519_tables.h"
(lambda _ (invoke "python3" "make_curve25519_tables.py")))
;; As seen in git between 0.17.0 and 0.17.1.
(substitute* "curve25519_tables.h"
(("static const uint8_t k25519Precomp")
"const uint8_t k25519Precomp")))
(with-directory-excursion "crypto/fipsmodule/ec"
(invoke "go" "run" "make_tables.go")
(invoke "go" "run" "make_ec_scalar_base_mult_tests.go"))
(format #t "Generating the pregenerated files ...~%")
(force-output)
(mkdir-p "pregenerated/tmp/ring_core_generated")
;; We generate all the files which upstream would normally be
;; generate by using 'RING_PREGENERATE_ASM=1 cargo build
;; --target-dir=target/pregenerate_asm' in order to not include
;; a dependency on cargo when generating the sources.
(define (prefix script)
(string-append
"pregenerated/"
(string-drop-right
(string-drop script
(string-index-right script #\/)) 3)))
(for-each
(lambda (script)
(invoke "perl" script "ios64"
(string-append (prefix script) "-ios64.S"))
(invoke "perl" script "linux64"
(string-append (prefix script) "-linux64.S"))
(invoke "perl" script "win64"
(string-append (prefix script) "-win64.S")))
'("crypto/fipsmodule/aes/asm/aesv8-armx.pl"
"crypto/fipsmodule/modes/asm/ghashv8-armx.pl"
"crypto/chacha/asm/chacha-armv8.pl"
"crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl"
"crypto/fipsmodule/aes/asm/vpaes-armv8.pl"
"crypto/fipsmodule/bn/asm/armv8-mont.pl"
"crypto/fipsmodule/ec/asm/p256-armv8-asm.pl"
"crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl"
"crypto/fipsmodule/sha/asm/sha512-armv8.pl"))
(for-each
(lambda (arch)
(invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl"
arch (string-append
"pregenerated/sha256-armv8-" arch ".S")))
'("ios64" "linux64" "win64"))
(for-each
(lambda (script)
(invoke "perl" script "linux32"
(string-append (prefix script) "-linux32.S")))
'("crypto/fipsmodule/aes/asm/aesv8-armx.pl"
"crypto/fipsmodule/modes/asm/ghashv8-armx.pl"
"crypto/fipsmodule/aes/asm/bsaes-armv7.pl"
"crypto/fipsmodule/aes/asm/vpaes-armv7.pl"
"crypto/fipsmodule/bn/asm/armv4-mont.pl"
"crypto/chacha/asm/chacha-armv4.pl"
"crypto/fipsmodule/modes/asm/ghash-armv4.pl"
"crypto/fipsmodule/sha/asm/sha256-armv4.pl"
"crypto/fipsmodule/sha/asm/sha512-armv4.pl"))
(for-each
(lambda (script)
(invoke "perl" script "elf"
"-fPIC" "-DOPENSSL_IA32_SSE2"
(string-append (prefix script) "-elf.S"))
(invoke "perl" script "win32n"
"-fPIC" "-DOPENSSL_IA32_SSE2"
(string-append
"pregenerated/tmp/"
(string-drop (prefix script) 13) "-win32n.asm")))
'("crypto/fipsmodule/aes/asm/aesni-x86.pl"
"crypto/fipsmodule/aes/asm/vpaes-x86.pl"
"crypto/fipsmodule/bn/asm/x86-mont.pl"
"crypto/chacha/asm/chacha-x86.pl"
"crypto/fipsmodule/modes/asm/ghash-x86.pl"))
(for-each
(lambda (script)
(invoke "perl" script "elf"
(string-append (prefix script) "-elf.S"))
(invoke "perl" script "macosx"
(string-append (prefix script) "-macosx.S"))
(invoke "perl" script "nasm"
(string-append
"pregenerated/tmp/"
(string-drop (prefix script) 13) "-nasm.asm")))
'("crypto/chacha/asm/chacha-x86_64.pl"
"crypto/fipsmodule/aes/asm/aesni-x86_64.pl"
"crypto/fipsmodule/aes/asm/vpaes-x86_64.pl"
"crypto/fipsmodule/bn/asm/x86_64-mont.pl"
"crypto/fipsmodule/bn/asm/x86_64-mont5.pl"
"crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl"
"crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl"
"crypto/fipsmodule/modes/asm/ghash-x86_64.pl"
"crypto/fipsmodule/sha/asm/sha512-x86_64.pl"
"crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl"))
(invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl"
"elf" "pregenerated/sha256-x86_64-elf.S")
(invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl"
"macosx" "pregenerated/sha256-x86_64-macosx.S")
(invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl"
"nasm" "pregenerated/tmp/sha256-x86_64-nasm.asm")
;; TODO: Extract ring_core_generated/prefix_symbols_nasm.inc
;; and ring_core_generated/prefix_symbols_asm.h from build.rs.
(for-each
(lambda (script)
(invoke "nasm" "-o" (string-append (prefix script) "o")
"-f" "win32" "-i" "include/" "-i" "pregenerated/tmp/"
"-Xgnu" "-gcv8" script))
(find-files "pregenerated/tmp" "win32n\\.asm"))
(for-each
(lambda (script)
(invoke "nasm" "-o" (string-append (prefix script) "o")
"-f" "win64" "-i" "include/" "-i" "pregenerated/tmp/"
"-Xgnu" "-gcv8" script))
(find-files "pregenerated/tmp" "nasm\\.asm"))
(format #t "Creating the tarball ...~%")
(force-output)
;; The other option is to use cargo package --allow-dirty
(with-directory-excursion "../"
(invoke "tar" "czf" #$output
;; avoid non-determinism in the archive
"--sort=name" "--mtime=@0"
"--owner=root:0" "--group=root:0"
(string-append "ring-" #$version))))))))))))
(define-public rust-ring-0.17
(package
(name "rust-ring")
(version "0.17.7")
(source rust-ring-0.17-sources)
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-cc" ,rust-cc-1)
("rust-getrandom" ,rust-getrandom-0.2)
("rust-libc" ,rust-libc-0.2)
("rust-spin" ,rust-spin-0.9)
("rust-untrusted" ,rust-untrusted-0.9)
("rust-windows-sys" ,rust-windows-sys-0.48))
#:cargo-development-inputs
(("rust-libc" ,rust-libc-0.2)
("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3))))
(home-page "https://github.com/briansmith/ring")
(synopsis "Safe, fast, small crypto using Rust")
(description "This package provided safe, fast, small crypto using Rust.")
(license (list license:isc license:openssl))))
(define-public rust-ring-0.16
(package
(inherit rust-ring-0.17)
(name "rust-ring")
(version "0.16.20")
(source
@ -64004,7 +64217,6 @@ (define-public rust-ring-0.16
(with-output-to-file ".git"
(lambda _
(format #t "")))))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc-0.2)
@ -64028,14 +64240,10 @@ (define-public rust-ring-0.16
(invoke "python" "make_curve25519_tables.py")))))))))
(native-inputs
(list clang perl python-2))
(home-page "https://github.com/briansmith/ring")
(synopsis "Safe, fast, small crypto using Rust")
(description "This package provided safe, fast, small crypto using Rust.")
;; For a mostly complete list of supported systems see:
;; https://github.com/briansmith/ring/blob/main/.github/workflows/ci.yml#L170
(supported-systems (list "aarch64-linux" "armhf-linux"
"i686-linux" "x86_64-linux"))
(license (list license:isc license:openssl))))
"i686-linux" "x86_64-linux"))))
(define-public rust-ring-0.14
(package

View file

@ -0,0 +1,496 @@
These two files are needed to finish generating the files for windows
and were generated using 'RING_PREGENERATE_ASM=1 cargo build
--target-dir=target/pregenerate_asm'. Included here so we don't need to
add cargo to the computed-source.
---
.../ring_core_generated/prefix_symbols_asm.h | 236 ++++++++++++++++++
.../prefix_symbols_nasm.inc | 236 ++++++++++++++++++
2 files changed, 472 insertions(+)
create mode 100644 pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h
create mode 100644 pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc
diff --git a/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h b/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h
new file mode 100644
index 000000000..1cd766400
--- /dev/null
+++ b/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h
@@ -0,0 +1,236 @@
+
+#ifndef ring_core_generated_PREFIX_SYMBOLS_ASM_H
+#define ring_core_generated_PREFIX_SYMBOLS_ASM_H
+
+#if defined(__APPLE__)
+#define _ecp_nistz256_point_double _p256_point_double
+#define _ecp_nistz256_point_add _p256_point_add
+#define _ecp_nistz256_point_add_affine _p256_point_add_affine
+#define _ecp_nistz256_ord_mul_mont _p256_scalar_mul_mont
+#define _ecp_nistz256_ord_sqr_mont _p256_scalar_sqr_rep_mont
+#define _ecp_nistz256_mul_mont _p256_mul_mont
+#define _ecp_nistz256_sqr_mont _p256_sqr_mont
+#define _CRYPTO_memcmp _ring_core_0_17_7_CRYPTO_memcmp
+#define _CRYPTO_poly1305_finish _ring_core_0_17_7_CRYPTO_poly1305_finish
+#define _CRYPTO_poly1305_finish_neon _ring_core_0_17_7_CRYPTO_poly1305_finish_neon
+#define _CRYPTO_poly1305_init _ring_core_0_17_7_CRYPTO_poly1305_init
+#define _CRYPTO_poly1305_init_neon _ring_core_0_17_7_CRYPTO_poly1305_init_neon
+#define _CRYPTO_poly1305_update _ring_core_0_17_7_CRYPTO_poly1305_update
+#define _CRYPTO_poly1305_update_neon _ring_core_0_17_7_CRYPTO_poly1305_update_neon
+#define _ChaCha20_ctr32 _ring_core_0_17_7_ChaCha20_ctr32
+#define _LIMBS_add_mod _ring_core_0_17_7_LIMBS_add_mod
+#define _LIMBS_are_even _ring_core_0_17_7_LIMBS_are_even
+#define _LIMBS_are_zero _ring_core_0_17_7_LIMBS_are_zero
+#define _LIMBS_equal _ring_core_0_17_7_LIMBS_equal
+#define _LIMBS_equal_limb _ring_core_0_17_7_LIMBS_equal_limb
+#define _LIMBS_less_than _ring_core_0_17_7_LIMBS_less_than
+#define _LIMBS_less_than_limb _ring_core_0_17_7_LIMBS_less_than_limb
+#define _LIMBS_reduce_once _ring_core_0_17_7_LIMBS_reduce_once
+#define _LIMBS_select_512_32 _ring_core_0_17_7_LIMBS_select_512_32
+#define _LIMBS_shl_mod _ring_core_0_17_7_LIMBS_shl_mod
+#define _LIMBS_sub_mod _ring_core_0_17_7_LIMBS_sub_mod
+#define _LIMBS_window5_split_window _ring_core_0_17_7_LIMBS_window5_split_window
+#define _LIMBS_window5_unsplit_window _ring_core_0_17_7_LIMBS_window5_unsplit_window
+#define _LIMB_shr _ring_core_0_17_7_LIMB_shr
+#define _OPENSSL_armcap_P _ring_core_0_17_7_OPENSSL_armcap_P
+#define _OPENSSL_cpuid_setup _ring_core_0_17_7_OPENSSL_cpuid_setup
+#define _OPENSSL_ia32cap_P _ring_core_0_17_7_OPENSSL_ia32cap_P
+#define _aes_hw_ctr32_encrypt_blocks _ring_core_0_17_7_aes_hw_ctr32_encrypt_blocks
+#define _aes_hw_encrypt _ring_core_0_17_7_aes_hw_encrypt
+#define _aes_hw_set_encrypt_key _ring_core_0_17_7_aes_hw_set_encrypt_key
+#define _aes_nohw_ctr32_encrypt_blocks _ring_core_0_17_7_aes_nohw_ctr32_encrypt_blocks
+#define _aes_nohw_encrypt _ring_core_0_17_7_aes_nohw_encrypt
+#define _aes_nohw_set_encrypt_key _ring_core_0_17_7_aes_nohw_set_encrypt_key
+#define _aesni_gcm_decrypt _ring_core_0_17_7_aesni_gcm_decrypt
+#define _aesni_gcm_encrypt _ring_core_0_17_7_aesni_gcm_encrypt
+#define _bn_from_montgomery_in_place _ring_core_0_17_7_bn_from_montgomery_in_place
+#define _bn_gather5 _ring_core_0_17_7_bn_gather5
+#define _bn_mul_mont _ring_core_0_17_7_bn_mul_mont
+#define _bn_mul_mont_gather5 _ring_core_0_17_7_bn_mul_mont_gather5
+#define _bn_neg_inv_mod_r_u64 _ring_core_0_17_7_bn_neg_inv_mod_r_u64
+#define _bn_power5 _ring_core_0_17_7_bn_power5
+#define _bn_scatter5 _ring_core_0_17_7_bn_scatter5
+#define _bn_sqr8x_internal _ring_core_0_17_7_bn_sqr8x_internal
+#define _bn_sqrx8x_internal _ring_core_0_17_7_bn_sqrx8x_internal
+#define _bsaes_ctr32_encrypt_blocks _ring_core_0_17_7_bsaes_ctr32_encrypt_blocks
+#define _bssl_constant_time_test_conditional_memcpy _ring_core_0_17_7_bssl_constant_time_test_conditional_memcpy
+#define _bssl_constant_time_test_conditional_memxor _ring_core_0_17_7_bssl_constant_time_test_conditional_memxor
+#define _bssl_constant_time_test_main _ring_core_0_17_7_bssl_constant_time_test_main
+#define _chacha20_poly1305_open _ring_core_0_17_7_chacha20_poly1305_open
+#define _chacha20_poly1305_seal _ring_core_0_17_7_chacha20_poly1305_seal
+#define _fiat_curve25519_adx_mul _ring_core_0_17_7_fiat_curve25519_adx_mul
+#define _fiat_curve25519_adx_square _ring_core_0_17_7_fiat_curve25519_adx_square
+#define _gcm_ghash_avx _ring_core_0_17_7_gcm_ghash_avx
+#define _gcm_ghash_clmul _ring_core_0_17_7_gcm_ghash_clmul
+#define _gcm_ghash_neon _ring_core_0_17_7_gcm_ghash_neon
+#define _gcm_gmult_clmul _ring_core_0_17_7_gcm_gmult_clmul
+#define _gcm_gmult_neon _ring_core_0_17_7_gcm_gmult_neon
+#define _gcm_init_avx _ring_core_0_17_7_gcm_init_avx
+#define _gcm_init_clmul _ring_core_0_17_7_gcm_init_clmul
+#define _gcm_init_neon _ring_core_0_17_7_gcm_init_neon
+#define _k25519Precomp _ring_core_0_17_7_k25519Precomp
+#define _limbs_mul_add_limb _ring_core_0_17_7_limbs_mul_add_limb
+#define _little_endian_bytes_from_scalar _ring_core_0_17_7_little_endian_bytes_from_scalar
+#define _ecp_nistz256_neg _ring_core_0_17_7_ecp_nistz256_neg
+#define _ecp_nistz256_select_w5 _ring_core_0_17_7_ecp_nistz256_select_w5
+#define _ecp_nistz256_select_w7 _ring_core_0_17_7_ecp_nistz256_select_w7
+#define _p256_mul_mont _ring_core_0_17_7_p256_mul_mont
+#define _p256_point_add _ring_core_0_17_7_p256_point_add
+#define _p256_point_add_affine _ring_core_0_17_7_p256_point_add_affine
+#define _p256_point_double _ring_core_0_17_7_p256_point_double
+#define _p256_point_mul _ring_core_0_17_7_p256_point_mul
+#define _p256_point_mul_base _ring_core_0_17_7_p256_point_mul_base
+#define _p256_point_mul_base_vartime _ring_core_0_17_7_p256_point_mul_base_vartime
+#define _p256_scalar_mul_mont _ring_core_0_17_7_p256_scalar_mul_mont
+#define _p256_scalar_sqr_rep_mont _ring_core_0_17_7_p256_scalar_sqr_rep_mont
+#define _p256_sqr_mont _ring_core_0_17_7_p256_sqr_mont
+#define _p384_elem_div_by_2 _ring_core_0_17_7_p384_elem_div_by_2
+#define _p384_elem_mul_mont _ring_core_0_17_7_p384_elem_mul_mont
+#define _p384_elem_neg _ring_core_0_17_7_p384_elem_neg
+#define _p384_elem_sub _ring_core_0_17_7_p384_elem_sub
+#define _p384_point_add _ring_core_0_17_7_p384_point_add
+#define _p384_point_double _ring_core_0_17_7_p384_point_double
+#define _p384_point_mul _ring_core_0_17_7_p384_point_mul
+#define _p384_scalar_mul_mont _ring_core_0_17_7_p384_scalar_mul_mont
+#define _openssl_poly1305_neon2_addmulmod _ring_core_0_17_7_openssl_poly1305_neon2_addmulmod
+#define _openssl_poly1305_neon2_blocks _ring_core_0_17_7_openssl_poly1305_neon2_blocks
+#define _sha256_block_data_order _ring_core_0_17_7_sha256_block_data_order
+#define _sha512_block_data_order _ring_core_0_17_7_sha512_block_data_order
+#define _vpaes_ctr32_encrypt_blocks _ring_core_0_17_7_vpaes_ctr32_encrypt_blocks
+#define _vpaes_encrypt _ring_core_0_17_7_vpaes_encrypt
+#define _vpaes_encrypt_key_to_bsaes _ring_core_0_17_7_vpaes_encrypt_key_to_bsaes
+#define _vpaes_set_encrypt_key _ring_core_0_17_7_vpaes_set_encrypt_key
+#define _x25519_NEON _ring_core_0_17_7_x25519_NEON
+#define _x25519_fe_invert _ring_core_0_17_7_x25519_fe_invert
+#define _x25519_fe_isnegative _ring_core_0_17_7_x25519_fe_isnegative
+#define _x25519_fe_mul_ttt _ring_core_0_17_7_x25519_fe_mul_ttt
+#define _x25519_fe_neg _ring_core_0_17_7_x25519_fe_neg
+#define _x25519_fe_tobytes _ring_core_0_17_7_x25519_fe_tobytes
+#define _x25519_ge_double_scalarmult_vartime _ring_core_0_17_7_x25519_ge_double_scalarmult_vartime
+#define _x25519_ge_frombytes_vartime _ring_core_0_17_7_x25519_ge_frombytes_vartime
+#define _x25519_ge_scalarmult_base _ring_core_0_17_7_x25519_ge_scalarmult_base
+#define _x25519_ge_scalarmult_base_adx _ring_core_0_17_7_x25519_ge_scalarmult_base_adx
+#define _x25519_public_from_private_generic_masked _ring_core_0_17_7_x25519_public_from_private_generic_masked
+#define _x25519_sc_mask _ring_core_0_17_7_x25519_sc_mask
+#define _x25519_sc_muladd _ring_core_0_17_7_x25519_sc_muladd
+#define _x25519_sc_reduce _ring_core_0_17_7_x25519_sc_reduce
+#define _x25519_scalar_mult_adx _ring_core_0_17_7_x25519_scalar_mult_adx
+#define _x25519_scalar_mult_generic_masked _ring_core_0_17_7_x25519_scalar_mult_generic_masked
+
+#else
+#define ecp_nistz256_point_double p256_point_double
+#define ecp_nistz256_point_add p256_point_add
+#define ecp_nistz256_point_add_affine p256_point_add_affine
+#define ecp_nistz256_ord_mul_mont p256_scalar_mul_mont
+#define ecp_nistz256_ord_sqr_mont p256_scalar_sqr_rep_mont
+#define ecp_nistz256_mul_mont p256_mul_mont
+#define ecp_nistz256_sqr_mont p256_sqr_mont
+#define CRYPTO_memcmp ring_core_0_17_7_CRYPTO_memcmp
+#define CRYPTO_poly1305_finish ring_core_0_17_7_CRYPTO_poly1305_finish
+#define CRYPTO_poly1305_finish_neon ring_core_0_17_7_CRYPTO_poly1305_finish_neon
+#define CRYPTO_poly1305_init ring_core_0_17_7_CRYPTO_poly1305_init
+#define CRYPTO_poly1305_init_neon ring_core_0_17_7_CRYPTO_poly1305_init_neon
+#define CRYPTO_poly1305_update ring_core_0_17_7_CRYPTO_poly1305_update
+#define CRYPTO_poly1305_update_neon ring_core_0_17_7_CRYPTO_poly1305_update_neon
+#define ChaCha20_ctr32 ring_core_0_17_7_ChaCha20_ctr32
+#define LIMBS_add_mod ring_core_0_17_7_LIMBS_add_mod
+#define LIMBS_are_even ring_core_0_17_7_LIMBS_are_even
+#define LIMBS_are_zero ring_core_0_17_7_LIMBS_are_zero
+#define LIMBS_equal ring_core_0_17_7_LIMBS_equal
+#define LIMBS_equal_limb ring_core_0_17_7_LIMBS_equal_limb
+#define LIMBS_less_than ring_core_0_17_7_LIMBS_less_than
+#define LIMBS_less_than_limb ring_core_0_17_7_LIMBS_less_than_limb
+#define LIMBS_reduce_once ring_core_0_17_7_LIMBS_reduce_once
+#define LIMBS_select_512_32 ring_core_0_17_7_LIMBS_select_512_32
+#define LIMBS_shl_mod ring_core_0_17_7_LIMBS_shl_mod
+#define LIMBS_sub_mod ring_core_0_17_7_LIMBS_sub_mod
+#define LIMBS_window5_split_window ring_core_0_17_7_LIMBS_window5_split_window
+#define LIMBS_window5_unsplit_window ring_core_0_17_7_LIMBS_window5_unsplit_window
+#define LIMB_shr ring_core_0_17_7_LIMB_shr
+#define OPENSSL_armcap_P ring_core_0_17_7_OPENSSL_armcap_P
+#define OPENSSL_cpuid_setup ring_core_0_17_7_OPENSSL_cpuid_setup
+#define OPENSSL_ia32cap_P ring_core_0_17_7_OPENSSL_ia32cap_P
+#define aes_hw_ctr32_encrypt_blocks ring_core_0_17_7_aes_hw_ctr32_encrypt_blocks
+#define aes_hw_encrypt ring_core_0_17_7_aes_hw_encrypt
+#define aes_hw_set_encrypt_key ring_core_0_17_7_aes_hw_set_encrypt_key
+#define aes_nohw_ctr32_encrypt_blocks ring_core_0_17_7_aes_nohw_ctr32_encrypt_blocks
+#define aes_nohw_encrypt ring_core_0_17_7_aes_nohw_encrypt
+#define aes_nohw_set_encrypt_key ring_core_0_17_7_aes_nohw_set_encrypt_key
+#define aesni_gcm_decrypt ring_core_0_17_7_aesni_gcm_decrypt
+#define aesni_gcm_encrypt ring_core_0_17_7_aesni_gcm_encrypt
+#define bn_from_montgomery_in_place ring_core_0_17_7_bn_from_montgomery_in_place
+#define bn_gather5 ring_core_0_17_7_bn_gather5
+#define bn_mul_mont ring_core_0_17_7_bn_mul_mont
+#define bn_mul_mont_gather5 ring_core_0_17_7_bn_mul_mont_gather5
+#define bn_neg_inv_mod_r_u64 ring_core_0_17_7_bn_neg_inv_mod_r_u64
+#define bn_power5 ring_core_0_17_7_bn_power5
+#define bn_scatter5 ring_core_0_17_7_bn_scatter5
+#define bn_sqr8x_internal ring_core_0_17_7_bn_sqr8x_internal
+#define bn_sqrx8x_internal ring_core_0_17_7_bn_sqrx8x_internal
+#define bsaes_ctr32_encrypt_blocks ring_core_0_17_7_bsaes_ctr32_encrypt_blocks
+#define bssl_constant_time_test_conditional_memcpy ring_core_0_17_7_bssl_constant_time_test_conditional_memcpy
+#define bssl_constant_time_test_conditional_memxor ring_core_0_17_7_bssl_constant_time_test_conditional_memxor
+#define bssl_constant_time_test_main ring_core_0_17_7_bssl_constant_time_test_main
+#define chacha20_poly1305_open ring_core_0_17_7_chacha20_poly1305_open
+#define chacha20_poly1305_seal ring_core_0_17_7_chacha20_poly1305_seal
+#define fiat_curve25519_adx_mul ring_core_0_17_7_fiat_curve25519_adx_mul
+#define fiat_curve25519_adx_square ring_core_0_17_7_fiat_curve25519_adx_square
+#define gcm_ghash_avx ring_core_0_17_7_gcm_ghash_avx
+#define gcm_ghash_clmul ring_core_0_17_7_gcm_ghash_clmul
+#define gcm_ghash_neon ring_core_0_17_7_gcm_ghash_neon
+#define gcm_gmult_clmul ring_core_0_17_7_gcm_gmult_clmul
+#define gcm_gmult_neon ring_core_0_17_7_gcm_gmult_neon
+#define gcm_init_avx ring_core_0_17_7_gcm_init_avx
+#define gcm_init_clmul ring_core_0_17_7_gcm_init_clmul
+#define gcm_init_neon ring_core_0_17_7_gcm_init_neon
+#define k25519Precomp ring_core_0_17_7_k25519Precomp
+#define limbs_mul_add_limb ring_core_0_17_7_limbs_mul_add_limb
+#define little_endian_bytes_from_scalar ring_core_0_17_7_little_endian_bytes_from_scalar
+#define ecp_nistz256_neg ring_core_0_17_7_ecp_nistz256_neg
+#define ecp_nistz256_select_w5 ring_core_0_17_7_ecp_nistz256_select_w5
+#define ecp_nistz256_select_w7 ring_core_0_17_7_ecp_nistz256_select_w7
+#define p256_mul_mont ring_core_0_17_7_p256_mul_mont
+#define p256_point_add ring_core_0_17_7_p256_point_add
+#define p256_point_add_affine ring_core_0_17_7_p256_point_add_affine
+#define p256_point_double ring_core_0_17_7_p256_point_double
+#define p256_point_mul ring_core_0_17_7_p256_point_mul
+#define p256_point_mul_base ring_core_0_17_7_p256_point_mul_base
+#define p256_point_mul_base_vartime ring_core_0_17_7_p256_point_mul_base_vartime
+#define p256_scalar_mul_mont ring_core_0_17_7_p256_scalar_mul_mont
+#define p256_scalar_sqr_rep_mont ring_core_0_17_7_p256_scalar_sqr_rep_mont
+#define p256_sqr_mont ring_core_0_17_7_p256_sqr_mont
+#define p384_elem_div_by_2 ring_core_0_17_7_p384_elem_div_by_2
+#define p384_elem_mul_mont ring_core_0_17_7_p384_elem_mul_mont
+#define p384_elem_neg ring_core_0_17_7_p384_elem_neg
+#define p384_elem_sub ring_core_0_17_7_p384_elem_sub
+#define p384_point_add ring_core_0_17_7_p384_point_add
+#define p384_point_double ring_core_0_17_7_p384_point_double
+#define p384_point_mul ring_core_0_17_7_p384_point_mul
+#define p384_scalar_mul_mont ring_core_0_17_7_p384_scalar_mul_mont
+#define openssl_poly1305_neon2_addmulmod ring_core_0_17_7_openssl_poly1305_neon2_addmulmod
+#define openssl_poly1305_neon2_blocks ring_core_0_17_7_openssl_poly1305_neon2_blocks
+#define sha256_block_data_order ring_core_0_17_7_sha256_block_data_order
+#define sha512_block_data_order ring_core_0_17_7_sha512_block_data_order
+#define vpaes_ctr32_encrypt_blocks ring_core_0_17_7_vpaes_ctr32_encrypt_blocks
+#define vpaes_encrypt ring_core_0_17_7_vpaes_encrypt
+#define vpaes_encrypt_key_to_bsaes ring_core_0_17_7_vpaes_encrypt_key_to_bsaes
+#define vpaes_set_encrypt_key ring_core_0_17_7_vpaes_set_encrypt_key
+#define x25519_NEON ring_core_0_17_7_x25519_NEON
+#define x25519_fe_invert ring_core_0_17_7_x25519_fe_invert
+#define x25519_fe_isnegative ring_core_0_17_7_x25519_fe_isnegative
+#define x25519_fe_mul_ttt ring_core_0_17_7_x25519_fe_mul_ttt
+#define x25519_fe_neg ring_core_0_17_7_x25519_fe_neg
+#define x25519_fe_tobytes ring_core_0_17_7_x25519_fe_tobytes
+#define x25519_ge_double_scalarmult_vartime ring_core_0_17_7_x25519_ge_double_scalarmult_vartime
+#define x25519_ge_frombytes_vartime ring_core_0_17_7_x25519_ge_frombytes_vartime
+#define x25519_ge_scalarmult_base ring_core_0_17_7_x25519_ge_scalarmult_base
+#define x25519_ge_scalarmult_base_adx ring_core_0_17_7_x25519_ge_scalarmult_base_adx
+#define x25519_public_from_private_generic_masked ring_core_0_17_7_x25519_public_from_private_generic_masked
+#define x25519_sc_mask ring_core_0_17_7_x25519_sc_mask
+#define x25519_sc_muladd ring_core_0_17_7_x25519_sc_muladd
+#define x25519_sc_reduce ring_core_0_17_7_x25519_sc_reduce
+#define x25519_scalar_mult_adx ring_core_0_17_7_x25519_scalar_mult_adx
+#define x25519_scalar_mult_generic_masked ring_core_0_17_7_x25519_scalar_mult_generic_masked
+
+#endif
+#endif
diff --git a/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc b/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc
new file mode 100644
index 000000000..65ce0cfaa
--- /dev/null
+++ b/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc
@@ -0,0 +1,236 @@
+
+%ifndef ring_core_generated_PREFIX_SYMBOLS_NASM_INC
+%define ring_core_generated_PREFIX_SYMBOLS_NASM_INC
+
+%ifidn __OUTPUT_FORMAT__,win32
+%define _ecp_nistz256_point_double _p256_point_double
+%define _ecp_nistz256_point_add _p256_point_add
+%define _ecp_nistz256_point_add_affine _p256_point_add_affine
+%define _ecp_nistz256_ord_mul_mont _p256_scalar_mul_mont
+%define _ecp_nistz256_ord_sqr_mont _p256_scalar_sqr_rep_mont
+%define _ecp_nistz256_mul_mont _p256_mul_mont
+%define _ecp_nistz256_sqr_mont _p256_sqr_mont
+%define _CRYPTO_memcmp _ring_core_0_17_7_CRYPTO_memcmp
+%define _CRYPTO_poly1305_finish _ring_core_0_17_7_CRYPTO_poly1305_finish
+%define _CRYPTO_poly1305_finish_neon _ring_core_0_17_7_CRYPTO_poly1305_finish_neon
+%define _CRYPTO_poly1305_init _ring_core_0_17_7_CRYPTO_poly1305_init
+%define _CRYPTO_poly1305_init_neon _ring_core_0_17_7_CRYPTO_poly1305_init_neon
+%define _CRYPTO_poly1305_update _ring_core_0_17_7_CRYPTO_poly1305_update
+%define _CRYPTO_poly1305_update_neon _ring_core_0_17_7_CRYPTO_poly1305_update_neon
+%define _ChaCha20_ctr32 _ring_core_0_17_7_ChaCha20_ctr32
+%define _LIMBS_add_mod _ring_core_0_17_7_LIMBS_add_mod
+%define _LIMBS_are_even _ring_core_0_17_7_LIMBS_are_even
+%define _LIMBS_are_zero _ring_core_0_17_7_LIMBS_are_zero
+%define _LIMBS_equal _ring_core_0_17_7_LIMBS_equal
+%define _LIMBS_equal_limb _ring_core_0_17_7_LIMBS_equal_limb
+%define _LIMBS_less_than _ring_core_0_17_7_LIMBS_less_than
+%define _LIMBS_less_than_limb _ring_core_0_17_7_LIMBS_less_than_limb
+%define _LIMBS_reduce_once _ring_core_0_17_7_LIMBS_reduce_once
+%define _LIMBS_select_512_32 _ring_core_0_17_7_LIMBS_select_512_32
+%define _LIMBS_shl_mod _ring_core_0_17_7_LIMBS_shl_mod
+%define _LIMBS_sub_mod _ring_core_0_17_7_LIMBS_sub_mod
+%define _LIMBS_window5_split_window _ring_core_0_17_7_LIMBS_window5_split_window
+%define _LIMBS_window5_unsplit_window _ring_core_0_17_7_LIMBS_window5_unsplit_window
+%define _LIMB_shr _ring_core_0_17_7_LIMB_shr
+%define _OPENSSL_armcap_P _ring_core_0_17_7_OPENSSL_armcap_P
+%define _OPENSSL_cpuid_setup _ring_core_0_17_7_OPENSSL_cpuid_setup
+%define _OPENSSL_ia32cap_P _ring_core_0_17_7_OPENSSL_ia32cap_P
+%define _aes_hw_ctr32_encrypt_blocks _ring_core_0_17_7_aes_hw_ctr32_encrypt_blocks
+%define _aes_hw_encrypt _ring_core_0_17_7_aes_hw_encrypt
+%define _aes_hw_set_encrypt_key _ring_core_0_17_7_aes_hw_set_encrypt_key
+%define _aes_nohw_ctr32_encrypt_blocks _ring_core_0_17_7_aes_nohw_ctr32_encrypt_blocks
+%define _aes_nohw_encrypt _ring_core_0_17_7_aes_nohw_encrypt
+%define _aes_nohw_set_encrypt_key _ring_core_0_17_7_aes_nohw_set_encrypt_key
+%define _aesni_gcm_decrypt _ring_core_0_17_7_aesni_gcm_decrypt
+%define _aesni_gcm_encrypt _ring_core_0_17_7_aesni_gcm_encrypt
+%define _bn_from_montgomery_in_place _ring_core_0_17_7_bn_from_montgomery_in_place
+%define _bn_gather5 _ring_core_0_17_7_bn_gather5
+%define _bn_mul_mont _ring_core_0_17_7_bn_mul_mont
+%define _bn_mul_mont_gather5 _ring_core_0_17_7_bn_mul_mont_gather5
+%define _bn_neg_inv_mod_r_u64 _ring_core_0_17_7_bn_neg_inv_mod_r_u64
+%define _bn_power5 _ring_core_0_17_7_bn_power5
+%define _bn_scatter5 _ring_core_0_17_7_bn_scatter5
+%define _bn_sqr8x_internal _ring_core_0_17_7_bn_sqr8x_internal
+%define _bn_sqrx8x_internal _ring_core_0_17_7_bn_sqrx8x_internal
+%define _bsaes_ctr32_encrypt_blocks _ring_core_0_17_7_bsaes_ctr32_encrypt_blocks
+%define _bssl_constant_time_test_conditional_memcpy _ring_core_0_17_7_bssl_constant_time_test_conditional_memcpy
+%define _bssl_constant_time_test_conditional_memxor _ring_core_0_17_7_bssl_constant_time_test_conditional_memxor
+%define _bssl_constant_time_test_main _ring_core_0_17_7_bssl_constant_time_test_main
+%define _chacha20_poly1305_open _ring_core_0_17_7_chacha20_poly1305_open
+%define _chacha20_poly1305_seal _ring_core_0_17_7_chacha20_poly1305_seal
+%define _fiat_curve25519_adx_mul _ring_core_0_17_7_fiat_curve25519_adx_mul
+%define _fiat_curve25519_adx_square _ring_core_0_17_7_fiat_curve25519_adx_square
+%define _gcm_ghash_avx _ring_core_0_17_7_gcm_ghash_avx
+%define _gcm_ghash_clmul _ring_core_0_17_7_gcm_ghash_clmul
+%define _gcm_ghash_neon _ring_core_0_17_7_gcm_ghash_neon
+%define _gcm_gmult_clmul _ring_core_0_17_7_gcm_gmult_clmul
+%define _gcm_gmult_neon _ring_core_0_17_7_gcm_gmult_neon
+%define _gcm_init_avx _ring_core_0_17_7_gcm_init_avx
+%define _gcm_init_clmul _ring_core_0_17_7_gcm_init_clmul
+%define _gcm_init_neon _ring_core_0_17_7_gcm_init_neon
+%define _k25519Precomp _ring_core_0_17_7_k25519Precomp
+%define _limbs_mul_add_limb _ring_core_0_17_7_limbs_mul_add_limb
+%define _little_endian_bytes_from_scalar _ring_core_0_17_7_little_endian_bytes_from_scalar
+%define _ecp_nistz256_neg _ring_core_0_17_7_ecp_nistz256_neg
+%define _ecp_nistz256_select_w5 _ring_core_0_17_7_ecp_nistz256_select_w5
+%define _ecp_nistz256_select_w7 _ring_core_0_17_7_ecp_nistz256_select_w7
+%define _p256_mul_mont _ring_core_0_17_7_p256_mul_mont
+%define _p256_point_add _ring_core_0_17_7_p256_point_add
+%define _p256_point_add_affine _ring_core_0_17_7_p256_point_add_affine
+%define _p256_point_double _ring_core_0_17_7_p256_point_double
+%define _p256_point_mul _ring_core_0_17_7_p256_point_mul
+%define _p256_point_mul_base _ring_core_0_17_7_p256_point_mul_base
+%define _p256_point_mul_base_vartime _ring_core_0_17_7_p256_point_mul_base_vartime
+%define _p256_scalar_mul_mont _ring_core_0_17_7_p256_scalar_mul_mont
+%define _p256_scalar_sqr_rep_mont _ring_core_0_17_7_p256_scalar_sqr_rep_mont
+%define _p256_sqr_mont _ring_core_0_17_7_p256_sqr_mont
+%define _p384_elem_div_by_2 _ring_core_0_17_7_p384_elem_div_by_2
+%define _p384_elem_mul_mont _ring_core_0_17_7_p384_elem_mul_mont
+%define _p384_elem_neg _ring_core_0_17_7_p384_elem_neg
+%define _p384_elem_sub _ring_core_0_17_7_p384_elem_sub
+%define _p384_point_add _ring_core_0_17_7_p384_point_add
+%define _p384_point_double _ring_core_0_17_7_p384_point_double
+%define _p384_point_mul _ring_core_0_17_7_p384_point_mul
+%define _p384_scalar_mul_mont _ring_core_0_17_7_p384_scalar_mul_mont
+%define _openssl_poly1305_neon2_addmulmod _ring_core_0_17_7_openssl_poly1305_neon2_addmulmod
+%define _openssl_poly1305_neon2_blocks _ring_core_0_17_7_openssl_poly1305_neon2_blocks
+%define _sha256_block_data_order _ring_core_0_17_7_sha256_block_data_order
+%define _sha512_block_data_order _ring_core_0_17_7_sha512_block_data_order
+%define _vpaes_ctr32_encrypt_blocks _ring_core_0_17_7_vpaes_ctr32_encrypt_blocks
+%define _vpaes_encrypt _ring_core_0_17_7_vpaes_encrypt
+%define _vpaes_encrypt_key_to_bsaes _ring_core_0_17_7_vpaes_encrypt_key_to_bsaes
+%define _vpaes_set_encrypt_key _ring_core_0_17_7_vpaes_set_encrypt_key
+%define _x25519_NEON _ring_core_0_17_7_x25519_NEON
+%define _x25519_fe_invert _ring_core_0_17_7_x25519_fe_invert
+%define _x25519_fe_isnegative _ring_core_0_17_7_x25519_fe_isnegative
+%define _x25519_fe_mul_ttt _ring_core_0_17_7_x25519_fe_mul_ttt
+%define _x25519_fe_neg _ring_core_0_17_7_x25519_fe_neg
+%define _x25519_fe_tobytes _ring_core_0_17_7_x25519_fe_tobytes
+%define _x25519_ge_double_scalarmult_vartime _ring_core_0_17_7_x25519_ge_double_scalarmult_vartime
+%define _x25519_ge_frombytes_vartime _ring_core_0_17_7_x25519_ge_frombytes_vartime
+%define _x25519_ge_scalarmult_base _ring_core_0_17_7_x25519_ge_scalarmult_base
+%define _x25519_ge_scalarmult_base_adx _ring_core_0_17_7_x25519_ge_scalarmult_base_adx
+%define _x25519_public_from_private_generic_masked _ring_core_0_17_7_x25519_public_from_private_generic_masked
+%define _x25519_sc_mask _ring_core_0_17_7_x25519_sc_mask
+%define _x25519_sc_muladd _ring_core_0_17_7_x25519_sc_muladd
+%define _x25519_sc_reduce _ring_core_0_17_7_x25519_sc_reduce
+%define _x25519_scalar_mult_adx _ring_core_0_17_7_x25519_scalar_mult_adx
+%define _x25519_scalar_mult_generic_masked _ring_core_0_17_7_x25519_scalar_mult_generic_masked
+
+%else
+%define ecp_nistz256_point_double p256_point_double
+%define ecp_nistz256_point_add p256_point_add
+%define ecp_nistz256_point_add_affine p256_point_add_affine
+%define ecp_nistz256_ord_mul_mont p256_scalar_mul_mont
+%define ecp_nistz256_ord_sqr_mont p256_scalar_sqr_rep_mont
+%define ecp_nistz256_mul_mont p256_mul_mont
+%define ecp_nistz256_sqr_mont p256_sqr_mont
+%define CRYPTO_memcmp ring_core_0_17_7_CRYPTO_memcmp
+%define CRYPTO_poly1305_finish ring_core_0_17_7_CRYPTO_poly1305_finish
+%define CRYPTO_poly1305_finish_neon ring_core_0_17_7_CRYPTO_poly1305_finish_neon
+%define CRYPTO_poly1305_init ring_core_0_17_7_CRYPTO_poly1305_init
+%define CRYPTO_poly1305_init_neon ring_core_0_17_7_CRYPTO_poly1305_init_neon
+%define CRYPTO_poly1305_update ring_core_0_17_7_CRYPTO_poly1305_update
+%define CRYPTO_poly1305_update_neon ring_core_0_17_7_CRYPTO_poly1305_update_neon
+%define ChaCha20_ctr32 ring_core_0_17_7_ChaCha20_ctr32
+%define LIMBS_add_mod ring_core_0_17_7_LIMBS_add_mod
+%define LIMBS_are_even ring_core_0_17_7_LIMBS_are_even
+%define LIMBS_are_zero ring_core_0_17_7_LIMBS_are_zero
+%define LIMBS_equal ring_core_0_17_7_LIMBS_equal
+%define LIMBS_equal_limb ring_core_0_17_7_LIMBS_equal_limb
+%define LIMBS_less_than ring_core_0_17_7_LIMBS_less_than
+%define LIMBS_less_than_limb ring_core_0_17_7_LIMBS_less_than_limb
+%define LIMBS_reduce_once ring_core_0_17_7_LIMBS_reduce_once
+%define LIMBS_select_512_32 ring_core_0_17_7_LIMBS_select_512_32
+%define LIMBS_shl_mod ring_core_0_17_7_LIMBS_shl_mod
+%define LIMBS_sub_mod ring_core_0_17_7_LIMBS_sub_mod
+%define LIMBS_window5_split_window ring_core_0_17_7_LIMBS_window5_split_window
+%define LIMBS_window5_unsplit_window ring_core_0_17_7_LIMBS_window5_unsplit_window
+%define LIMB_shr ring_core_0_17_7_LIMB_shr
+%define OPENSSL_armcap_P ring_core_0_17_7_OPENSSL_armcap_P
+%define OPENSSL_cpuid_setup ring_core_0_17_7_OPENSSL_cpuid_setup
+%define OPENSSL_ia32cap_P ring_core_0_17_7_OPENSSL_ia32cap_P
+%define aes_hw_ctr32_encrypt_blocks ring_core_0_17_7_aes_hw_ctr32_encrypt_blocks
+%define aes_hw_encrypt ring_core_0_17_7_aes_hw_encrypt
+%define aes_hw_set_encrypt_key ring_core_0_17_7_aes_hw_set_encrypt_key
+%define aes_nohw_ctr32_encrypt_blocks ring_core_0_17_7_aes_nohw_ctr32_encrypt_blocks
+%define aes_nohw_encrypt ring_core_0_17_7_aes_nohw_encrypt
+%define aes_nohw_set_encrypt_key ring_core_0_17_7_aes_nohw_set_encrypt_key
+%define aesni_gcm_decrypt ring_core_0_17_7_aesni_gcm_decrypt
+%define aesni_gcm_encrypt ring_core_0_17_7_aesni_gcm_encrypt
+%define bn_from_montgomery_in_place ring_core_0_17_7_bn_from_montgomery_in_place
+%define bn_gather5 ring_core_0_17_7_bn_gather5
+%define bn_mul_mont ring_core_0_17_7_bn_mul_mont
+%define bn_mul_mont_gather5 ring_core_0_17_7_bn_mul_mont_gather5
+%define bn_neg_inv_mod_r_u64 ring_core_0_17_7_bn_neg_inv_mod_r_u64
+%define bn_power5 ring_core_0_17_7_bn_power5
+%define bn_scatter5 ring_core_0_17_7_bn_scatter5
+%define bn_sqr8x_internal ring_core_0_17_7_bn_sqr8x_internal
+%define bn_sqrx8x_internal ring_core_0_17_7_bn_sqrx8x_internal
+%define bsaes_ctr32_encrypt_blocks ring_core_0_17_7_bsaes_ctr32_encrypt_blocks
+%define bssl_constant_time_test_conditional_memcpy ring_core_0_17_7_bssl_constant_time_test_conditional_memcpy
+%define bssl_constant_time_test_conditional_memxor ring_core_0_17_7_bssl_constant_time_test_conditional_memxor
+%define bssl_constant_time_test_main ring_core_0_17_7_bssl_constant_time_test_main
+%define chacha20_poly1305_open ring_core_0_17_7_chacha20_poly1305_open
+%define chacha20_poly1305_seal ring_core_0_17_7_chacha20_poly1305_seal
+%define fiat_curve25519_adx_mul ring_core_0_17_7_fiat_curve25519_adx_mul
+%define fiat_curve25519_adx_square ring_core_0_17_7_fiat_curve25519_adx_square
+%define gcm_ghash_avx ring_core_0_17_7_gcm_ghash_avx
+%define gcm_ghash_clmul ring_core_0_17_7_gcm_ghash_clmul
+%define gcm_ghash_neon ring_core_0_17_7_gcm_ghash_neon
+%define gcm_gmult_clmul ring_core_0_17_7_gcm_gmult_clmul
+%define gcm_gmult_neon ring_core_0_17_7_gcm_gmult_neon
+%define gcm_init_avx ring_core_0_17_7_gcm_init_avx
+%define gcm_init_clmul ring_core_0_17_7_gcm_init_clmul
+%define gcm_init_neon ring_core_0_17_7_gcm_init_neon
+%define k25519Precomp ring_core_0_17_7_k25519Precomp
+%define limbs_mul_add_limb ring_core_0_17_7_limbs_mul_add_limb
+%define little_endian_bytes_from_scalar ring_core_0_17_7_little_endian_bytes_from_scalar
+%define ecp_nistz256_neg ring_core_0_17_7_ecp_nistz256_neg
+%define ecp_nistz256_select_w5 ring_core_0_17_7_ecp_nistz256_select_w5
+%define ecp_nistz256_select_w7 ring_core_0_17_7_ecp_nistz256_select_w7
+%define p256_mul_mont ring_core_0_17_7_p256_mul_mont
+%define p256_point_add ring_core_0_17_7_p256_point_add
+%define p256_point_add_affine ring_core_0_17_7_p256_point_add_affine
+%define p256_point_double ring_core_0_17_7_p256_point_double
+%define p256_point_mul ring_core_0_17_7_p256_point_mul
+%define p256_point_mul_base ring_core_0_17_7_p256_point_mul_base
+%define p256_point_mul_base_vartime ring_core_0_17_7_p256_point_mul_base_vartime
+%define p256_scalar_mul_mont ring_core_0_17_7_p256_scalar_mul_mont
+%define p256_scalar_sqr_rep_mont ring_core_0_17_7_p256_scalar_sqr_rep_mont
+%define p256_sqr_mont ring_core_0_17_7_p256_sqr_mont
+%define p384_elem_div_by_2 ring_core_0_17_7_p384_elem_div_by_2
+%define p384_elem_mul_mont ring_core_0_17_7_p384_elem_mul_mont
+%define p384_elem_neg ring_core_0_17_7_p384_elem_neg
+%define p384_elem_sub ring_core_0_17_7_p384_elem_sub
+%define p384_point_add ring_core_0_17_7_p384_point_add
+%define p384_point_double ring_core_0_17_7_p384_point_double
+%define p384_point_mul ring_core_0_17_7_p384_point_mul
+%define p384_scalar_mul_mont ring_core_0_17_7_p384_scalar_mul_mont
+%define openssl_poly1305_neon2_addmulmod ring_core_0_17_7_openssl_poly1305_neon2_addmulmod
+%define openssl_poly1305_neon2_blocks ring_core_0_17_7_openssl_poly1305_neon2_blocks
+%define sha256_block_data_order ring_core_0_17_7_sha256_block_data_order
+%define sha512_block_data_order ring_core_0_17_7_sha512_block_data_order
+%define vpaes_ctr32_encrypt_blocks ring_core_0_17_7_vpaes_ctr32_encrypt_blocks
+%define vpaes_encrypt ring_core_0_17_7_vpaes_encrypt
+%define vpaes_encrypt_key_to_bsaes ring_core_0_17_7_vpaes_encrypt_key_to_bsaes
+%define vpaes_set_encrypt_key ring_core_0_17_7_vpaes_set_encrypt_key
+%define x25519_NEON ring_core_0_17_7_x25519_NEON
+%define x25519_fe_invert ring_core_0_17_7_x25519_fe_invert
+%define x25519_fe_isnegative ring_core_0_17_7_x25519_fe_isnegative
+%define x25519_fe_mul_ttt ring_core_0_17_7_x25519_fe_mul_ttt
+%define x25519_fe_neg ring_core_0_17_7_x25519_fe_neg
+%define x25519_fe_tobytes ring_core_0_17_7_x25519_fe_tobytes
+%define x25519_ge_double_scalarmult_vartime ring_core_0_17_7_x25519_ge_double_scalarmult_vartime
+%define x25519_ge_frombytes_vartime ring_core_0_17_7_x25519_ge_frombytes_vartime
+%define x25519_ge_scalarmult_base ring_core_0_17_7_x25519_ge_scalarmult_base
+%define x25519_ge_scalarmult_base_adx ring_core_0_17_7_x25519_ge_scalarmult_base_adx
+%define x25519_public_from_private_generic_masked ring_core_0_17_7_x25519_public_from_private_generic_masked
+%define x25519_sc_mask ring_core_0_17_7_x25519_sc_mask
+%define x25519_sc_muladd ring_core_0_17_7_x25519_sc_muladd
+%define x25519_sc_reduce ring_core_0_17_7_x25519_sc_reduce
+%define x25519_scalar_mult_adx ring_core_0_17_7_x25519_scalar_mult_adx
+%define x25519_scalar_mult_generic_masked ring_core_0_17_7_x25519_scalar_mult_generic_masked
+
+%endif
+%endif