/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package {
    default_team: "trendy_team_virtualization",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

rust_library {
    name: "libsecretkeeper_nonsecure",
    crate_name: "secretkeeper_nonsecure",
    srcs: [
        "src/lib.rs",
    ],
    vendor_available: true,
    defaults: [
        "authgraph_use_latest_hal_aidl_rust",
    ],
    rustlibs: [
        "android.hardware.security.secretkeeper-V1-rust",
        "libauthgraph_boringssl",
        "libauthgraph_core",
        "libauthgraph_hal",
        "libbinder_rs",
        "libcoset",
        "liblog_rust",
        "libsecretkeeper_core_nostd",
        "libsecretkeeper_comm_nostd",
    ],
}

rust_binary {
    name: "android.hardware.security.secretkeeper-service.nonsecure",
    relative_install_path: "hw",
    vendor: true,
    installable: false, // install APEX
    prefer_rlib: true,
    defaults: [
        "authgraph_use_latest_hal_aidl_rust",
    ],
    rustlibs: [
        "android.hardware.security.secretkeeper-V1-rust",
        "libandroid_logger",
        "libbinder_rs",
        "liblog_rust",
        "libsecretkeeper_hal",
        "libsecretkeeper_nonsecure",
    ],
    srcs: [
        "src/main.rs",
    ],
}

rust_fuzz {
    name: "android.hardware.security.secretkeeper-service.nonsecure_fuzzer",
    rustlibs: [
        "libsecretkeeper_hal",
        "libsecretkeeper_nonsecure",
        "libbinder_random_parcel_rs",
        "libbinder_rs",
    ],
    srcs: ["src/fuzzer.rs"],
    fuzz_config: {
        cc: [
            "alanstokes@google.com",
            "drysdale@google.com",
            "shikhapanwar@google.com",
        ],
    },
}

prebuilt_etc {
    name: "secretkeeper.rc",
    src: "secretkeeper.rc",
    installable: false,
}

prebuilt_etc {
    name: "secretkeeper.xml",
    src: "secretkeeper.xml",
    sub_dir: "vintf",
    installable: false,
}

apex {
    name: "com.android.hardware.security.secretkeeper",
    manifest: "apex_manifest.json",
    file_contexts: "apex_file_contexts",
    key: "com.android.hardware.key",
    certificate: ":com.android.hardware.certificate",
    vendor: true,
    updatable: false,

    binaries: [
        "android.hardware.security.secretkeeper-service.nonsecure",
    ],
    prebuilts: [
        "secretkeeper.rc",
        "secretkeeper.xml",
    ],
}
