diff options
author | Parménides GV <parmegv@sdf.org> | 2014-04-09 16:03:55 +0200 |
---|---|---|
committer | Parménides GV <parmegv@sdf.org> | 2014-04-09 16:07:34 +0200 |
commit | 1684c8f398922065a97e7da4dac4ac6a33cc5218 (patch) | |
tree | 76a4b11ae0d7b217c088f3c2b8fc7e69a7b8ae0d /app/openvpn/src/compat/compat-rsa_generate_key.c | |
parent | b9a2b085a8f508cd09e2639c70be845c992c4a3e (diff) |
Back to the standard "app" module.
This return to "app" instead of "bitmask_android" is due to this reading: https://developer.android.com/sdk/installing/studio-build.html#projectStructure
I'll have to tweak the final apk name in build.gradle.
Diffstat (limited to 'app/openvpn/src/compat/compat-rsa_generate_key.c')
-rw-r--r-- | app/openvpn/src/compat/compat-rsa_generate_key.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/app/openvpn/src/compat/compat-rsa_generate_key.c b/app/openvpn/src/compat/compat-rsa_generate_key.c new file mode 100644 index 00000000..99725da1 --- /dev/null +++ b/app/openvpn/src/compat/compat-rsa_generate_key.c @@ -0,0 +1,47 @@ +#include <stdio.h> +#include <time.h> +#include "cryptlib.h" +#include <openssl/bn.h> +#include <openssl/rsa.h> + +RSA *RSA_generate_key(int bits, unsigned long e_value, + void (*callback)(int,int,void *), void *cb_arg) +{ + BN_GENCB cb; + int i; + RSA *rsa = RSA_new(); + BIGNUM *e = BN_new(); + + if(!rsa || !e) goto err; + + /* The problem is when building with 8, 16, or 32 BN_ULONG, + * unsigned long can be larger */ + for (i=0; i<(int)sizeof(unsigned long)*8; i++) + { + if (e_value & (1UL<<i)) + if (BN_set_bit(e,i) == 0) + goto err; + } + + BN_GENCB_set_old(&cb, callback, cb_arg); + + if(RSA_generate_key_ex(rsa, bits, e, &cb)) { + BN_free(e); + return rsa; + } + err: + if(e) BN_free(e); + if(rsa) RSA_free(rsa); + return 0; +} + + + +void mlockall(){} +char * +getpass (prompt) + const char *prompt; +{ + return ""; +} + |