1// Copyright 2018 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_applicable_licenses: ["Android-Apache-2.0"],
17}
18
19java_sdk_library {
20    name: "android.net.ipsec.ike",
21    installable: true,
22    defaults: ["framework-module-defaults"],
23
24    // ike is used as a shared library.
25    shared_library: true,
26    compile_dex: true,
27
28    aidl: {
29        local_include_dirs: ["src/java"],
30    },
31    srcs: [":ike-srcs"],
32
33    static_libs: [
34        "ike-internals",
35    ],
36
37    libs: [
38        "unsupportedappusage",
39        "framework-annotations-lib",
40        "conscrypt.module.public.api.stubs.module_lib",
41        "framework-configinfrastructure.stubs.module_lib",
42        "framework-connectivity.stubs.module_lib",
43        "framework-connectivity-t.stubs.module_lib",
44        "framework-statsd.stubs.module_lib",
45    ],
46    stub_only_libs: [
47        "framework-connectivity.stubs.module_lib",
48        "framework-connectivity-t.stubs.module_lib",
49    ],
50
51    api_packages: [
52        "android.net.eap",
53        "android.net.ipsec.ike",
54        "android.net.ipsec.ike.exceptions",
55        "android.net.ipsec.ike.exceptions.protocol",
56        "android.net.ipsec.ike.ike3gpp",
57    ],
58
59    aconfig_declarations: [
60        "ipsec_aconfig_flags",
61    ],
62
63    lint: {
64        baseline_filename: "lint-baseline.xml",
65    },
66
67    // Shared filegroups of BouncyCastle and frameworks are jar-jar'ed to avoid
68    // being overwritten by the frameworks class copies.
69    jarjar_rules: "jarjar-rules-shared.txt",
70
71    hostdex: true, // for hiddenapi check
72    apex_available: [
73        "com.android.ipsec",
74        "test_com.android.ipsec",
75    ],
76
77    permitted_packages: [
78        "com.android.internal.net",
79        "android.net.ipsec.ike",
80        "android.net.eap",
81    ],
82    min_sdk_version: "30",
83}
84
85filegroup {
86    name: "ike-srcs",
87    defaults: ["framework-sources-module-defaults"],
88    srcs: [
89        ":ike-internal-srcs",
90        ":framework-ike-shared-srcs",
91        ":statslog-ike-java-gen",
92    ],
93}
94
95filegroup {
96    name: "ike-internal-srcs",
97    srcs: [
98        "src/java/**/*.java",
99    ],
100    path: "src/java/",
101}
102
103filegroup {
104    name: "ike-aes-xcbc",
105    srcs: ["src/java/**/AesXCbcImpl.java"],
106}
107
108// Provides internal classes needed to build the ike sources.
109java_library {
110    name: "ike-internals",
111    min_sdk_version: "30",
112    apex_available: [
113        "com.android.ipsec",
114        "test_com.android.ipsec",
115    ],
116    static_libs: [
117        "bouncycastle_ike_digests",
118        "modules-utils-build",
119        "modules-utils-statemachine",
120        "net-utils-framework-ipsec",
121    ],
122    sdk_version: "module_current",
123}
124
125java_library {
126    name: "ike_test",
127    installable: false, // Used only for testing; never installed alone.
128    srcs: [":ike-srcs"],
129    libs: [
130        "unsupportedappusage",
131        "conscrypt.module.public.api.stubs",
132    ],
133    static_libs: ["ike-internals"],
134
135    // Shared filegroups of BouncyCastle and frameworks are jar-jar'ed to avoid
136    // being overwritten by the frameworks class copies and break code coverage
137    // reports. IKE source files are jarjared to avoid this test jar being
138    // overshadowed by the IKE jar in framework and bootclasspath which will
139    // cause compiling and runtime errors respectively.
140    jarjar_rules: "jarjar-rules-test.txt",
141}
142
143java_library {
144    name: "ike-test-utils-dependency",
145    installable: false, // Used only for building the "ike-test-utils"
146    srcs: ["src/java/**/IkeCertUtils.java"],
147    jarjar_rules: "jarjar-rules-test.txt",
148}
149
150java_library {
151    name: "ike-test-utils",
152    srcs: [
153        "src/java/**/PolicyDirection.java",
154        "tests/iketests/src/java/**/CertUtils.java",
155    ],
156    static_libs: ["ike-test-utils-dependency"],
157    libs: ["androidx.test.rules"],
158    visibility: ["//packages/modules/IPsec/tests/cts"],
159}
160
161sdk {
162    name: "ipsec-module-sdk",
163    apexes: [
164        // Adds exportable dependencies of the APEX to the sdk,
165        // e.g. *classpath_fragments.
166        "com.android.ipsec",
167    ],
168}
169
170genrule {
171    name: "statslog-ike-java-gen",
172    tools: ["stats-log-api-gen"],
173    cmd: "$(location stats-log-api-gen) --java $(out) --module ike" +
174        " --javaPackage com.android.internal.net.ipsec.ike.utils --javaClass IkeMetricsInterface",
175    out: ["com/android/internal/net/ipsec/ike/utils/IkeMetricsInterface.java"],
176}
177