Release 0.4.4

Also roll bindgen to 0.57.0.

Change-Id: I54feec6f9665b1734c4adfe7deb2e6f0e6dcdccf
Reviewed-on: https://fuchsia-review.googlesource.com/c/mundane/+/495839
Reviewed-by: Drew Fisher <zarvox@google.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5020343..2b33703 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,8 @@
 
 ## Unreleased
 
+## [0.4.4] - 2021-03-04
+
 ### Added
 - Exposed getters for RSA public exponent and modulus
 
diff --git a/Cargo.toml b/Cargo.toml
index 7c51ae8..fa6d738 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,7 +6,7 @@
 
 [package]
 name = "mundane"
-version = "0.4.3"
+version = "0.4.4"
 authors = ["Joshua Liebow-Feeser <joshlf@google.com>"]
 description = "Cryptography which is easy to use and hard to misuse"
 readme = "README.md"
diff --git a/boringssl/bindgen.sh b/boringssl/bindgen.sh
index dbe740f..9f317aa 100755
--- a/boringssl/bindgen.sh
+++ b/boringssl/bindgen.sh
@@ -170,7 +170,7 @@
 # changing the Rust types that are generated for particular C types). If a more
 # recent version of bindgen is available, "roll" bindgen by updating the
 # `BINDGEN_EXPECTED_VERSION` variable here.
-BINDGEN_EXPECTED_VERSION="bindgen 0.54.0"
+BINDGEN_EXPECTED_VERSION="bindgen 0.57.0"
 BINDGEN_GOT_VERSION="$(bindgen --version)"
 if [ "$BINDGEN_GOT_VERSION" != "$BINDGEN_EXPECTED_VERSION" ]; then
     echo "Unexpected version of bindgen: got $BINDGEN_GOT_VERSION; wanted $BINDGEN_EXPECTED_VERSION.
diff --git a/boringssl/boringssl b/boringssl/boringssl
index 9ae40ce..215f4a0 160000
--- a/boringssl/boringssl
+++ b/boringssl/boringssl
@@ -1 +1 @@
-Subproject commit 9ae40ce9ad7e2b1e0140dc98318bc742e8387f88
+Subproject commit 215f4a0287a0eaa19da5de32c9f4745a28e518be
diff --git a/boringssl/boringssl.rs b/boringssl/boringssl.rs
index f4167a2..e7064b0 100644
--- a/boringssl/boringssl.rs
+++ b/boringssl/boringssl.rs
@@ -15,24 +15,23 @@
 #![allow(non_upper_case_globals)]
 #![allow(clippy::all)]
 
-#[link(name = "crypto_0_4_3")]
+#[link(name = "crypto_0_4_4")]
 extern "C" {}
 
-/* automatically generated by rust-bindgen */
+/* automatically generated by rust-bindgen 0.57.0 */
 
 #[repr(C)]
 #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage, Align> {
+pub struct __BindgenBitfieldUnit<Storage> {
     storage: Storage,
-    align: [Align; 0],
 }
-impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align> {
+impl<Storage> __BindgenBitfieldUnit<Storage> {
     #[inline]
     pub const fn new(storage: Storage) -> Self {
-        Self { storage, align: [] }
+        Self { storage }
     }
 }
-impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>
+impl<Storage> __BindgenBitfieldUnit<Storage>
 where
     Storage: AsRef<[u8]> + AsMut<[u8]>,
 {
@@ -104,9 +103,44 @@
 pub const SHA384_DIGEST_LENGTH: u32 = 48;
 pub const SHA512_DIGEST_LENGTH: u32 = 64;
 pub type size_t = ::std::os::raw::c_ulong;
-pub type __uint8_t = ::std::os::raw::c_uchar;
-pub type __uint32_t = ::std::os::raw::c_uint;
-pub type __uint64_t = ::std::os::raw::c_ulong;
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct _opaque_pthread_rwlock_t {
+    pub __sig: ::std::os::raw::c_long,
+    pub __opaque: [::std::os::raw::c_char; 192usize],
+}
+#[test]
+fn bindgen_test_layout__opaque_pthread_rwlock_t() {
+    assert_eq!(
+        ::std::mem::size_of::<_opaque_pthread_rwlock_t>(),
+        200usize,
+        concat!("Size of: ", stringify!(_opaque_pthread_rwlock_t))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<_opaque_pthread_rwlock_t>(),
+        8usize,
+        concat!("Alignment of ", stringify!(_opaque_pthread_rwlock_t))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<_opaque_pthread_rwlock_t>())).__sig as *const _ as usize },
+        0usize,
+        concat!("Offset of field: ", stringify!(_opaque_pthread_rwlock_t), "::", stringify!(__sig))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<_opaque_pthread_rwlock_t>())).__opaque as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(_opaque_pthread_rwlock_t),
+            "::",
+            stringify!(__opaque)
+        )
+    );
+}
+pub type __darwin_pthread_rwlock_t = _opaque_pthread_rwlock_t;
+pub type pthread_rwlock_t = __darwin_pthread_rwlock_t;
 pub type BIGNUM = bignum_st;
 pub type BN_GENCB = bn_gencb_st;
 pub type BN_MONT_CTX = bn_mont_ctx_st;
@@ -170,56 +204,26 @@
 pub type SHA256_CTX = sha256_state_st;
 pub type SHA512_CTX = sha512_state_st;
 pub type SHA_CTX = sha_state_st;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union crypto_mutex_st {
-    pub alignment: f64,
-    pub padding: [u8; 56usize],
-    _bindgen_union_align: [u64; 7usize],
-}
-#[test]
-fn bindgen_test_layout_crypto_mutex_st() {
-    assert_eq!(
-        ::std::mem::size_of::<crypto_mutex_st>(),
-        56usize,
-        concat!("Size of: ", stringify!(crypto_mutex_st))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<crypto_mutex_st>(),
-        8usize,
-        concat!("Alignment of ", stringify!(crypto_mutex_st))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<crypto_mutex_st>())).alignment as *const _ as usize },
-        0usize,
-        concat!("Offset of field: ", stringify!(crypto_mutex_st), "::", stringify!(alignment))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<crypto_mutex_st>())).padding as *const _ as usize },
-        0usize,
-        concat!("Offset of field: ", stringify!(crypto_mutex_st), "::", stringify!(padding))
-    );
-}
-pub type CRYPTO_MUTEX = crypto_mutex_st;
+pub type CRYPTO_MUTEX = pthread_rwlock_t;
 pub type CRYPTO_refcount_t = u32;
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_BN_init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_BN_init"]
     pub fn BN_init(bn: *mut BIGNUM);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_BN_free"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_BN_free"]
     pub fn BN_free(bn: *mut BIGNUM);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_BN_num_bytes"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_BN_num_bytes"]
     pub fn BN_num_bytes(bn: *const BIGNUM) -> ::std::os::raw::c_uint;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_BN_set_u64"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_BN_set_u64"]
     pub fn BN_set_u64(bn: *mut BIGNUM, value: u64) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_BN_bn2bin_padded"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_BN_bn2bin_padded"]
     pub fn BN_bn2bin_padded(out: *mut u8, len: size_t, in_: *const BIGNUM)
         -> ::std::os::raw::c_int;
 }
@@ -366,11 +370,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CBS_init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CBS_init"]
     pub fn CBS_init(cbs: *mut CBS, data: *const u8, len: size_t);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CBS_len"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CBS_len"]
     pub fn CBS_len(cbs: *const CBS) -> size_t;
 }
 #[repr(C)]
@@ -470,27 +474,27 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CBB_init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CBB_init"]
     pub fn CBB_init(cbb: *mut CBB, initial_capacity: size_t) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CBB_cleanup"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CBB_cleanup"]
     pub fn CBB_cleanup(cbb: *mut CBB);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CBB_data"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CBB_data"]
     pub fn CBB_data(cbb: *const CBB) -> *const u8;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CBB_len"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CBB_len"]
     pub fn CBB_len(cbb: *const CBB) -> size_t;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ED25519_keypair"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ED25519_keypair"]
     pub fn ED25519_keypair(out_public_key: *mut u8, out_private_key: *mut u8);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ED25519_sign"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ED25519_sign"]
     pub fn ED25519_sign(
         out_sig: *mut u8,
         message: *const u8,
@@ -499,7 +503,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ED25519_verify"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ED25519_verify"]
     pub fn ED25519_verify(
         message: *const u8,
         message_len: size_t,
@@ -508,7 +512,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ED25519_keypair_from_seed"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ED25519_keypair_from_seed"]
     pub fn ED25519_keypair_from_seed(
         out_public_key: *mut u8,
         out_private_key: *mut u8,
@@ -516,15 +520,15 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_GROUP_new_by_curve_name"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_GROUP_new_by_curve_name"]
     pub fn EC_GROUP_new_by_curve_name(nid: ::std::os::raw::c_int) -> *mut EC_GROUP;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_GROUP_get_curve_name"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_GROUP_get_curve_name"]
     pub fn EC_GROUP_get_curve_name(group: *const EC_GROUP) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_curve_nid2nist"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_curve_nid2nist"]
     pub fn EC_curve_nid2nist(nid: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
 }
 #[repr(C)]
@@ -600,35 +604,35 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_new"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_new"]
     pub fn EC_KEY_new() -> *mut EC_KEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_free"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_free"]
     pub fn EC_KEY_free(key: *mut EC_KEY);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_up_ref"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_up_ref"]
     pub fn EC_KEY_up_ref(key: *mut EC_KEY) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_get0_group"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_get0_group"]
     pub fn EC_KEY_get0_group(key: *const EC_KEY) -> *const EC_GROUP;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_set_group"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_set_group"]
     pub fn EC_KEY_set_group(key: *mut EC_KEY, group: *const EC_GROUP) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_generate_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_generate_key"]
     pub fn EC_KEY_generate_key(key: *mut EC_KEY) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_parse_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_parse_private_key"]
     pub fn EC_KEY_parse_private_key(cbs: *mut CBS, group: *const EC_GROUP) -> *mut EC_KEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EC_KEY_marshal_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EC_KEY_marshal_private_key"]
     pub fn EC_KEY_marshal_private_key(
         cbb: *mut CBB,
         key: *const EC_KEY,
@@ -636,7 +640,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ECDSA_sign"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ECDSA_sign"]
     pub fn ECDSA_sign(
         type_: ::std::os::raw::c_int,
         digest: *const u8,
@@ -647,7 +651,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ECDSA_verify"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ECDSA_verify"]
     pub fn ECDSA_verify(
         type_: ::std::os::raw::c_int,
         digest: *const u8,
@@ -658,41 +662,41 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ECDSA_size"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ECDSA_size"]
     pub fn ECDSA_size(key: *const EC_KEY) -> size_t;
 }
 pub type ERR_print_errors_callback_t = ::std::option::Option<
     unsafe extern "C" fn(
-        str: *const ::std::os::raw::c_char,
+        str_: *const ::std::os::raw::c_char,
         len: size_t,
         ctx: *mut ::std::os::raw::c_void,
     ) -> ::std::os::raw::c_int,
 >;
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_ERR_print_errors_cb"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_ERR_print_errors_cb"]
     pub fn ERR_print_errors_cb(
         callback: ERR_print_errors_callback_t,
         ctx: *mut ::std::os::raw::c_void,
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_md5"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_md5"]
     pub fn EVP_md5() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_sha1"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_sha1"]
     pub fn EVP_sha1() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_sha256"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_sha256"]
     pub fn EVP_sha256() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_sha384"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_sha384"]
     pub fn EVP_sha384() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_sha512"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_sha512"]
     pub fn EVP_sha512() -> *const EVP_MD;
 }
 #[repr(C)]
@@ -742,43 +746,43 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_new"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_new"]
     pub fn EVP_PKEY_new() -> *mut EVP_PKEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_free"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_free"]
     pub fn EVP_PKEY_free(pkey: *mut EVP_PKEY);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_up_ref"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_up_ref"]
     pub fn EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_assign_RSA"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_assign_RSA"]
     pub fn EVP_PKEY_assign_RSA(pkey: *mut EVP_PKEY, key: *mut RSA) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_get1_RSA"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_get1_RSA"]
     pub fn EVP_PKEY_get1_RSA(pkey: *const EVP_PKEY) -> *mut RSA;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_assign_EC_KEY"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_assign_EC_KEY"]
     pub fn EVP_PKEY_assign_EC_KEY(pkey: *mut EVP_PKEY, key: *mut EC_KEY) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PKEY_get1_EC_KEY"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PKEY_get1_EC_KEY"]
     pub fn EVP_PKEY_get1_EC_KEY(pkey: *const EVP_PKEY) -> *mut EC_KEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_parse_public_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_parse_public_key"]
     pub fn EVP_parse_public_key(cbs: *mut CBS) -> *mut EVP_PKEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_marshal_public_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_marshal_public_key"]
     pub fn EVP_marshal_public_key(cbb: *mut CBB, key: *const EVP_PKEY) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_PKCS5_PBKDF2_HMAC"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_PKCS5_PBKDF2_HMAC"]
     pub fn PKCS5_PBKDF2_HMAC(
         password: *const ::std::os::raw::c_char,
         password_len: size_t,
@@ -791,7 +795,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_EVP_PBE_scrypt"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_EVP_PBE_scrypt"]
     pub fn EVP_PBE_scrypt(
         password: *const ::std::os::raw::c_char,
         password_len: size_t,
@@ -895,15 +899,15 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_CTX_init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_CTX_init"]
     pub fn HMAC_CTX_init(ctx: *mut HMAC_CTX);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_CTX_cleanup"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_CTX_cleanup"]
     pub fn HMAC_CTX_cleanup(ctx: *mut HMAC_CTX);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_Init_ex"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_Init_ex"]
     pub fn HMAC_Init_ex(
         ctx: *mut HMAC_CTX,
         key: *const ::std::os::raw::c_void,
@@ -913,7 +917,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_Update"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_Update"]
     pub fn HMAC_Update(
         ctx: *mut HMAC_CTX,
         data: *const u8,
@@ -921,7 +925,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_Final"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_Final"]
     pub fn HMAC_Final(
         ctx: *mut HMAC_CTX,
         out: *mut u8,
@@ -929,11 +933,11 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_size"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_size"]
     pub fn HMAC_size(ctx: *const HMAC_CTX) -> size_t;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_HMAC_CTX_copy"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_HMAC_CTX_copy"]
     pub fn HMAC_CTX_copy(dest: *mut HMAC_CTX, src: *const HMAC_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -978,11 +982,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_MD5_Init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_MD5_Init"]
     pub fn MD5_Init(md5: *mut MD5_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_MD5_Update"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_MD5_Update"]
     pub fn MD5_Update(
         md5: *mut MD5_CTX,
         data: *const ::std::os::raw::c_void,
@@ -990,11 +994,11 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_MD5_Final"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_MD5_Final"]
     pub fn MD5_Final(out: *mut u8, md5: *mut MD5_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_MD5_Transform"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_MD5_Transform"]
     pub fn MD5_Transform(md5: *mut MD5_CTX, block: *const u8);
 }
 #[repr(C)]
@@ -1045,7 +1049,7 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_CRYPTO_memcmp"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_CRYPTO_memcmp"]
     pub fn CRYPTO_memcmp(
         a: *const ::std::os::raw::c_void,
         b: *const ::std::os::raw::c_void,
@@ -1053,7 +1057,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RAND_bytes"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RAND_bytes"]
     pub fn RAND_bytes(buf: *mut u8, len: size_t) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1092,39 +1096,39 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RC4_set_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RC4_set_key"]
     pub fn RC4_set_key(rc4key: *mut RC4_KEY, len: ::std::os::raw::c_uint, key: *const u8);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RC4"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RC4"]
     pub fn RC4(key: *mut RC4_KEY, len: size_t, in_: *const u8, out: *mut u8);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_new"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_new"]
     pub fn RSA_new() -> *mut RSA;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_free"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_free"]
     pub fn RSA_free(rsa: *mut RSA);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_up_ref"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_up_ref"]
     pub fn RSA_up_ref(rsa: *mut RSA) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_bits"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_bits"]
     pub fn RSA_bits(rsa: *const RSA) -> ::std::os::raw::c_uint;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_get0_n"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_get0_n"]
     pub fn RSA_get0_n(rsa: *const RSA) -> *const BIGNUM;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_get0_e"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_get0_e"]
     pub fn RSA_get0_e(rsa: *const RSA) -> *const BIGNUM;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_generate_key_ex"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_generate_key_ex"]
     pub fn RSA_generate_key_ex(
         rsa: *mut RSA,
         bits: ::std::os::raw::c_int,
@@ -1133,7 +1137,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_sign"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_sign"]
     pub fn RSA_sign(
         hash_nid: ::std::os::raw::c_int,
         in_: *const u8,
@@ -1144,7 +1148,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_sign_pss_mgf1"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_sign_pss_mgf1"]
     pub fn RSA_sign_pss_mgf1(
         rsa: *mut RSA,
         out_len: *mut size_t,
@@ -1158,7 +1162,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_verify"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_verify"]
     pub fn RSA_verify(
         hash_nid: ::std::os::raw::c_int,
         msg: *const u8,
@@ -1169,7 +1173,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_verify_pss_mgf1"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_verify_pss_mgf1"]
     pub fn RSA_verify_pss_mgf1(
         rsa: *mut RSA,
         msg: *const u8,
@@ -1182,15 +1186,15 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_size"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_size"]
     pub fn RSA_size(rsa: *const RSA) -> ::std::os::raw::c_uint;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_parse_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_parse_private_key"]
     pub fn RSA_parse_private_key(cbs: *mut CBS) -> *mut RSA;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_RSA_marshal_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_RSA_marshal_private_key"]
     pub fn RSA_marshal_private_key(cbb: *mut CBB, rsa: *const RSA) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1338,12 +1342,14 @@
     pub num_blindings: ::std::os::raw::c_uint,
     pub blindings: *mut *mut BN_BLINDING,
     pub blindings_inuse: *mut ::std::os::raw::c_uchar,
-    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
+    pub blinding_fork_generation: u64,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
     pub __bindgen_padding_0: [u8; 7usize],
 }
 #[test]
 fn bindgen_test_layout_rsa_st() {
-    assert_eq!(::std::mem::size_of::<rsa_st>(), 232usize, concat!("Size of: ", stringify!(rsa_st)));
+    assert_eq!(::std::mem::size_of::<rsa_st>(), 384usize, concat!("Size of: ", stringify!(rsa_st)));
     assert_eq!(
         ::std::mem::align_of::<rsa_st>(),
         8usize,
@@ -1416,37 +1422,37 @@
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).mont_n as *const _ as usize },
-        144usize,
+        288usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(mont_n))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).mont_p as *const _ as usize },
-        152usize,
+        296usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(mont_p))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).mont_q as *const _ as usize },
-        160usize,
+        304usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(mont_q))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).d_fixed as *const _ as usize },
-        168usize,
+        312usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(d_fixed))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).dmp1_fixed as *const _ as usize },
-        176usize,
+        320usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(dmp1_fixed))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).dmq1_fixed as *const _ as usize },
-        184usize,
+        328usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(dmq1_fixed))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).inv_small_mod_large_mont as *const _ as usize },
-        192usize,
+        336usize,
         concat!(
             "Offset of field: ",
             stringify!(rsa_st),
@@ -1456,19 +1462,29 @@
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).num_blindings as *const _ as usize },
-        200usize,
+        344usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(num_blindings))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).blindings as *const _ as usize },
-        208usize,
+        352usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(blindings))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<rsa_st>())).blindings_inuse as *const _ as usize },
-        216usize,
+        360usize,
         concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(blindings_inuse))
     );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).blinding_fork_generation as *const _ as usize },
+        368usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(blinding_fork_generation)
+        )
+    );
 }
 impl rsa_st {
     #[inline]
@@ -1485,9 +1501,8 @@
     #[inline]
     pub fn new_bitfield_1(
         private_key_frozen: ::std::os::raw::c_uint,
-    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
-        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
-            Default::default();
+    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
         __bindgen_bitfield_unit.set(0usize, 1u8, {
             let private_key_frozen: u32 = unsafe { ::std::mem::transmute(private_key_frozen) };
             private_key_frozen as u64
@@ -1496,11 +1511,11 @@
     }
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA1_Init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA1_Init"]
     pub fn SHA1_Init(sha: *mut SHA_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA1_Update"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA1_Update"]
     pub fn SHA1_Update(
         sha: *mut SHA_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1508,7 +1523,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA1_Final"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA1_Final"]
     pub fn SHA1_Final(out: *mut u8, sha: *mut SHA_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1666,11 +1681,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA256_Init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA256_Init"]
     pub fn SHA256_Init(sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA256_Update"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA256_Update"]
     pub fn SHA256_Update(
         sha: *mut SHA256_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1678,7 +1693,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA256_Final"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA256_Final"]
     pub fn SHA256_Final(out: *mut u8, sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1735,11 +1750,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA384_Init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA384_Init"]
     pub fn SHA384_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA384_Update"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA384_Update"]
     pub fn SHA384_Update(
         sha: *mut SHA512_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1747,15 +1762,15 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA384_Final"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA384_Final"]
     pub fn SHA384_Final(out: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA512_Init"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA512_Init"]
     pub fn SHA512_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA512_Update"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA512_Update"]
     pub fn SHA512_Update(
         sha: *mut SHA512_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1763,7 +1778,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_4_3_SHA512_Final"]
+    #[link_name = "__RUST_MUNDANE_0_4_4_SHA512_Final"]
     pub fn SHA512_Final(out: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]