Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / btls / btls-key.c
index 65909a527d9944e0aa27ca42b05505552ca4584d..462a71419fa66d165f594ca1e5a529bcd542edfe 100644 (file)
@@ -8,6 +8,12 @@
 
 #include <btls-key.h>
 
+MONO_API EVP_PKEY *
+mono_btls_key_new ()
+{
+       return EVP_PKEY_new ();
+}
+
 MONO_API void
 mono_btls_key_free (EVP_PKEY *pkey)
 {
@@ -32,6 +38,18 @@ mono_btls_key_is_rsa (EVP_PKEY *pkey)
        return pkey->type == EVP_PKEY_RSA;
 }
 
+MONO_API int
+mono_btls_key_assign_rsa_private_key (EVP_PKEY *pkey, uint8_t *der_data, int der_length)
+{
+       RSA *rsa;
+
+       rsa = RSA_private_key_from_bytes (der_data, der_length);
+       if (!rsa)
+               return 0;
+
+       return EVP_PKEY_assign_RSA (pkey, rsa);
+}
+
 MONO_API int
 mono_btls_key_get_bytes (EVP_PKEY *pkey, uint8_t **buffer, int *size, int include_private_bits)
 {
@@ -54,6 +72,8 @@ mono_btls_key_get_bytes (EVP_PKEY *pkey, uint8_t **buffer, int *size, int includ
        else
                ret = RSA_public_key_to_bytes (buffer, &len, rsa);
 
+       RSA_free (rsa);
+
        if (ret != 1)
                return 0;