Release 0.3.0

- Add RSA, RSA-PSS signing
- Move some bare functions to methods
- Add experimental support for ECDSA-SHA512

Change-Id: I003d53cef837d0bb4f131901229f17e2e7c76853
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7aa65bb..f58aaa5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,8 @@
 
 ## [Unreleased]
 
+## [0.3.0] - 2019-02-20
+
 ### Added
 - Added `public::rsa` module which supports RSA-PSS signing.
 
diff --git a/Cargo.toml b/Cargo.toml
index ef35ae1..b4e3f92 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,7 +8,7 @@
 name = "mundane"
 # remember to update html_root_url
 # TODO(joshlf): use version-sync crate to test this in CI
-version = "0.2.2"
+version = "0.3.0"
 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/boringssl b/boringssl/boringssl
index e6eef1c..104306f 160000
--- a/boringssl/boringssl
+++ b/boringssl/boringssl
@@ -1 +1 @@
-Subproject commit e6eef1ca16a022e476bbaedffef044597cfc8f4b
+Subproject commit 104306f587751f34852838915fb61ce5551c2332
diff --git a/boringssl/boringssl.rs b/boringssl/boringssl.rs
index fa23ea6..14844a1 100644
--- a/boringssl/boringssl.rs
+++ b/boringssl/boringssl.rs
@@ -14,7 +14,7 @@
 #![allow(non_snake_case)]
 #![allow(non_upper_case_globals)]
 
-#[link(name = "crypto_0_2_2")]
+#[link(name = "crypto_0_3_0")]
 extern "C" {}
 
 /* automatically generated by rust-bindgen */
@@ -219,15 +219,15 @@
 pub type CRYPTO_MUTEX = pthread_rwlock_t;
 pub type CRYPTO_refcount_t = u32;
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_BN_init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_BN_init"]
     pub fn BN_init(bn: *mut BIGNUM);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_BN_free"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_BN_free"]
     pub fn BN_free(bn: *mut BIGNUM);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_BN_set_u64"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_BN_set_u64"]
     pub fn BN_set_u64(bn: *mut BIGNUM, value: u64) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -373,11 +373,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CBS_init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CBS_init"]
     pub fn CBS_init(cbs: *mut CBS, data: *const u8, len: usize);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CBS_len"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CBS_len"]
     pub fn CBS_len(cbs: *const CBS) -> usize;
 }
 #[repr(C)]
@@ -477,27 +477,27 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CBB_init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CBB_init"]
     pub fn CBB_init(cbb: *mut CBB, initial_capacity: usize) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CBB_cleanup"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CBB_cleanup"]
     pub fn CBB_cleanup(cbb: *mut CBB);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CBB_data"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CBB_data"]
     pub fn CBB_data(cbb: *const CBB) -> *const u8;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CBB_len"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CBB_len"]
     pub fn CBB_len(cbb: *const CBB) -> usize;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ED25519_keypair"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ED25519_keypair"]
     pub fn ED25519_keypair(out_public_key: *mut u8, out_private_key: *mut u8);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ED25519_sign"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ED25519_sign"]
     pub fn ED25519_sign(
         out_sig: *mut u8,
         message: *const u8,
@@ -506,7 +506,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ED25519_verify"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ED25519_verify"]
     pub fn ED25519_verify(
         message: *const u8,
         message_len: usize,
@@ -515,7 +515,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ED25519_keypair_from_seed"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ED25519_keypair_from_seed"]
     pub fn ED25519_keypair_from_seed(
         out_public_key: *mut u8,
         out_private_key: *mut u8,
@@ -523,15 +523,15 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EC_GROUP_new_by_curve_name"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EC_GROUP_get_curve_name"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EC_curve_nid2nist"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EC_curve_nid2nist"]
     pub fn EC_curve_nid2nist(nid: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
 }
 #[repr(C)]
@@ -607,35 +607,35 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EC_KEY_new"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EC_KEY_new"]
     pub fn EC_KEY_new() -> *mut EC_KEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EC_KEY_free"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EC_KEY_free"]
     pub fn EC_KEY_free(key: *mut EC_KEY);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EC_KEY_up_ref"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EC_KEY_get0_group"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EC_KEY_get0_group"]
     pub fn EC_KEY_get0_group(key: *const EC_KEY) -> *const EC_GROUP;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EC_KEY_set_group"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EC_KEY_generate_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EC_KEY_parse_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EC_KEY_marshal_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EC_KEY_marshal_private_key"]
     pub fn EC_KEY_marshal_private_key(
         cbb: *mut CBB,
         key: *const EC_KEY,
@@ -643,7 +643,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ECDSA_sign"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ECDSA_sign"]
     pub fn ECDSA_sign(
         type_: ::std::os::raw::c_int,
         digest: *const u8,
@@ -654,7 +654,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ECDSA_verify"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ECDSA_verify"]
     pub fn ECDSA_verify(
         type_: ::std::os::raw::c_int,
         digest: *const u8,
@@ -665,7 +665,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ECDSA_size"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_ECDSA_size"]
     pub fn ECDSA_size(key: *const EC_KEY) -> usize;
 }
 pub type ERR_print_errors_callback_t = ::std::option::Option<
@@ -676,26 +676,26 @@
     ) -> ::std::os::raw::c_int,
 >;
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_ERR_print_errors_cb"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EVP_sha1"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_sha1"]
     pub fn EVP_sha1() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_sha256"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_sha256"]
     pub fn EVP_sha256() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_sha384"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_sha384"]
     pub fn EVP_sha384() -> *const EVP_MD;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_sha512"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_sha512"]
     pub fn EVP_sha512() -> *const EVP_MD;
 }
 #[repr(C)]
@@ -745,43 +745,43 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_PKEY_new"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_PKEY_new"]
     pub fn EVP_PKEY_new() -> *mut EVP_PKEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_PKEY_free"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_PKEY_free"]
     pub fn EVP_PKEY_free(pkey: *mut EVP_PKEY);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_PKEY_up_ref"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EVP_PKEY_assign_RSA"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EVP_PKEY_get1_RSA"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_PKEY_get1_RSA"]
     pub fn EVP_PKEY_get1_RSA(pkey: *const EVP_PKEY) -> *mut RSA;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_PKEY_assign_EC_KEY"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EVP_PKEY_get1_EC_KEY"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_EVP_parse_public_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_parse_public_key"]
     pub fn EVP_parse_public_key(cbs: *mut CBS) -> *mut EVP_PKEY;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_marshal_public_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_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_2_2_PKCS5_PBKDF2_HMAC"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_PKCS5_PBKDF2_HMAC"]
     pub fn PKCS5_PBKDF2_HMAC(
         password: *const ::std::os::raw::c_char,
         password_len: usize,
@@ -794,7 +794,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_EVP_PBE_scrypt"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_EVP_PBE_scrypt"]
     pub fn EVP_PBE_scrypt(
         password: *const ::std::os::raw::c_char,
         password_len: usize,
@@ -898,15 +898,15 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_HMAC_CTX_init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_HMAC_CTX_init"]
     pub fn HMAC_CTX_init(ctx: *mut HMAC_CTX);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_HMAC_CTX_cleanup"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_HMAC_CTX_cleanup"]
     pub fn HMAC_CTX_cleanup(ctx: *mut HMAC_CTX);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_HMAC_Init_ex"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_HMAC_Init_ex"]
     pub fn HMAC_Init_ex(
         ctx: *mut HMAC_CTX,
         key: *const ::std::os::raw::c_void,
@@ -916,7 +916,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_HMAC_Update"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_HMAC_Update"]
     pub fn HMAC_Update(
         ctx: *mut HMAC_CTX,
         data: *const u8,
@@ -924,7 +924,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_HMAC_Final"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_HMAC_Final"]
     pub fn HMAC_Final(
         ctx: *mut HMAC_CTX,
         out: *mut u8,
@@ -932,7 +932,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_HMAC_size"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_HMAC_size"]
     pub fn HMAC_size(ctx: *const HMAC_CTX) -> usize;
 }
 #[repr(C)]
@@ -977,7 +977,7 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_CRYPTO_memcmp"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_CRYPTO_memcmp"]
     pub fn CRYPTO_memcmp(
         a: *const ::std::os::raw::c_void,
         b: *const ::std::os::raw::c_void,
@@ -985,27 +985,27 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RAND_bytes"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RAND_bytes"]
     pub fn RAND_bytes(buf: *mut u8, len: usize) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_new"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_new"]
     pub fn RSA_new() -> *mut RSA;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_free"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_free"]
     pub fn RSA_free(rsa: *mut RSA);
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_up_ref"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_up_ref"]
     pub fn RSA_up_ref(rsa: *mut RSA) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_bits"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_bits"]
     pub fn RSA_bits(rsa: *const RSA) -> ::std::os::raw::c_uint;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_generate_key_ex"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_generate_key_ex"]
     pub fn RSA_generate_key_ex(
         rsa: *mut RSA,
         bits: ::std::os::raw::c_int,
@@ -1014,7 +1014,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_sign_pss_mgf1"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_sign_pss_mgf1"]
     pub fn RSA_sign_pss_mgf1(
         rsa: *mut RSA,
         out_len: *mut usize,
@@ -1028,7 +1028,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_verify_pss_mgf1"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_verify_pss_mgf1"]
     pub fn RSA_verify_pss_mgf1(
         rsa: *mut RSA,
         msg: *const u8,
@@ -1041,15 +1041,15 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_size"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_size"]
     pub fn RSA_size(rsa: *const RSA) -> ::std::os::raw::c_uint;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_parse_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_parse_private_key"]
     pub fn RSA_parse_private_key(cbs: *mut CBS) -> *mut RSA;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_RSA_marshal_private_key"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_RSA_marshal_private_key"]
     pub fn RSA_marshal_private_key(cbb: *mut CBB, rsa: *const RSA) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1355,11 +1355,11 @@
     }
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA1_Init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA1_Init"]
     pub fn SHA1_Init(sha: *mut SHA_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA1_Update"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA1_Update"]
     pub fn SHA1_Update(
         sha: *mut SHA_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1367,7 +1367,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA1_Final"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA1_Final"]
     pub fn SHA1_Final(md: *mut u8, sha: *mut SHA_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1525,11 +1525,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA256_Init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA256_Init"]
     pub fn SHA256_Init(sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA256_Update"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA256_Update"]
     pub fn SHA256_Update(
         sha: *mut SHA256_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1537,7 +1537,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA256_Final"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA256_Final"]
     pub fn SHA256_Final(md: *mut u8, sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1594,11 +1594,11 @@
     );
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA384_Init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA384_Init"]
     pub fn SHA384_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA384_Update"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA384_Update"]
     pub fn SHA384_Update(
         sha: *mut SHA512_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1606,15 +1606,15 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA384_Final"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA384_Final"]
     pub fn SHA384_Final(md: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA512_Init"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA512_Init"]
     pub fn SHA512_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA512_Update"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA512_Update"]
     pub fn SHA512_Update(
         sha: *mut SHA512_CTX,
         data: *const ::std::os::raw::c_void,
@@ -1622,7 +1622,7 @@
     ) -> ::std::os::raw::c_int;
 }
 extern "C" {
-    #[link_name = "__RUST_MUNDANE_0_2_2_SHA512_Final"]
+    #[link_name = "__RUST_MUNDANE_0_3_0_SHA512_Final"]
     pub fn SHA512_Final(md: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
 }
 #[repr(C)]
@@ -1631,50 +1631,10 @@
     pub h: [u64; 8usize],
     pub Nl: u64,
     pub Nh: u64,
-    pub u: sha512_state_st__bindgen_ty_1,
+    pub p: [u8; 128usize],
     pub num: ::std::os::raw::c_uint,
     pub md_len: ::std::os::raw::c_uint,
 }
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sha512_state_st__bindgen_ty_1 {
-    pub d: [u64; 16usize],
-    pub p: [u8; 128usize],
-    _bindgen_union_align: [u64; 16usize],
-}
-#[test]
-fn bindgen_test_layout_sha512_state_st__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<sha512_state_st__bindgen_ty_1>(),
-        128usize,
-        concat!("Size of: ", stringify!(sha512_state_st__bindgen_ty_1))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<sha512_state_st__bindgen_ty_1>(),
-        8usize,
-        concat!("Alignment of ", stringify!(sha512_state_st__bindgen_ty_1))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<sha512_state_st__bindgen_ty_1>())).d as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(sha512_state_st__bindgen_ty_1),
-            "::",
-            stringify!(d)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<sha512_state_st__bindgen_ty_1>())).p as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(sha512_state_st__bindgen_ty_1),
-            "::",
-            stringify!(p)
-        )
-    );
-}
 #[test]
 fn bindgen_test_layout_sha512_state_st() {
     assert_eq!(
@@ -1703,9 +1663,9 @@
         concat!("Offset of field: ", stringify!(sha512_state_st), "::", stringify!(Nh))
     );
     assert_eq!(
-        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).u as *const _ as usize },
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).p as *const _ as usize },
         80usize,
-        concat!("Offset of field: ", stringify!(sha512_state_st), "::", stringify!(u))
+        concat!("Offset of field: ", stringify!(sha512_state_st), "::", stringify!(p))
     );
     assert_eq!(
         unsafe { &(*(::std::ptr::null::<sha512_state_st>())).num as *const _ as usize },