OLD | NEW |
1 Name: openssl | 1 Name: openssl |
2 URL: http://openssl.org/source/ | 2 URL: http://openssl.org/source/ |
3 Version: 1.0.0f | 3 Version: 1.0.1c |
4 License: BSDish | 4 License: BSDish |
5 License File: openssl/LICENSE | 5 License File: openssl/LICENSE |
6 License Android Compatible: yes | 6 License Android Compatible: yes |
7 Security Critical: yes | 7 Security Critical: yes |
8 | 8 |
9 Description: | 9 Description: |
10 This is OpenSSL, the standard SSL/TLS library, which is used only in Android. | 10 This is OpenSSL, the standard SSL/TLS library, which is used *only* in |
| 11 the following cases: |
11 | 12 |
12 It's an unmodified, upstream source except for the patches listed below. | 13 - For Chrome/Chromium, only on Android to implement SSL/TLS support |
| 14 (while certificate validation is performed through the platform APIs), |
| 15 instead of using NSS as on other Linux-based operating systems. |
13 | 16 |
| 17 Note that there is no plans to support OpenSSL in Chromium on other |
| 18 platforms. For more context, please read: |
14 | 19 |
15 ******************************************************************************** | 20 https://groups.google.com/a/chromium.org/d/msg/chromium-dev/gmO3U9HLY3Y/RPG
NiQ-NL-YJ |
16 The following patches are taken from Android Open Source Project. | |
17 | 21 |
| 22 - To implement net/tools/flip_server, a host-side tool. Read more about |
| 23 it at the following page: |
18 | 24 |
19 progs.patch: | 25 http://dev.chromium.org/spdy/running_flipinmemserver |
20 | 26 |
21 Fixup sources under the apps/ directory that are not built under the android env
ironment. | 27 This means that the library must be built, at a minimum, for Android, Linux |
| 28 and Darwin systems. |
22 | 29 |
| 30 Android/ARM Android/x86 Linux/x86 Linux/x86_64 Darwin/x86 Darwin/x86_64 |
23 | 31 |
24 small_records.patch: | 32 This source shall track the state of the Android platform's openssl version |
| 33 of the library, with some important details listed here: |
25 | 34 |
26 Reduce OpenSSL memory consumption. | 35 - The Android version lives under $ANDROID/external/openssl, while |
27 SSL records may be as large as 16K, but are typically < 2K. In | 36 the Chromum version (these files) live under |
28 addition, a historic bug in Windows allowed records to be as large | 37 $CHROMIUM/src/third_party/openssl. |
29 32K. OpenSSL statically allocates read and write buffers (34K and | |
30 18K respectively) used for processing records. | |
31 With this patch, OpenSSL statically allocates 4K + 4K buffers, with | |
32 the option of dynamically growing buffers to 34K + 4K, which is a | |
33 saving of 44K per connection for the typical case. | |
34 | 38 |
| 39 - The Android version corresponds to the upstream original sources with |
| 40 the patches under $ANDROID/external/openssl/patches applied. It also |
| 41 does not include many files and directories that are not necessary for |
| 42 the Android build. |
35 | 43 |
36 handshake_cutthrough.patch | 44 - The Chromium version corresponds to the upstream original sources with |
| 45 the patches under $CHROMIUM/src/third_party/openssl/patches/ applied. |
| 46 Most of these patches come from the Android tree, with a few additional |
| 47 ones. |
37 | 48 |
38 Enables SSL3+ clients to send application data immediately following the | 49 The file patches/README lists the purpose of each Android patch. |
39 Finished message even when negotiating full-handshakes. With this patch, | 50 Additional Chromium-specific patches also exist and are described |
40 clients can negotiate SSL connections in 1-RTT even when performing | 51 at the end of this document. |
41 full-handshakes. | |
42 | 52 |
| 53 - The Chromium openssl.gyp tries to match the Android.mk when it comes |
| 54 to listing all source files. There is no direct mapping due to many |
| 55 differences in their structure. To make this slightly easier, this file |
| 56 doesn't use the convention of listing *all* source files under openssl, |
| 57 then conditionally removing them for an Android build. |
43 | 58 |
44 jsse.patch | 59 Instead, only the files needed for the build are listed in 'sources'. |
| 60 Given that there is a very large number of files that are not used in |
| 61 the build, this simplified the task of keeping both files in sync. |
45 | 62 |
46 Support for JSSE implementation based on OpenSSL. | 63 - The Android tree also includes auto-generated assembly files for |
| 64 ARM, x86 and MIPS, used to speed up some crypto computations. They |
| 65 are generated by the $ANDROID/external/openssl/import_openssl.sh |
| 66 script (which itself invokes a bunch of Perl generations scripts) |
| 67 and have a file extension of .s |
47 | 68 |
| 69 These files are also copied into the Chromium tree, with an .S file |
| 70 extension, because they require being sent to the C preprocessor |
| 71 before the assembler. |
48 | 72 |
49 npn.patch | 73 The original Android.mk uses a feature not supported by gyp, which is: |
50 | 74 |
51 Transport Layer Security (TLS) Next Protocol Negotiation Extension | 75 LOCAL_AS_FLAGS := -x assembler-with-cpp |
52 | 76 |
| 77 It tells the build system to apply the '-x assembler-with-cpp' flag |
| 78 only to assembler files. |
53 | 79 |
54 sha1_armv4_large.patch | 80 By using .S instead, the build 'just works' on Chromium. |
55 | 81 |
56 This patch eliminates memory stores to addresses below SP. | 82 - The Android build holds all configuration in |
| 83 external/openssl/android-config.mk which is a Makefile fragment used |
| 84 to define compiler flags that define configuration macros, to be used |
| 85 when building *and* using the library. |
57 | 86 |
| 87 The Chromium version uses config/<name>/openssl/opensslconf.h instead, |
| 88 where name can be 'android', 'piii' or 'k8', corresponding to the |
| 89 Android, Posix/ia32 or Posix/x64 builds. |
58 | 90 |
59 openssl_no_dtls1.patch | 91 These headers hold the definition of these configuration variables. |
| 92 Their parent directory must appear *before* openssl/include when |
| 93 building and using the library. This is taken care of by openssl.gyp |
| 94 here. |
60 | 95 |
61 Add missing #ifndef OPENSSL_NO_DTLS1 | 96 Due to this, the Chromium tree also does not include obsolete copies |
| 97 of opensslconf.h which appear in the Android source tree (and do not |
| 98 seem to be really included during the build). |
62 | 99 |
63 | 100 *************************************************************************** |
64 ******************************************************************************** | 101 The following patches are needed to compile this openssl on Chromium and |
65 The following patches are needed to compile this openssl on Chromium and pass | 102 pass the related net unit tests. They are applied on top of the |
66 the related net unit tests. | 103 Android-specific patches described under patches/README: |
67 | |
68 | |
69 empty_OPENSSL_cpuid_setup.patch | |
70 | |
71 Use a empty implementation for function OPENSSL_cpuid_setup to resolve link | |
72 error. We should figure out how to geenrate platform specific implementation | |
73 of OPENSSL_cpuid_setup by leveraging crypto/*cpuid.pl. | |
74 | |
75 | 104 |
76 x509_hash_name_algorithm_change.patch | 105 x509_hash_name_algorithm_change.patch |
77 | 106 |
78 There are many symbolic links under /etc/ssl/certs created by using hash of | 107 There are many symbolic links under /etc/ssl/certs created by using hash |
79 the pem certificates in order for OpenSSL to find those certificate. | 108 of the PEM certificates in order for OpenSSL to find those certificates. |
80 Openssl has a tool to help you create hash symbolic links. (See tools/c_rehash) | 109 Openssl has a tool to help you create hash symbolic links (tools/c_rehash). |
81 However the new openssl changed the hash algorithm, Unless you compile/install | 110 However the new openssl changed the hash algorithm. Unless you |
82 the latest openssl library and re-create all related symbolic links, the new | 111 compile/install the latest openssl library and re-create all related |
83 openssl can not find some certificates because the links of those certificates | 112 symbolic links, the new openssl can not find some certificates because |
84 were created by using old hash algorithm, which causes some tests failed. | 113 the links of those certificates were created by using old hash algorithm, |
85 This patch gives a way to find a certificate according to its hash by using both | 114 which causes some tests failed. This patch gives a way to find a |
86 new algorithm and old algorithm. | 115 certificate according to its hash by using both new algorithm and old |
87 crbug.com/111045 is used to track this issue. | 116 algorithm. crbug.com/111045 is used to track this issue. |
88 | 117 |
| 118 fix-clang-build.patch |
89 | 119 |
90 tls_exporter.patch | 120 Small patch to fix various minor issues which prevent building the library |
91 | 121 with Clang. |
92 Keying Material Exporters for Transport Layer Security (RFC 5705). | |
93 | |
94 | |
95 Android platform support | |
96 | |
97 Copy config/android/openssl/opensslconf.h from Android's | |
98 external/openssl/include/openssl/opensslconf.h | |
OLD | NEW |