Check the obj/local/armeabi folder for the static libraries.
On Mon, Sep 17, 2012 at 7:02 AM, Indtiny s <indt...@gmail.com> wrote: > Hi, > Can you pls tell me how to genearte the the static library from the > android-openssl (from the link which you have sent .! > > I tried to edit SHARED to STATIC in the Android.mk file at both ssl and > crypto , but that did nt create any static library ..! > > > > On Sun, Sep 16, 2012 at 11:39 PM, farmdve data.bg <farm...@data.bg> wrote: >> >> Trust me, I tried to load the shared libraries as well, but failed. >> Statically linking was the only way to ensure my application uses the >> latest OpenSSL regardless of Android version(though my ABI is set to >> API level 8). >> >> On Sat, Sep 15, 2012 at 1:18 PM, Indtiny s <indt...@gmail.com> wrote: >> > 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 >> > >> > >> ______________________________________________________________________ >> 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