README.android
1Version Information
2---
3
4The code in this directory is based on 0.9.8h with patches from
5http://openssl.org/news/secadv_20090107.txt, and some backported OpenSSL code
6in crypto/0.9.9-dev.
7
8
9Porting New Versions of OpenSSL
10---
11
12The following steps are recommended for porting new OpenSSL versions.
13
14
15a) Run "./Configure linux-generic32 no-idea no-bf no-cast no-seed no-md2 \
16 -DL_ENDIAN"
17 in the openssl distribution directory.
18
19 (Ignore when the Configure scripts asks you to run "make depend".)
20
21
22b) Create an updated android-config.mk file by looking at CFLAG and DEPFLAG in
23 the Makefile resulting from step a. Make sure to add all the -D flags to
24 LOCAL_CFLAGS, except -DTERMIO; include -DOPENSSL_NO_HW in addition to these.
25
26 (New OpenSSL releases may include additional code meant to be disabled by
27 default, so it's important not to miss any -DOPENSSL_NO_foo.
28 Usually these should be replicated in crypto/opensslconf.h, but let's not
29 take a chance.)
30
31
32c) Copy the new LICENSE file from OpenSSL distribution as NOTICE.
33 Create an empty MODULE_LICENSE_BSD_LIKE file.
34
35
36d) You may delete the following directories along with their contents,
37 since we won't use these (any more):
38
39 MacOS Netware VMS apps/demoCA apps/set bugs certs crypto/bf crypto/cast \
40 crypto/cms crypto/idea crypto/md2 crypto/rc5 crypto/seed demos doc \
41 engines ms os2 perl shlib test times tools util
42
43 Also you may delete the following files:
44
45 CHANGES CHANGES.SSLeay ChangeLog.0_9_7-stable_not-in-head \
46 ChangeLog.0_9_7-stable_not-in-head_FIPS Configure FAQ INSTALL \
47 INSTALL.DJGPP INSTALL.MacOS INSTALL.NW INSTALL.OS2 INSTALL.VMS \
48 INSTALL.W32 INSTALL.W64 INSTALL.WCE LICENSE Makefile Makefile.bak \
49 Makefile.org Makefile.shared NEWS PROBLEMS README README.ASN1 \
50 README.ENGINE apps/CA.pl.bak config crypto/opensslconf.h.bak \
51 install.com makevms.com openssl.doxy openssl.spec
52
53
54e) Go to include/openssl. There's a bunch of symlinks here. Since symlinks
55 can be a special case for version control, replace them by regular files:
56
57 for l in *.h; do cp $l copy_$l; rm $l; mv copy_$l $l; done
58
59 Some symlinks will remain, pointing to files that don't exit
60 (you deleted those in step d). Delete the symlinks.
61
62
63f) Create Android.mk files based on those you find in the previous OpenSSL port:
64
65 Android.mk
66
67 apps/Android.mk
68 crypto/Android.mk
69 ssl/Android.mk
70
71 For the latter three, merge in any substantial changes between the
72 corresponding Makefiles in the OpenSSL distribution (apps/Makefile,
73 crypto/Makefile, crypto/*/Makefile, ssl/Makefile).
74 Don't forget to update the directory name for OpenSSL in these files
75 and whereever else it is used.
76
77
78g) Apply the patch found at the end of this file.
79
80
81h) Finally, create an updated version of this file (README.android)!
82
83
84
85
86Patch for apps directory:
87
88--- openssl-0.9.8h-ORIG/apps/progs.h
89+++ openssl-0.9.8h/apps/progs.h
90@@ -22,7 +22,9 @@
91 extern int x509_main(int argc,char *argv[]);
92 extern int genrsa_main(int argc,char *argv[]);
93 extern int gendsa_main(int argc,char *argv[]);
94+#if 0 /* ANDROID */
95 extern int s_server_main(int argc,char *argv[]);
96+#endif
97 extern int s_client_main(int argc,char *argv[]);
98 extern int speed_main(int argc,char *argv[]);
99 extern int s_time_main(int argc,char *argv[]);
100@@ -97,7 +99,9 @@
101 {FUNC_TYPE_GENERAL,"gendsa",gendsa_main},
102 #endif
103 #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
104- {FUNC_TYPE_GENERAL,"s_server",s_server_main},
105+#if 0 /* ANDROID */
106+ {FUNC_TYPE_GENERAL,"s_server",s_server_main},
107+#endif
108 #endif
109 #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
110 {FUNC_TYPE_GENERAL,"s_client",s_client_main},
111diff -ur openssl-0.9.8h-ORIG/apps/speed.c openssl-0.9.8h/apps/speed.c
112--- openssl-0.9.8h-ORIG/apps/speed.c
113+++ openssl-0.9.8h/apps/speed.c
114@@ -108,12 +108,12 @@
115 #include <signal.h>
116 #endif
117
118-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX)
119+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX) || defined(HAVE_ANDROID_OS)
120 # define USE_TOD
121 #elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
122 # define TIMES
123 #endif
124-#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && !defined(OPENSSL_SYS_VXWORKS) /* FIXME */
125+#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && !defined(OPENSSL_SYS_VXWORKS) && !defined(HAVE_ANDROID_OS) /* FIXME */
126 # define TIMEB
127 #endif
128
129@@ -1836,6 +1836,7 @@
130 }
131 }
132
133+#if 0 /* ANDROID */
134 if (doit[D_IGE_128_AES])
135 {
136 for (j=0; j<SIZE_NUM; j++)
137@@ -1879,6 +1880,7 @@
138 }
139 }
140 #endif
141+#endif
142 #ifndef OPENSSL_NO_CAMELLIA
143 if (doit[D_CBC_128_CML])
144 {
145