aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@google.com>2020-04-11 08:48:16 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-04-11 08:48:16 +0000
commit03df7eb9b4c25f033eacd5b6de6017a518081110 (patch)
treefe225505a18268b0b8d4b59b012099431c898d6b
parent513d591f084a6e5e0f83d6de5ca2281d6fa4e550 (diff)
parentc7589ee2ec2c0ece715c2bfd38d555e012ee9dd8 (diff)
downloadgeneric-03df7eb9b4c25f033eacd5b6de6017a518081110.tar.gz
Merge remote-tracking branch 'goog/upstream-master' into wfrichar-MP-RVC-05 am: c7589ee2ec
Change-Id: Id397804a8f69490a10b1deb98e289324f141a838
-rw-r--r--.bazelrc2
-rw-r--r--.gitignore (renamed from libnos_transport/.gitignore)0
-rw-r--r--WORKSPACE9
-rw-r--r--libnos/BUILD12
-rw-r--r--libnos/WORKSPACE1
-rw-r--r--libnos/generator/BUILD2
-rw-r--r--libnos/generator/WORKSPACE1
-rw-r--r--libnos_datagram/WORKSPACE1
-rw-r--r--libnos_datagram/citadel.c48
-rw-r--r--libnos_transport/BUILD21
-rw-r--r--libnos_transport/WORKSPACE20
-rw-r--r--nugget/include/app_nugget.h13
-rw-r--r--nugget/include/application.h18
-rw-r--r--nugget/proto/BUILD32
-rw-r--r--nugget/proto/WORKSPACE1
-rw-r--r--nugget/proto/nugget/app/keymaster/keymaster.proto14
16 files changed, 126 insertions, 69 deletions
diff --git a/.bazelrc b/.bazelrc
new file mode 100644
index 0000000..68ed17e
--- /dev/null
+++ b/.bazelrc
@@ -0,0 +1,2 @@
+# TODO(b/135549199): Remove this file when the problem is fixed
+build --incompatible_disable_deprecated_attr_params=false
diff --git a/libnos_transport/.gitignore b/.gitignore
index ac51a05..ac51a05 100644
--- a/libnos_transport/.gitignore
+++ b/.gitignore
diff --git a/WORKSPACE b/WORKSPACE
index 0d42cc0..094434b 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1 +1,10 @@
workspace(name = "nugget_host_generic")
+
+local_repository(
+ name = "nugget_bazelrules",
+ path = "../../bazel_rules",
+)
+
+load("@nugget_bazelrules//:deps.bzl", "nugget_deps")
+
+nugget_deps("../..")
diff --git a/libnos/BUILD b/libnos/BUILD
index edb46d5..c74e2cd 100644
--- a/libnos/BUILD
+++ b/libnos/BUILD
@@ -1,22 +1,22 @@
cc_library(
name = "libnos",
srcs = [
- "debug.cpp",
"NuggetClient.cpp",
+ "debug.cpp",
],
hdrs = [
- "include/nos/debug.h",
"include/nos/AppClient.h",
"include/nos/NuggetClient.h",
"include/nos/NuggetClientInterface.h",
+ "include/nos/debug.h",
],
includes = [
- "./include",
+ "include",
],
visibility = ["//visibility:public"],
deps = [
- "@nugget_host_generic//:nos_headers",
- "@nugget_host_generic_libnos_datagram//:libnos_datagram",
- "@nugget_host_generic_libnos_transport//:libnos_transport",
+ "//:nos_headers",
+ "//libnos_datagram",
+ "//libnos_transport",
],
)
diff --git a/libnos/WORKSPACE b/libnos/WORKSPACE
deleted file mode 100644
index 40ed97b..0000000
--- a/libnos/WORKSPACE
+++ /dev/null
@@ -1 +0,0 @@
-workspace(name = "nugget_host_generic_libnos")
diff --git a/libnos/generator/BUILD b/libnos/generator/BUILD
index 3499d07..1cb4b3d 100644
--- a/libnos/generator/BUILD
+++ b/libnos/generator/BUILD
@@ -9,6 +9,6 @@ cc_binary(
visibility = ["//visibility:public"],
deps = [
"@com_google_protobuf//:protoc_lib",
- "@nugget_host_generic_nugget_proto//:nugget_protobuf_options_cc_proto",
+ "@nugget_host_generic//nugget/proto:nugget_protobuf_options_cc_proto",
],
)
diff --git a/libnos/generator/WORKSPACE b/libnos/generator/WORKSPACE
deleted file mode 100644
index fc361c0..0000000
--- a/libnos/generator/WORKSPACE
+++ /dev/null
@@ -1 +0,0 @@
-workspace(name = "nugget_host_generic_libnos_generator")
diff --git a/libnos_datagram/WORKSPACE b/libnos_datagram/WORKSPACE
deleted file mode 100644
index 3d515e2..0000000
--- a/libnos_datagram/WORKSPACE
+++ /dev/null
@@ -1 +0,0 @@
-workspace(name = "nugget_host_generic_libnos_datagram")
diff --git a/libnos_datagram/citadel.c b/libnos_datagram/citadel.c
index 026224d..7d1d893 100644
--- a/libnos_datagram/citadel.c
+++ b/libnos_datagram/citadel.c
@@ -31,6 +31,8 @@
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
#include <unistd.h>
/*****************************************************************************/
@@ -46,7 +48,8 @@ struct citadel_ioc_tpm_datagram {
#define CITADEL_IOC_RESET _IO(CITADEL_IOC_MAGIC, 2)
/*****************************************************************************/
-#define DEV_CITADEL "/dev/citadel0"
+#define DEV_CITADEL "/dev/citadel0"
+#define DEV_DAUNTLESS "/dev/gsc0"
static pthread_mutex_t in_buf_mutex = PTHREAD_MUTEX_INITIALIZER;
static uint8_t in_buf[MAX_DEVICE_TRANSFER];
@@ -203,24 +206,51 @@ static void close_device(void *ctx) {
free(ctx);
}
+static const char *default_device(void) {
+ struct stat statbuf;
+ int rv;
+
+ rv = stat(DEV_CITADEL, &statbuf);
+ if (!rv) {
+ return DEV_CITADEL;
+ }
+
+ rv = stat(DEV_DAUNTLESS, &statbuf);
+ if (!rv) {
+ return DEV_DAUNTLESS;
+ }
+
+ return 0;
+}
+
int nos_device_open(const char *device_name, struct nos_device *dev) {
- int fd, *new_fd;
+ int fd, *new_ctx;
+
+ if (!device_name) {
+ device_name = default_device();
+ }
+
+ if (!device_name) {
+ ALOGE("can't find device node\n");
+ return -ENODEV;
+ }
- fd = open(device_name ? device_name : DEV_CITADEL, O_RDWR);
+ fd = open(device_name, O_RDWR);
if (fd < 0) {
- ALOGE("can't open device: %s", strerror(errno));
+ ALOGE("can't open device \"%s\": %s", device_name, strerror(errno));
return -errno;
}
- new_fd = (int *)malloc(sizeof(int));
- if (!new_fd) {
- ALOGE("can't malloc new fd: %s", strerror(errno));
+ /* Our context is just a pointer to an int holding the fd */
+ new_ctx = (int *)malloc(sizeof(int));
+ if (!new_ctx) {
+ ALOGE("can't malloc new ctx: %s", strerror(errno));
close(fd);
return -ENOMEM;
}
- *new_fd = fd;
+ *new_ctx = fd;
- dev->ctx = new_fd;
+ dev->ctx = new_ctx;
dev->ops.read = read_datagram;
dev->ops.write = write_datagram;
dev->ops.wait_for_interrupt = wait_for_interrupt;
diff --git a/libnos_transport/BUILD b/libnos_transport/BUILD
index f9c327f..9db5a15 100644
--- a/libnos_transport/BUILD
+++ b/libnos_transport/BUILD
@@ -1,20 +1,20 @@
cc_library(
name = "libnos_transport",
srcs = [
- "transport.c",
"crc16.c",
- "crc16.h",
+ "transport.c",
],
hdrs = [
+ "crc16.h",
"include/nos/transport.h",
],
includes = [
- "./include",
+ "include",
],
visibility = ["//visibility:public"],
deps = [
- "@nugget_host_generic//:nos_headers",
- "@nugget_host_generic_libnos_datagram//:libnos_datagram",
+ "//:nos_headers",
+ "//libnos_datagram",
],
)
@@ -22,14 +22,15 @@ cc_test(
name = "libnos_transport_test",
srcs = [
"test/test.cpp",
- "crc16.c",
- "crc16.h",
],
- copts = ["-fsanitize=address"],
+ copts = [
+ "-fsanitize=address",
+ "-Ilibnos_transport",
+ ],
linkopts = ["-fsanitize=address"],
deps = [
":libnos_transport",
- "@gtest//:gtest",
- "@nugget_host_generic//:nos_headers",
+ "//:nos_headers",
+ "@gtest",
],
)
diff --git a/libnos_transport/WORKSPACE b/libnos_transport/WORKSPACE
deleted file mode 100644
index 14884e6..0000000
--- a/libnos_transport/WORKSPACE
+++ /dev/null
@@ -1,20 +0,0 @@
-workspace(name = "nugget_host_generic_libnos_transport")
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-http_archive(
- name = "gtest",
- url = "https://github.com/google/googletest/archive/release-1.8.1.zip",
- sha256 = "927827c183d01734cc5cfef85e0ff3f5a92ffe6188e0d18e909c5efebf28a0c7",
- strip_prefix = "googletest-release-1.8.1",
-)
-
-local_repository(
- name = "nugget_host_generic",
- path = "../../../host/generic",
-)
-
-local_repository(
- name = "nugget_host_generic_libnos_datagram",
- path = "../../../host/generic/libnos_datagram",
-)
diff --git a/nugget/include/app_nugget.h b/nugget/include/app_nugget.h
index 4336734..0c88e61 100644
--- a/nugget/include/app_nugget.h
+++ b/nugget/include/app_nugget.h
@@ -386,6 +386,19 @@ struct nugget_app_low_power_stats {
/* UNIMPLEMENTED */
/****************************************************************************/
+/* Commands for code coverage and quality assurance */
+
+#define NUGGET_GET_COVERAGE_COUNTERS 0x0300
+/**
+ * Returns the counters back to the master
+ *
+ * @param args module counter
+ * @param arg_len 1
+ * @param reply buffer containing coverage data in utf-8 format
+ * @param reply_len depends on the counters in the file
+ */
+
+/****************************************************************************/
/* These are bringup / debug functions only. */
#define NUGGET_PARAM_READ32 0xF000
diff --git a/nugget/include/application.h b/nugget/include/application.h
index c7b6da8..505dc1b 100644
--- a/nugget/include/application.h
+++ b/nugget/include/application.h
@@ -242,7 +242,7 @@ struct transport_status {
/* Flags used in the status message */
#define STATUS_FLAG_WORKING 0x0001 /* added in v1 */
-/* Pre-calculated CRCs for different status responses set by in the interrupt
+/* Pre-calculated CRCs for different status responses set in the interrupt
* context where the CRC would otherwise not be calculated. */
#define STATUS_CRC_FOR_IDLE 0x54c1
#define STATUS_CRC_FOR_WORKING 0x2101
@@ -305,14 +305,14 @@ void app_reply(struct app_transport *st, uint32_t status, uint16_t reply_len);
enum app_status {
/* A few values are common to all applications */
APP_SUCCESS = 0,
- APP_ERROR_BOGUS_ARGS, /* caller being stupid */
- APP_ERROR_INTERNAL, /* application being stupid */
- APP_ERROR_TOO_MUCH, /* caller sent too much data */
- APP_ERROR_IO, /* problem sending or receiving data */
- APP_ERROR_RPC, /* problem during RPC communication */
- APP_ERROR_CHECKSUM, /* checksum failed, only used within protocol */
- APP_ERROR_BUSY, /* the app is already working on a commnad */
- APP_ERROR_TIMEOUT, /* the app took too long to respond */
+ APP_ERROR_BOGUS_ARGS, /* caller being stupid */
+ APP_ERROR_INTERNAL, /* application being stupid */
+ APP_ERROR_TOO_MUCH, /* caller sent too much data */
+ APP_ERROR_IO, /* problem sending or receiving data */
+ APP_ERROR_RPC, /* problem during RPC communication */
+ APP_ERROR_CHECKSUM, /* checksum failed, only used within protocol */
+ APP_ERROR_BUSY, /* the app is already working on a commnad */
+ APP_ERROR_TIMEOUT, /* the app took too long to respond */
/* more? */
APP_SPECIFIC_ERROR = 0x20, /* "should be enough for anybody" */
diff --git a/nugget/proto/BUILD b/nugget/proto/BUILD
index ffd6b4f..4d6729b 100644
--- a/nugget/proto/BUILD
+++ b/nugget/proto/BUILD
@@ -77,7 +77,7 @@ cc_library(
deps = [
"nugget_app_keymaster_keymaster_cc_proto",
"nugget_protobuf_options_cc_proto",
- "@nugget_host_generic_libnos//:libnos",
+ "@nugget_host_generic//libnos",
],
)
@@ -96,7 +96,7 @@ cc_library(
deps = [
"nugget_app_weaver_weaver_cc_proto",
"nugget_protobuf_options_cc_proto",
- "@nugget_host_generic_libnos//:libnos",
+ "@nugget_host_generic//libnos",
],
)
@@ -115,7 +115,7 @@ cc_library(
deps = [
"nugget_app_avb_avb_cc_proto",
"nugget_protobuf_options_cc_proto",
- "@nugget_host_generic_libnos//:libnos",
+ "@nugget_host_generic//libnos",
],
)
@@ -123,7 +123,7 @@ cc_library(
# rpc proto genrules.
################################################################################
-GEN_SERVICE = "$(location @com_google_protobuf//:protoc) --plugin=protoc-gen-nos-client-cpp=$(location @nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp)"
+GEN_SERVICE = "$(location @com_google_protobuf//:protoc) --plugin=protoc-gen-nos-client-cpp=$(location @nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp)"
PROTO_ROOT = "$$(dirname $$(dirname $$(dirname $(location nugget/protobuf/options.proto))))"
@@ -142,7 +142,7 @@ genrule(
"$(location nugget/app/avb/avb.proto)",
tools = [
"@com_google_protobuf//:protoc",
- "@nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp",
+ "@nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp",
],
)
@@ -161,7 +161,7 @@ genrule(
"$(location nugget/app/avb/avb.proto)",
tools = [
"@com_google_protobuf//:protoc",
- "@nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp",
+ "@nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp",
],
)
@@ -180,7 +180,7 @@ genrule(
"$(location nugget/app/weaver/weaver.proto)",
tools = [
"@com_google_protobuf//:protoc",
- "@nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp",
+ "@nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp",
],
)
@@ -199,7 +199,7 @@ genrule(
"$(location nugget/app/weaver/weaver.proto)",
tools = [
"@com_google_protobuf//:protoc",
- "@nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp",
+ "@nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp",
],
)
@@ -220,7 +220,7 @@ genrule(
"$(location nugget/app/keymaster/keymaster.proto)",
tools = [
"@com_google_protobuf//:protoc",
- "@nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp",
+ "@nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp",
],
)
@@ -241,7 +241,7 @@ genrule(
"$(location nugget/app/keymaster/keymaster.proto)",
tools = [
"@com_google_protobuf//:protoc",
- "@nugget_host_generic_libnos_generator//:protoc_gen_nos_client_cpp",
+ "@nugget_host_generic//libnos/generator:protoc_gen_nos_client_cpp",
],
)
@@ -249,11 +249,14 @@ genrule(
# proto libraries
################################################################################
+PROTO_SOURCE_ROOT = "/nugget/proto"
+
proto_library(
name = "google_protobuf_descriptor_proto",
srcs = [
"google/protobuf/descriptor.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
)
proto_library(
@@ -261,6 +264,7 @@ proto_library(
srcs = [
"nugget/app/avb/avb.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"nugget_protobuf_options_proto",
],
@@ -273,6 +277,7 @@ proto_library(
"nugget/app/keymaster/keymaster_defs.proto",
"nugget/app/keymaster/keymaster_types.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"nugget_protobuf_options_proto",
],
@@ -283,6 +288,7 @@ proto_library(
srcs = [
"nugget/app/protoapi/control.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"nugget_app_protoapi_header_proto",
],
@@ -293,6 +299,7 @@ proto_library(
srcs = [
"nugget/app/protoapi/diagnostics_api.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"nugget_app_protoapi_header_proto",
],
@@ -303,6 +310,7 @@ proto_library(
srcs = [
"nugget/app/protoapi/gchips_types.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
)
proto_library(
@@ -310,6 +318,7 @@ proto_library(
srcs = [
"nugget/app/protoapi/header.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
)
proto_library(
@@ -317,6 +326,7 @@ proto_library(
srcs = [
"nugget/app/protoapi/testing_api.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"nugget_app_protoapi_header_proto",
],
@@ -327,6 +337,7 @@ proto_library(
srcs = [
"nugget/app/weaver/weaver.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"nugget_protobuf_options_proto",
],
@@ -337,6 +348,7 @@ proto_library(
srcs = [
"nugget/protobuf/options.proto",
],
+ strip_import_prefix = PROTO_SOURCE_ROOT,
deps = [
"@com_google_protobuf//:descriptor_proto",
],
diff --git a/nugget/proto/WORKSPACE b/nugget/proto/WORKSPACE
deleted file mode 100644
index 8f4a329..0000000
--- a/nugget/proto/WORKSPACE
+++ /dev/null
@@ -1 +0,0 @@
-workspace(name = "nugget_host_generic_nugget_proto")
diff --git a/nugget/proto/nugget/app/keymaster/keymaster.proto b/nugget/proto/nugget/app/keymaster/keymaster.proto
index 5ed4df1..4787d1c 100644
--- a/nugget/proto/nugget/app/keymaster/keymaster.proto
+++ b/nugget/proto/nugget/app/keymaster/keymaster.proto
@@ -121,6 +121,11 @@ service Keymaster {
rpc DeviceLocked(DeviceLockedRequest) returns (DeviceLockedResponse);
rpc EarlyBootEnded(EarlyBootEndedRequest) returns (EarlyBootEndedResponse);
+ /*
+ * More vendor specific methods.
+ */
+ rpc ReadCertificate(ReadCertificateRequest) returns (ReadCertificateResponse);
+
// These are implemented with a enum, so new RPCs must be appended, and
// deprecated RPCs need placeholders.
}
@@ -477,3 +482,12 @@ message ProvisionCertificatesResponse {
ErrorCode error_code = 1;
CertificateStatus cert_status = 2;
}
+
+message ReadCertificateRequest {
+ AttestationSelector selector = 1;
+ Algorithm algorithm = 2;
+}
+message ReadCertificateResponse {
+ ErrorCode error_code = 1;
+ Certificate cert = 2;
+}