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 >