Author: mturk
Date: Wed Sep  7 18:47:25 2011
New Revision: 1166310

URL: http://svn.apache.org/viewvc?rev=1166310&view=rev
Log:
Fill current ssl dynamic api

Modified:
    commons/sandbox/runtime/trunk/src/main/native/modules/openssl/api.c

Modified: commons/sandbox/runtime/trunk/src/main/native/modules/openssl/api.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/modules/openssl/api.c?rev=1166310&r1=1166309&r2=1166310&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/modules/openssl/api.c 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/modules/openssl/api.c Wed Sep 
 7 18:47:25 2011
@@ -76,15 +76,90 @@ struct SSLAPIst {
     unsigned long       (*fpSSLeay)(void);
     const char*         (*fpSSLeay_version)(int);
 
+    /*** BIO      ***/
+    long                (*fpBIO_ctrl)(BIO *, int, long, void *);
+    int                 (*fpBIO_free)(BIO *);
+    BIO*                (*fpBIO_new)(BIO_METHOD *);
+    BIO*                (*fpBIO_new_file)(const char *, const char *);
+    BIO*                (*fpBIO_new_fp)(FILE *, int);
+    BIO_METHOD*         (*fpBIO_s_file)(void);
+
+    /*** BIGNUM   ***/
+    BIGNUM*             (*fpBN_bin2bn)(const unsigned char *s, int len, BIGNUM 
*ret);
+
+    /*** CRYPTO   ***/
+    int                 (*fpCRYPTO_num_locks)(void);
+    void                (*fpCRYPTO_set_dynlock_create_callback)(struct 
CRYPTO_dynlock_value *(*)(const char *, int));
+    void                (*fpCRYPTO_set_dynlock_lock_callback)(void (*)(int, 
struct CRYPTO_dynlock_value *, const char *, int));
+    void                (*fpCRYPTO_set_dynlock_destroy_callback)(void 
(*)(struct CRYPTO_dynlock_value *, const char *, int));
+    void                (*fpCRYPTO_set_id_callback)(unsigned long (*)(void));
+    void                (*fpCRYPTO_set_locking_callback)(void (*)(int, int, 
const char *, int));
+    int                 (*fpCRYPTO_set_mem_functions)(void *(*)(size_t),void 
*(*)(void *,size_t), void (*)(void *));
+
+    /*** DH       ***/
+    DH*                 (*fpDH_new)(void);
+    void                (*fpDH_free)(DH *dh);
+
+    /*** ENGINE   ***/
+    ENGINE*             (*fpENGINE_by_id)(const char *id);
+    int                 (*fpENGINE_ctrl)(ENGINE *e, int cmd, long i, void *p, 
void (*f)(void));
+    int                 (*fpENGINE_ctrl_cmd)(ENGINE *e, const char *cmd_name, 
long i, void *p, void (*f)(void), int cmd_optional);
+    int                 (*fpENGINE_ctrl_cmd_string)(ENGINE *e, const char 
*cmd_name, const char *arg, int cmd_optional);
+    
+    int                 (*fpENGINE_free)(ENGINE *e);
+    void                (*fpENGINE_load_builtin_engines)(void);
+    int                 (*fpENGINE_register_all_complete)(void);
+    int                 (*fpENGINE_set_default)(ENGINE *e, unsigned int flags);
+
+    /*** ERR      ***/
+    void                (*fpERR_error_string_n)(unsigned long e, char *buf, 
size_t len);
+    unsigned long       (*fpERR_get_error)(void);
+    void                (*fpERR_load_crypto_strings)(void);
+    unsigned long       (*fpERR_peek_error)(void);
+
+    /*** MD5      ***/
+    int                 (*fpMD5_Final)(unsigned char *md, MD5_CTX *c);
+    int                 (*fpMD5_Init)(MD5_CTX *c);
+    int                 (*fpMD5_Update)(MD5_CTX *c, const void *data, size_t 
len);
+
+    /*** OPENSSL  ***/
+    void                (*fpOPENSSL_load_builtin_modules)(void);
+
+    /*** PEM      ***/
+    DH*                 (*fpPEM_read_bio_DHparams)(BIO *bp, DH **x, 
pem_password_cb *cb, void *u);
+    X509*               (*fpPEM_read_bio_X509)(BIO *bp, X509 **x, 
pem_password_cb *cb, void *u);
+
+    /*** RAND     ***/
+    int                 (*fpRAND_egd)(const char *path);
+    const char*         (*fpRAND_file_name)(char *file,size_t num);
+    int                 (*fpRAND_load_file)(const char *file,long max_bytes);
+    void                (*fpRAND_seed)(const void *buf,int num);
+    int                 (*fpRAND_status)(void);
+
+    /*** RSA      ***/
+    RSA*                (*fpRSA_generate_key)(int bits, unsigned long e,void 
(*callback)(int,int,void *),void *cb_arg);
+    
+    /*** SSL_CTX  ***/
+    long                (*fpSSL_CTX_ctrl)(SSL_CTX *ctx,int cmd, long larg, 
void *parg);    
     SSL_CTX*            (*fpSSL_CTX_new)(const SSL_METHOD *);
     void                (*fpSSL_CTX_free)(SSL_CTX *);
+    
+    /*** SSL      ***/
+    void*               (*fpSSL_get_ex_data)(const SSL *ssl,int idx);
+    int                 (*fpSSL_get_ex_new_index)(long, void *, CRYPTO_EX_new 
*, CRYPTO_EX_dup *, CRYPTO_EX_free *);
+    int                 (*fpSSL_library_init)(void);
+    void                (*fpSSL_load_error_strings)(void);
+    int                 (*fpSSL_set_ex_data)(SSL *ssl,int idx,void *data);
 
+    /*** X509     ***/
+    void                (*fpX509_free)(X509 *);
     void                (*fpNULL)(void);
 };
 
 struct SSLOPTst {
 #if HAVE_FIPS
     int                 (*fpFIPS_mode)(void);
+    int                 (*fpFIPS_mode_set)(int onoff);
 #endif
 #if HAVE_OCSP
 
@@ -119,9 +194,83 @@ ACR_JNI_EXPORT(jboolean, Native, ldopens
                  "OpenSSL 0.9.8 or greater is required");
         return JNI_FALSE;
     }
+
+    /*** BIO      ***/
+    CRYPTO_FPLOAD(BIO_ctrl);
+    CRYPTO_FPLOAD(BIO_free);
+    CRYPTO_FPLOAD(BIO_new);
+    CRYPTO_FPLOAD(BIO_new_file);
+    CRYPTO_FPLOAD(BIO_new_fp);
+    CRYPTO_FPLOAD(BIO_s_file);
+
+    /*** BIGNUM   ***/
+    CRYPTO_FPLOAD(BN_bin2bn);
+
+    /*** CRYPTO   ***/
+    CRYPTO_FPLOAD(CRYPTO_num_locks);
+    CRYPTO_FPLOAD(CRYPTO_set_dynlock_create_callback);
+    CRYPTO_FPLOAD(CRYPTO_set_dynlock_destroy_callback);
+    CRYPTO_FPLOAD(CRYPTO_set_dynlock_lock_callback);
+    CRYPTO_FPLOAD(CRYPTO_set_id_callback);
+    CRYPTO_FPLOAD(CRYPTO_set_locking_callback);
+    CRYPTO_FPLOAD(CRYPTO_set_mem_functions);
+
+    /*** DH       ***/
+    CRYPTO_FPLOAD(DH_new);
+    CRYPTO_FPLOAD(DH_free);
+
+    /*** ENGINE   ***/
+    CRYPTO_FPLOAD(ENGINE_by_id);
+    CRYPTO_FPLOAD(ENGINE_ctrl);
+    CRYPTO_FPLOAD(ENGINE_ctrl_cmd);
+    CRYPTO_FPLOAD(ENGINE_ctrl_cmd_string);
+    CRYPTO_FPLOAD(ENGINE_free);
+    CRYPTO_FPLOAD(ENGINE_load_builtin_engines);
+    CRYPTO_FPLOAD(ENGINE_register_all_complete);
+    CRYPTO_FPLOAD(ENGINE_set_default);
+
+    /*** ERR      ***/
+    CRYPTO_FPLOAD(ERR_error_string_n);
+    CRYPTO_FPLOAD(ERR_get_error);
+    CRYPTO_FPLOAD(ERR_load_crypto_strings);
+    CRYPTO_FPLOAD(ERR_peek_error);
+
+    /*** MD5      ***/
+    CRYPTO_FPLOAD(MD5_Final);
+    CRYPTO_FPLOAD(MD5_Init);
+    CRYPTO_FPLOAD(MD5_Update);
+
+    /*** OPENSSL  ***/
+    CRYPTO_FPLOAD(OPENSSL_load_builtin_modules);
+
+    /*** PEM      ***/
+    CRYPTO_FPLOAD(PEM_read_bio_DHparams);
+    CRYPTO_FPLOAD(PEM_read_bio_X509);
+
+    /*** RAND     ***/
+    CRYPTO_FPLOAD(RAND_egd);
+    CRYPTO_FPLOAD(RAND_file_name);
+    CRYPTO_FPLOAD(RAND_load_file);
+    CRYPTO_FPLOAD(RAND_seed);
+    CRYPTO_FPLOAD(RAND_status);
+
+    /*** RSA      ***/
+    CRYPTO_FPLOAD(RSA_generate_key);
+    
+    LIBSSL_FPLOAD(SSL_CTX_ctrl);
     LIBSSL_FPLOAD(SSL_CTX_new);
     LIBSSL_FPLOAD(SSL_CTX_free);
 
+    /*** SSL      ***/
+    LIBSSL_FPLOAD(SSL_get_ex_data);
+    LIBSSL_FPLOAD(SSL_get_ex_new_index);
+    LIBSSL_FPLOAD(SSL_library_init);
+    LIBSSL_FPLOAD(SSL_load_error_strings);
+    LIBSSL_FPLOAD(SSL_set_ex_data);
+
+    /*** X509     ***/
+    CRYPTO_FPLOAD(X509_free);
+    
 
     /* Optional functions
      * We could compile with the HAVE_FIPS, but target OpenSSL might not
@@ -129,7 +278,9 @@ ACR_JNI_EXPORT(jboolean, Native, ldopens
      */
 #if HAVE_FIPS
     LIBSSL_LDDOPT(FIPS_mode);
+    LIBSSL_LDDOPT(FIPS_mode_set);
 #endif
+
     return JNI_TRUE;
 failed:
     AcrThrowEx(env, ACR_EX_ENOENT, "Cannot find %s::%s()", dname, fname);
@@ -155,6 +306,215 @@ const char *SSLeay_version(int type)
     return SSLAPI_LINK(SSLeay_version)(type);
 }
 
+long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg)
+{
+    return SSLAPI_LINK(BIO_ctrl)(bp, cmd, larg, parg);
+}
+
+BIO *BIO_new(BIO_METHOD *type)
+{
+    return SSLAPI_LINK(BIO_new)(type);
+}
+
+int  BIO_free(BIO *a)
+{
+    return SSLAPI_LINK(BIO_free)(a);
+}
+
+BIO *BIO_new_file(const char *filename, const char *mode)
+{
+    return SSLAPI_LINK(BIO_new_file)(filename, mode);
+}
+
+BIO *BIO_new_fp(FILE *stream, int close_flag)
+{
+    return SSLAPI_LINK(BIO_new_fp)(stream, close_flag);
+}
+
+BIO_METHOD *BIO_s_file(void)
+{
+    return SSLAPI_LINK(BIO_s_file)();
+}
+
+BIGNUM *BN_bin2bn(const unsigned char *s,int len,BIGNUM *ret)
+{
+    return SSLAPI_LINK(BN_bin2bn)(s, len, ret);
+}
+
+int CRYPTO_num_locks(void)
+{
+    return SSLAPI_LINK(CRYPTO_num_locks)();
+}
+
+void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value 
*(*dyn_create_function)(const char *file, int line))
+{
+    SSLAPI_LINK(CRYPTO_set_dynlock_create_callback)(dyn_create_function);
+}
+
+void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)(int mode, 
struct CRYPTO_dynlock_value *l, const char *file, int line))
+{
+    SSLAPI_LINK(CRYPTO_set_dynlock_lock_callback)(dyn_lock_function);
+}
+
+void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)(struct 
CRYPTO_dynlock_value *l, const char *file, int line))
+{
+    SSLAPI_LINK(CRYPTO_set_dynlock_destroy_callback)(dyn_destroy_function);
+}
+
+void CRYPTO_set_id_callback(unsigned long (*func)(void))
+{
+    SSLAPI_LINK(CRYPTO_set_id_callback)(func);
+}
+
+void CRYPTO_set_locking_callback(void (*func)(int mode,int type,
+                                              const char *file,int line))
+{
+    SSLAPI_LINK(CRYPTO_set_locking_callback)(func);
+}
+
+int CRYPTO_set_mem_functions(void *(*m)(size_t),void *(*r)(void *,size_t), 
void (*f)(void *))
+{
+    return SSLAPI_LINK(CRYPTO_set_mem_functions)(m, r, f);
+}
+
+DH *DH_new(void)
+{
+    return SSLAPI_LINK(DH_new)();
+}
+
+void  DH_free(DH *dh)
+{
+    SSLAPI_LINK(DH_free)(dh);
+}
+
+ENGINE *ENGINE_by_id(const char *id)
+{
+    return SSLAPI_LINK(ENGINE_by_id)(id);
+}
+
+int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)(void))
+{
+    return SSLAPI_LINK(ENGINE_ctrl)(e, cmd, i, p, f);
+}
+
+int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name,
+        long i, void *p, void (*f)(void), int cmd_optional)
+{
+    return SSLAPI_LINK(ENGINE_ctrl_cmd)(e, cmd_name, i, p, f, cmd_optional);
+}
+
+int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg,
+                           int cmd_optional)
+{
+    return SSLAPI_LINK(ENGINE_ctrl_cmd_string)(e, cmd_name, arg, cmd_optional);
+}
+
+int ENGINE_free(ENGINE *e)
+{
+    return SSLAPI_LINK(ENGINE_free)(e);
+}
+
+void ENGINE_load_builtin_engines(void)
+{
+    SSLAPI_LINK(ENGINE_load_builtin_engines)();
+}
+
+int ENGINE_register_all_complete(void)
+{
+    return SSLAPI_LINK(ENGINE_register_all_complete)();
+}
+
+int ENGINE_set_default(ENGINE *e, unsigned int flags)
+{
+    return SSLAPI_LINK(ENGINE_set_default)(e, flags);
+}
+
+void ERR_error_string_n(unsigned long e, char *buf, size_t len)
+{
+    return SSLAPI_LINK(ERR_error_string_n)(e, buf, len);
+}
+
+unsigned long ERR_get_error(void)
+{
+    return SSLAPI_LINK(ERR_get_error)();
+}
+
+void ERR_load_crypto_strings(void)
+{
+    SSLAPI_LINK(ERR_load_crypto_strings)();
+}
+
+unsigned long ERR_peek_error(void)
+{
+    return SSLAPI_LINK(ERR_peek_error)();
+}
+
+int MD5_Init(MD5_CTX *c)
+{
+    return SSLAPI_LINK(MD5_Init)(c);
+}
+
+int MD5_Update(MD5_CTX *c, const void *data, size_t len)
+{
+    return SSLAPI_LINK(MD5_Update)(c, data, len);
+}
+
+int MD5_Final(unsigned char *md, MD5_CTX *c)
+{
+    return SSLAPI_LINK(MD5_Final)(md, c);
+}
+
+void OPENSSL_load_builtin_modules(void)
+{
+    SSLAPI_LINK(OPENSSL_load_builtin_modules)();
+}
+
+DH *PEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u)
+{
+    return SSLAPI_LINK(PEM_read_bio_DHparams)(bp, x, cb, u);
+}
+
+X509 *PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
+{
+    return SSLAPI_LINK(PEM_read_bio_X509)(bp, x, cb, u);
+}
+
+int RAND_egd(const char *path)
+{
+    return SSLAPI_LINK(RAND_egd)(path);
+}
+
+const char *RAND_file_name(char *file, size_t num)
+{
+    return SSLAPI_LINK(RAND_file_name)(file, num);
+}
+
+int RAND_load_file(const char *file, long max_bytes)
+{
+    return SSLAPI_LINK(RAND_load_file)(file, max_bytes);
+}
+
+void RAND_seed(const void *buf, int num)
+{
+    SSLAPI_LINK(RAND_seed)(buf, num);
+}
+
+int RAND_status(void)
+{
+    return SSLAPI_LINK(RAND_status)();
+}
+
+RSA *RSA_generate_key(int bits, unsigned long e,
+                      void (*callback)(int, int, void *), void *cb_arg)
+{
+    return SSLAPI_LINK(RSA_generate_key)(bits, e, callback, cb_arg);
+}
+
+long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
+{
+    return SSLAPI_LINK(SSL_CTX_ctrl)(ctx, cmd, larg, parg);
+}
+
 SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
 {
     return SSLAPI_LINK(SSL_CTX_new)(meth);
@@ -165,13 +525,50 @@ void SSL_CTX_free(SSL_CTX *ctx)
     SSLAPI_LINK(SSL_CTX_free)(ctx);
 }
 
+void *SSL_get_ex_data(const SSL *ssl, int idx)
+{
+    return SSLAPI_LINK(SSL_get_ex_data)(ssl, idx);
+}
+
+int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
+                         CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
+{
+    return SSLAPI_LINK(SSL_get_ex_new_index)(argl, argp, new_func, dup_func, 
free_func);
+}
+
+int SSL_library_init(void)
+{
+    return SSLAPI_LINK(SSL_library_init)();
+}
+
+void SSL_load_error_strings(void)
+{
+    SSLAPI_LINK(SSL_load_error_strings)();
+}
+
+int SSL_set_ex_data(SSL *ssl,int idx,void *data)
+{
+    return SSLAPI_LINK(SSL_set_ex_data)(ssl, idx, data);
+}
+
+void X509_free(X509 *x)
+{
+    SSLAPI_LINK(X509_free)(x);
+}
+
 #if HAVE_FIPS
-int FIPS_mode()
+int FIPS_mode(void)
 {
     if (SSLOPT_HAVE(FIPS_mode))
         return SSLOPT_LINK(FIPS_mode)();
     else
         return 0;
 }
+
+int FIPS_mode_set(int onoff)
+{
+    return SSLOPT_LINK(FIPS_mode_set)(onoff);
+}
+
 #endif /* HAVE_FIPS */
 #endif /* HAVE_OPENSSL_STATIC */


Reply via email to