1package {
2    // See: http://go/android-license-faq
3    // A large-scale-change added 'default_applicable_licenses' to import
4    // all of the 'license_kinds' from "external_rust_beto-rust_license"
5    // to get the below license kinds:
6    //   legacy_unencumbered
7    //   SPDX-license-identifier-Apache-2.0
8    //   SPDX-license-identifier-Unlicense
9    default_visibility: [":__subpackages__"],
10    default_applicable_licenses: ["external_rust_beto-rust_license"],
11}
12
13rust_library_rlib {
14    name: "libcrypto_provider",
15    crate_name: "crypto_provider",
16    defaults: ["beto_rust_defaults"],
17    srcs: ["crypto/crypto_provider/src/lib.rs"],
18    features: [
19        "std",
20        "alloc",
21        "default",
22        "gcm_siv",
23    ],
24    rustlibs: [
25        "libhex",
26        "librand",
27        "libtinyvec",
28    ],
29}
30
31rust_library_rlib {
32    name: "libcrypto_provider_stubs",
33    crate_name: "crypto_provider_stubs",
34    defaults: ["beto_rust_defaults"],
35    srcs: ["crypto/crypto_provider_stubs/src/lib.rs"],
36    rustlibs: [
37        "libcrypto_provider",
38    ],
39}
40
41rust_library_rlib {
42    name: "libcrypto_provider_default",
43    crate_name: "crypto_provider_default",
44    defaults: ["beto_rust_defaults"],
45    srcs: ["crypto/crypto_provider_default/src/lib.rs"],
46    features: ["boringssl"],
47    rustlibs: [
48        "libcfg_if",
49        "libcrypto_provider",
50        "libcrypto_provider_boringssl",
51    ],
52}
53
54rust_library_rlib {
55    name: "libcrypto_provider_boringssl",
56    crate_name: "crypto_provider_boringssl",
57    defaults: ["beto_rust_defaults"],
58    srcs: ["crypto/crypto_provider_boringssl/src/lib.rs"],
59    rustlibs: [
60        "libcfg_if",
61        "libcrypto_provider",
62        "libcrypto_provider_stubs",
63        "libbssl_crypto",
64        "librand",
65    ],
66}
67
68rust_ffi_shared {
69    name: "libukey2_c_ffi_shared",
70    stem: "libukey2_c_ffi",
71    crate_name: "ukey2_c_ffi",
72    defaults: ["beto_rust_defaults"],
73    srcs: ["connections/ukey2/ukey2_c_ffi/src/lib.rs"],
74    features: [
75        "openssl",
76        "std",
77    ],
78    rlibs: [
79        "libcfg_if",
80        "libcrypto_provider_default",
81        "liblazy_static",
82        "liblock_adapter",
83        "liblog_rust",
84        "librand",
85        "librand_chacha",
86        "libukey2_connections",
87        "libukey2_rs",
88    ],
89}
90
91rust_library_rlib {
92    name: "libukey2_connections",
93    crate_name: "ukey2_connections",
94    defaults: ["beto_rust_defaults"],
95    srcs: ["connections/ukey2/ukey2_connections/src/lib.rs"],
96    rustlibs: [
97        "libbytes",
98        "libcrypto_provider",
99        "libnom",
100        "librand",
101        "libukey2_proto",
102        "libukey2_rs",
103    ],
104}
105
106rust_ffi_shared {
107    name: "libukey2_jni_shared",
108    stem: "libukey2_jni",
109    crate_name: "ukey2_jni",
110    defaults: ["beto_rust_defaults"],
111    srcs: ["connections/ukey2/ukey2_jni/src/lib.rs"],
112    features: [
113        "openssl",
114        "std",
115    ],
116    // Using rlibs instead of rustlibs here to minimize the size impact on the system image. Since
117    // most of the transitive dependencies are included only by this project for U, building this
118    // as a single dylib will be more space-efficient. As more Rust project gets added, this may
119    // change and it may be better for different projects to share the same dylib, especially for
120    // common projects like libjni and libprotobuf.
121    rlibs: [
122        "libcfg_if",
123        "libcrypto_provider_default",
124        "libjni",
125        "liblazy_static",
126        "liblock_adapter",
127        "librand",
128        "librand_chacha",
129        "libukey2_connections",
130        "libukey2_rs",
131    ],
132    compile_multilib: "first",
133    visibility: ["//visibility:public"],
134}
135
136rust_library_rlib {
137    name: "libukey2_proto",
138    crate_name: "ukey2_proto",
139    defaults: ["beto_rust_defaults"],
140    srcs: ["connections/ukey2/ukey2_proto/src/lib.rs"],
141    features: [
142        "default",
143    ],
144    rustlibs: [
145        "libprotobuf",
146    ],
147}
148
149rust_library_rlib {
150    name: "libukey2_rs",
151    crate_name: "ukey2_rs",
152    defaults: ["beto_rust_defaults"],
153    srcs: ["connections/ukey2/ukey2/src/lib.rs"],
154    rustlibs: [
155        "libcrypto_provider",
156        "libnum_bigint",
157        "liblog_rust",
158        "librand",
159        "libukey2_proto",
160    ],
161}
162
163java_library_static {
164    name: "ukey2_jni",
165    srcs: [
166        "connections/ukey2/ukey2_jni/java/src/main/**/*.java",
167    ],
168    host_supported: true,
169    static_libs: [
170        "jsr305",
171    ],
172    visibility: ["//visibility:public"],
173    required: [
174        "libukey2_jni_shared",
175    ],
176}
177
178rust_library_rlib {
179    name: "libnp_adv",
180    crate_name: "np_adv",
181    defaults: ["beto_rust_defaults"],
182    srcs: ["presence/np_adv/src/lib.rs"],
183    rustlibs: [
184        "libarray_view",
185        "libldt_np_adv",
186        "libldt",
187        "libnp_hkdf",
188        "libnp_ed25519",
189        "libxts_aes",
190        "libcrypto_provider",
191        "libstrum",
192        "libnom",
193        "liblazy_static",
194        "libsink",
195        "libtinyvec",
196    ],
197    proc_macros: [
198        "libstrum_macros",
199    ],
200}
201
202rust_library_rlib {
203    name: "libarray_view",
204    crate_name: "array_view",
205    defaults: ["beto_rust_defaults"],
206    srcs: ["presence/array_view/src/lib.rs"],
207}
208
209rust_library_rlib {
210    name: "libldt",
211    crate_name: "ldt",
212    defaults: ["beto_rust_defaults"],
213    srcs: ["presence/ldt/src/lib.rs"],
214    rustlibs: [
215        "libcrypto_provider",
216        "libldt_tbc",
217    ],
218}
219
220rust_library_rlib {
221    name: "libldt_tbc",
222    crate_name: "ldt_tbc",
223    defaults: ["beto_rust_defaults"],
224    srcs: ["presence/ldt_tbc/src/lib.rs"],
225    rustlibs: [
226        "libcrypto_provider",
227    ],
228}
229
230rust_library_rlib {
231    name: "libldt_np_adv",
232    crate_name: "ldt_np_adv",
233    defaults: ["beto_rust_defaults"],
234    srcs: ["presence/ldt_np_adv/src/lib.rs"],
235    rustlibs: [
236        "libcrypto_provider",
237        "libarray_view",
238        "libldt",
239        "libnp_hkdf",
240        "libxts_aes",
241        "libldt_tbc",
242    ],
243}
244
245rust_library_rlib {
246    name: "libnp_hkdf",
247    crate_name: "np_hkdf",
248    defaults: ["beto_rust_defaults"],
249    srcs: ["presence/np_hkdf/src/lib.rs"],
250    rustlibs: [
251        "libcrypto_provider",
252        "libldt",
253        "libxts_aes",
254    ],
255}
256
257rust_library_rlib {
258    name: "libnp_ed25519",
259    crate_name: "np_ed25519",
260    defaults: ["beto_rust_defaults"],
261    srcs: ["presence/np_ed25519/src/lib.rs"],
262    rustlibs: [
263        "libarray_view",
264        "libcrypto_provider",
265        "libsink",
266        "libtinyvec",
267    ],
268}
269
270rust_library_rlib {
271    name: "libxts_aes",
272    crate_name: "xts_aes",
273    defaults: ["beto_rust_defaults"],
274    srcs: ["presence/xts_aes/src/lib.rs"],
275    rustlibs: [
276        "libarray_ref",
277        "libcrypto_provider",
278        "libldt_tbc",
279    ],
280}
281
282rust_library_rlib {
283    name: "libarray_ref",
284    crate_name: "array_ref",
285    defaults: ["beto_rust_defaults"],
286    srcs: ["presence/array_ref/src/lib.rs"],
287}
288
289rust_library_rlib {
290    name: "libsink",
291    crate_name: "sink",
292    defaults: ["beto_rust_defaults"],
293    srcs: ["presence/sink/src/lib.rs"],
294    rustlibs: [
295        "libtinyvec",
296    ],
297}
298