xref: /aosp_15_r20/external/conscrypt/README.md (revision cd0cc2e34ba52cdf454361820a14d744e4bd531d)
1*cd0cc2e3SAndroid Build Coastguard WorkerConscrypt - A Java Security Provider
2*cd0cc2e3SAndroid Build Coastguard Worker========================================
3*cd0cc2e3SAndroid Build Coastguard Worker
4*cd0cc2e3SAndroid Build Coastguard WorkerConscrypt is a Java Security Provider (JSP) that implements parts of the Java
5*cd0cc2e3SAndroid Build Coastguard WorkerCryptography Extension (JCE) and Java Secure Socket Extension (JSSE).  It uses
6*cd0cc2e3SAndroid Build Coastguard WorkerBoringSSL to provide cryptographic primitives and Transport Layer Security (TLS)
7*cd0cc2e3SAndroid Build Coastguard Workerfor Java applications on Android and OpenJDK.  See [the capabilities
8*cd0cc2e3SAndroid Build Coastguard Workerdocumentation](CAPABILITIES.md) for detailed information on what is provided.
9*cd0cc2e3SAndroid Build Coastguard Worker
10*cd0cc2e3SAndroid Build Coastguard WorkerThe core SSL engine has borrowed liberally from the [Netty](http://netty.io/) project and their
11*cd0cc2e3SAndroid Build Coastguard Workerwork on [netty-tcnative](http://netty.io/wiki/forked-tomcat-native.html), giving `Conscrypt`
12*cd0cc2e3SAndroid Build Coastguard Workersimilar performance.
13*cd0cc2e3SAndroid Build Coastguard Worker
14*cd0cc2e3SAndroid Build Coastguard Worker<table>
15*cd0cc2e3SAndroid Build Coastguard Worker  <tr>
16*cd0cc2e3SAndroid Build Coastguard Worker    <td><b>Homepage:</b></td>
17*cd0cc2e3SAndroid Build Coastguard Worker    <td>
18*cd0cc2e3SAndroid Build Coastguard Worker      <a href="https://conscrypt.org/">conscrypt.org</a>
19*cd0cc2e3SAndroid Build Coastguard Worker    </td>
20*cd0cc2e3SAndroid Build Coastguard Worker  </tr>
21*cd0cc2e3SAndroid Build Coastguard Worker  <tr>
22*cd0cc2e3SAndroid Build Coastguard Worker    <td><b>Mailing List:</b></td>
23*cd0cc2e3SAndroid Build Coastguard Worker    <td>
24*cd0cc2e3SAndroid Build Coastguard Worker      <a href="https://groups.google.com/forum/#!forum/conscrypt">[email protected]</a>
25*cd0cc2e3SAndroid Build Coastguard Worker    </td>
26*cd0cc2e3SAndroid Build Coastguard Worker  </tr>
27*cd0cc2e3SAndroid Build Coastguard Worker</table>
28*cd0cc2e3SAndroid Build Coastguard Worker
29*cd0cc2e3SAndroid Build Coastguard WorkerDownload
30*cd0cc2e3SAndroid Build Coastguard Worker-------------
31*cd0cc2e3SAndroid Build Coastguard WorkerConscrypt supports **Java 8** or later on OpenJDK and **KitKat (API Level
32*cd0cc2e3SAndroid Build Coastguard Worker19)** or later on Android.  The build artifacts are available on Maven Central.
33*cd0cc2e3SAndroid Build Coastguard Worker
34*cd0cc2e3SAndroid Build Coastguard Worker### Download JARs
35*cd0cc2e3SAndroid Build Coastguard WorkerYou can download
36*cd0cc2e3SAndroid Build Coastguard Worker[the JARs](http://search.maven.org/#search%7Cga%7C1%7Cg:%22org.conscrypt%22)
37*cd0cc2e3SAndroid Build Coastguard Workerdirectly from the Maven repositories.
38*cd0cc2e3SAndroid Build Coastguard Worker
39*cd0cc2e3SAndroid Build Coastguard Worker### OpenJDK (i.e. non-Android)
40*cd0cc2e3SAndroid Build Coastguard Worker
41*cd0cc2e3SAndroid Build Coastguard Worker#### Native Classifiers
42*cd0cc2e3SAndroid Build Coastguard Worker
43*cd0cc2e3SAndroid Build Coastguard WorkerThe OpenJDK artifacts are platform-dependent since each embeds a native library for a particular
44*cd0cc2e3SAndroid Build Coastguard Workerplatform. We publish artifacts to Maven Central for the following platforms:
45*cd0cc2e3SAndroid Build Coastguard Worker
46*cd0cc2e3SAndroid Build Coastguard WorkerClassifier | OS | Architecture
47*cd0cc2e3SAndroid Build Coastguard Worker-----------| ------- | ---------------- |
48*cd0cc2e3SAndroid Build Coastguard Workerlinux-x86_64 | Linux | x86_64 (64-bit)
49*cd0cc2e3SAndroid Build Coastguard Workerosx-x86_64 | Mac | x86_64 (64-bit)
50*cd0cc2e3SAndroid Build Coastguard Workerwindows-x86 | Windows | x86 (32-bit)
51*cd0cc2e3SAndroid Build Coastguard Workerwindows-x86_64 | Windows | x86_64 (64-bit)
52*cd0cc2e3SAndroid Build Coastguard Worker
53*cd0cc2e3SAndroid Build Coastguard Worker#### Maven
54*cd0cc2e3SAndroid Build Coastguard Worker
55*cd0cc2e3SAndroid Build Coastguard WorkerUse the [os-maven-plugin](https://github.com/trustin/os-maven-plugin) to add the dependency:
56*cd0cc2e3SAndroid Build Coastguard Worker
57*cd0cc2e3SAndroid Build Coastguard Worker```xml
58*cd0cc2e3SAndroid Build Coastguard Worker<build>
59*cd0cc2e3SAndroid Build Coastguard Worker  <extensions>
60*cd0cc2e3SAndroid Build Coastguard Worker    <extension>
61*cd0cc2e3SAndroid Build Coastguard Worker      <groupId>kr.motd.maven</groupId>
62*cd0cc2e3SAndroid Build Coastguard Worker      <artifactId>os-maven-plugin</artifactId>
63*cd0cc2e3SAndroid Build Coastguard Worker      <version>1.4.1.Final</version>
64*cd0cc2e3SAndroid Build Coastguard Worker    </extension>
65*cd0cc2e3SAndroid Build Coastguard Worker  </extensions>
66*cd0cc2e3SAndroid Build Coastguard Worker</build>
67*cd0cc2e3SAndroid Build Coastguard Worker
68*cd0cc2e3SAndroid Build Coastguard Worker<dependency>
69*cd0cc2e3SAndroid Build Coastguard Worker  <groupId>org.conscrypt</groupId>
70*cd0cc2e3SAndroid Build Coastguard Worker  <artifactId>conscrypt-openjdk</artifactId>
71*cd0cc2e3SAndroid Build Coastguard Worker  <version>2.5.2</version>
72*cd0cc2e3SAndroid Build Coastguard Worker  <classifier>${os.detected.classifier}</classifier>
73*cd0cc2e3SAndroid Build Coastguard Worker</dependency>
74*cd0cc2e3SAndroid Build Coastguard Worker```
75*cd0cc2e3SAndroid Build Coastguard Worker
76*cd0cc2e3SAndroid Build Coastguard Worker#### Gradle
77*cd0cc2e3SAndroid Build Coastguard WorkerUse the [osdetector-gradle-plugin](https://github.com/google/osdetector-gradle-plugin)
78*cd0cc2e3SAndroid Build Coastguard Worker(which is a wrapper around the os-maven-plugin) to add the dependency:
79*cd0cc2e3SAndroid Build Coastguard Worker
80*cd0cc2e3SAndroid Build Coastguard Worker```gradle
81*cd0cc2e3SAndroid Build Coastguard Workerbuildscript {
82*cd0cc2e3SAndroid Build Coastguard Worker  repositories {
83*cd0cc2e3SAndroid Build Coastguard Worker    mavenCentral()
84*cd0cc2e3SAndroid Build Coastguard Worker  }
85*cd0cc2e3SAndroid Build Coastguard Worker  dependencies {
86*cd0cc2e3SAndroid Build Coastguard Worker    classpath 'com.google.gradle:osdetector-gradle-plugin:1.4.0'
87*cd0cc2e3SAndroid Build Coastguard Worker  }
88*cd0cc2e3SAndroid Build Coastguard Worker}
89*cd0cc2e3SAndroid Build Coastguard Worker
90*cd0cc2e3SAndroid Build Coastguard Worker// Use the osdetector-gradle-plugin
91*cd0cc2e3SAndroid Build Coastguard Workerapply plugin: "com.google.osdetector"
92*cd0cc2e3SAndroid Build Coastguard Worker
93*cd0cc2e3SAndroid Build Coastguard Workerdependencies {
94*cd0cc2e3SAndroid Build Coastguard Worker  compile 'org.conscrypt:conscrypt-openjdk:2.5.2:' + osdetector.classifier
95*cd0cc2e3SAndroid Build Coastguard Worker}
96*cd0cc2e3SAndroid Build Coastguard Worker```
97*cd0cc2e3SAndroid Build Coastguard Worker
98*cd0cc2e3SAndroid Build Coastguard Worker#### Uber JAR
99*cd0cc2e3SAndroid Build Coastguard Worker
100*cd0cc2e3SAndroid Build Coastguard WorkerFor convenience, we also publish an Uber JAR to Maven Central that contains the shared
101*cd0cc2e3SAndroid Build Coastguard Workerlibraries for all of the published platforms. While the overall size of the JAR is
102*cd0cc2e3SAndroid Build Coastguard Workerlarger than depending on a platform-specific artifact, it greatly simplifies the task of
103*cd0cc2e3SAndroid Build Coastguard Workerdependency management for most platforms.
104*cd0cc2e3SAndroid Build Coastguard Worker
105*cd0cc2e3SAndroid Build Coastguard WorkerTo depend on the uber jar, simply use the `conscrypt-openjdk-uber` artifacts.
106*cd0cc2e3SAndroid Build Coastguard Worker
107*cd0cc2e3SAndroid Build Coastguard Worker##### Maven
108*cd0cc2e3SAndroid Build Coastguard Worker```xml
109*cd0cc2e3SAndroid Build Coastguard Worker<dependency>
110*cd0cc2e3SAndroid Build Coastguard Worker  <groupId>org.conscrypt</groupId>
111*cd0cc2e3SAndroid Build Coastguard Worker  <artifactId>conscrypt-openjdk-uber</artifactId>
112*cd0cc2e3SAndroid Build Coastguard Worker  <version>2.5.2</version>
113*cd0cc2e3SAndroid Build Coastguard Worker</dependency>
114*cd0cc2e3SAndroid Build Coastguard Worker```
115*cd0cc2e3SAndroid Build Coastguard Worker
116*cd0cc2e3SAndroid Build Coastguard Worker##### Gradle
117*cd0cc2e3SAndroid Build Coastguard Worker```gradle
118*cd0cc2e3SAndroid Build Coastguard Workerdependencies {
119*cd0cc2e3SAndroid Build Coastguard Worker  compile 'org.conscrypt:conscrypt-openjdk-uber:2.5.2'
120*cd0cc2e3SAndroid Build Coastguard Worker}
121*cd0cc2e3SAndroid Build Coastguard Worker```
122*cd0cc2e3SAndroid Build Coastguard Worker
123*cd0cc2e3SAndroid Build Coastguard Worker### Android
124*cd0cc2e3SAndroid Build Coastguard Worker
125*cd0cc2e3SAndroid Build Coastguard WorkerThe Android AAR file contains native libraries for x86, x86_64, armeabi-v7a, and
126*cd0cc2e3SAndroid Build Coastguard Workerarm64-v8a.
127*cd0cc2e3SAndroid Build Coastguard Worker
128*cd0cc2e3SAndroid Build Coastguard Worker#### Gradle
129*cd0cc2e3SAndroid Build Coastguard Worker
130*cd0cc2e3SAndroid Build Coastguard Worker```gradle
131*cd0cc2e3SAndroid Build Coastguard Workerdependencies {
132*cd0cc2e3SAndroid Build Coastguard Worker  implementation 'org.conscrypt:conscrypt-android:2.5.2'
133*cd0cc2e3SAndroid Build Coastguard Worker}
134*cd0cc2e3SAndroid Build Coastguard Worker```
135*cd0cc2e3SAndroid Build Coastguard Worker
136*cd0cc2e3SAndroid Build Coastguard Worker
137*cd0cc2e3SAndroid Build Coastguard WorkerHow to Build
138*cd0cc2e3SAndroid Build Coastguard Worker------------
139*cd0cc2e3SAndroid Build Coastguard Worker
140*cd0cc2e3SAndroid Build Coastguard WorkerIf you are making changes to Conscrypt, see the [building
141*cd0cc2e3SAndroid Build Coastguard Workerinstructions](BUILDING.md).
142