Hi, Actually in my java application I will load all three shared libries (ssl,crypto and curl) ... Hence Iam trying build all libs as shared .
I tried to debug it as per your input , now I am getting the response as 1 i .e *CURLE_UNSUPPORTED_PROTOCOL (1)* when I tried to execute the https . I think still the openssl is not included properly ..!! I dunno where I have gone wrong . Rgds Indu On Sat, Sep 15, 2012 at 1:04 AM, farmdve data.bg <farm...@data.bg> wrote: > Try using LogCat by connecting an Android device via USB, or launching > an emulator and opening a new Command Prompt for Windows or Terminal > instance in linux and type adb logcat. > Then launch the app and look at the output. > > You see, Android ships with OpenSSL, but the version is usually quite > old. You need to compile OpenSSL 1.0.1c as static and link statically > to use the new library. > > On Fri, Sep 14, 2012 at 9:14 PM, Indtiny s <indt...@gmail.com> wrote: > > Hi, > > I have just ran ndk-build for the code > > https://github.com/aluvalassuman/OpenSSL1.0.1cForAndroid and it > generated > > the two shared libraries in libs/ floder which I required , libcrypto.so > and > > libssl.so( as build say these are shared libarray) I just included them > in > > the curl code as prebuilt shared library(edited now to shared in the > android > > make) , then Since I need to include the curl with openssl in my java > code > > I want to build curl as shared library only .. I just changed my android > > curl make to shared .. > > And sorry it was System.loadLibrary("curltest"); only .. but still I'm > not > > getting the any response from the curl ...? am I following the correct > way > > to use the openssl , becoz when I test the curl alone I get the proper > http > > page requested ... ! > > > > Rgds > > Indu > > > > > > On Fri, Sep 14, 2012 at 1:54 PM, farmdve data.bg <farm...@data.bg> > wrote: > >> > >> It's not clear if you built libcurl as a static library to begin with. > >> And not clear if you built OpenSSL as a static or shared library. > >> > >> And you must load curltest(as that is the name of the module) not curl. > >> > >> On Fri, Sep 14, 2012 at 8:28 PM, Indtiny s <indt...@gmail.com> wrote: > >> > > >> > > >> > > >> > Hi, > >> > > >> > yes I'm able to built the openssl1.0.1c version for android and got > the > >> > shared libraries . > >> > > >> > Now I want to use the same with curl , first I built simple curl > >> > application > >> > and tested and it worked now I tried to include the openssl . > >> > below is the android.mk file which I have written to include openssl > >> > libraries for the curl code . > >> > > >> > > >> > LOCAL_PATH:= $(call my-dir) > >> > > >> > CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline \ > >> > -Wnested-externs -Wmissing-declarations -Wmissing-prototypes > >> > -Wno-long-long > >> > \ > >> > -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral \ > >> > -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement \ > >> > -Wno-system-headers -DHAVE_CONFIG_H > >> > > >> > include $(CLEAR_VARS) > >> > > >> > ## Crypto lib > >> > include $(CLEAR_VARS) > >> > LOCAL_MODULE := xcryptox > >> > LOCAL_SRC_FILES := openssl/lib/libcrypto.so > >> > LOCAL_C_INCLUDES := $(LOCAL_PATH)/openssl/includes/openssl > >> > include $(PREBUILT_SHARED_LIBRARY) > >> > # > >> > ### SSL lib > >> > include $(CLEAR_VARS) > >> > LOCAL_MODULE := xsslx > >> > LOCAL_SRC_FILES := openssl/libssl/lib/libssl.so > >> > LOCAL_C_INCLUDES := $(LOCAL_PATH)/openssl/includes/openssl > >> > include $(PREBUILT_SHARED_LIBRARY) > >> > > >> > include $(LOCAL_PATH)/curl/lib/Makefile.inc . > >> > > >> > LOCAL_SRC_FILES := $(addprefix curl/lib/,$(CSOURCES)) > >> > LOCAL_CFLAGS += $(CFLAGS) > >> > LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include/ > >> > > >> > LOCAL_COPY_HEADERS_TO := libcurl > >> > LOCAL_COPY_HEADERS := $(addprefix curl/include/curl/,$(HHEADERS)) > >> > > >> > LOCAL_MODULE:= libcurl > >> > > >> > include $(BUILD_STATIC_LIBRARY) > >> > > >> > # Build shared library now > >> > # curltest > >> > > >> > include $(CLEAR_VARS) > >> > > >> > LOCAL_MODULE := curltest > >> > LOCAL_SRC_FILES := curltest.c > >> > LOCAL_STATIC_LIBRARIES := libcurl > >> > LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include > >> > include $(BUILD_SHARED_LIBRARY) > >> > > >> > And below is my C curtest code with ssl include . > >> > > >> > > >> > > >> > #include <string.h> > >> > #include <jni.h> > >> > #include <stdio.h> > >> > #include <stdlib.h> > >> > #include "curl_config.h" > >> > #include "curl/curl.h" > >> > > >> > typedef struct pageInfo_t { > >> > char *data; > >> > int len; > >> > } pageInfo_t; > >> > > >> > static size_t > >> > HTTPData(void *buffer, size_t size, size_t nmemb, void *userData) { > >> > int len = size * nmemb; > >> > pageInfo_t *page = (pageInfo_t *)userData; > >> > > >> > > >> > if (buffer && page->data && (page->len + len < (16 * 1024)) ) { > >> > memcpy(&page->data[page->len], buffer, len); > >> > page->len += len; > >> > } > >> > return len; > >> > } > >> > > >> > //Inteface funciton that will recieve web page fom Java > >> > jstring > >> > Java_com_mtterra_curltest_curltest_JNIGetWebpage( JNIEnv* env, > >> > jobject entryObject, > >> > jstring webpageJStr ) > >> > { > >> > pageInfo_t page; > >> > CURL *curl; > >> > CURLcode res; > >> > char *buffer; > >> > > >> > static const char *pCertFile = "/sdcared/indu/openssl/testcert.pem"; > >> > static const char *pCACertFile="/sdcared/indu/openssl/cacert.pem"; > >> > > >> > const char *pKeyName; > >> > const char *pKeyType; > >> > > >> > const char *pEngine; > >> > const jbyte *webpage; > >> > pKeyName = "/sdcared/indu/openssl/testkey.pem"; > >> > pKeyType = "PEM"; > >> > pEngine = NULL; > >> > webpage = (*env)->GetStringUTFChars(env, webpageJStr, NULL); > >> > if (webpage == NULL) { > >> > return NULL; /* OutOfMemoryError already thrown */ > >> > } > >> > > >> > page.data = (char *)malloc(16 * 1024); > >> > page.len = 0; > >> > if (page.data) > >> > memset(page.data, 32, 16 * 1024); > >> > > >> > buffer = (char *)malloc(1024); > >> > > >> > curl = curl_easy_init(); > >> > if(curl) { > >> > curl_easy_setopt(curl, CURLOPT_URL, webpage); > >> > curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HTTPData); > >> > curl_easy_setopt(curl, CURLOPT_WRITEDATA, &page); > >> > > >> > /* since PEM is default, we needn't set it for PEM */ > >> > curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM"); > >> > > >> > /* set the cert for client authentication */ > >> > curl_easy_setopt(curl,CURLOPT_SSLCERT,pCertFile); > >> > > >> > /* if we use a key stored in a crypto engine, > >> > we must set the key type to "ENG" */ > >> > curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,pKeyType); > >> > > >> > /* set the private key (file or ID in engine) */ > >> > curl_easy_setopt(curl,CURLOPT_SSLKEY,pKeyName); > >> > > >> > /* set the file with the certs vaildating the server */ > >> > curl_easy_setopt(curl,CURLOPT_CAINFO,pCACertFile); > >> > > >> > /* disconnect if we can't validate server's cert */ > >> > curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1L); > >> > > >> > > >> > res = curl_easy_perform(curl); > >> > /* always cleanup */ > >> > curl_easy_cleanup(curl); > >> > (*env)->ReleaseStringUTFChars(env, webpageJStr, webpage); > >> > if(res == 0) { > >> > if (buffer) { > >> > page.data[page.len < 256 ? page.len : 256] = '\0'; > >> > sprintf(buffer, "pagedata(%d): %s. done.\n", page.len, page.data); > >> > return (*env)->NewStringUTF(env, buffer); > >> > } > >> > } > >> > sprintf(buffer, "Result %d", res); > >> > return (*env)->NewStringUTF(env, buffer); > >> > } else { > >> > return (*env)->NewStringUTF(env, "Unable to init cURL"); > >> > } > >> > } > >> > > >> > > >> > I tried to run this but I get the response as just Result at the my > java > >> > application code .. is the above method is the proper way to include > >> > the > >> > openssl in android..? > >> > in my java code I'm just loading System.loadLibrary("curl"); > >> > > >> > Rgds > >> > Indu > >> ______________________________________________________________________ > >> OpenSSL Project http://www.openssl.org > >> User Support Mailing List openssl-users@openssl.org > >> Automated List Manager majord...@openssl.org > > > > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List openssl-users@openssl.org > Automated List Manager majord...@openssl.org >