diff options
author | Bill Richardson <wfrichar@google.com> | 2020-04-11 08:48:16 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-04-11 08:48:16 +0000 |
commit | 03df7eb9b4c25f033eacd5b6de6017a518081110 (patch) | |
tree | fe225505a18268b0b8d4b59b012099431c898d6b | |
parent | 513d591f084a6e5e0f83d6de5ca2281d6fa4e550 (diff) | |
parent | c7589ee2ec2c0ece715c2bfd38d555e012ee9dd8 (diff) | |
download | generic-03df7eb9b4c25f033eacd5b6de6017a518081110.tar.gz |
Merge remote-tracking branch 'goog/upstream-master' into wfrichar-MP-RVC-05 am: c7589ee2ec
Change-Id: Id397804a8f69490a10b1deb98e289324f141a838
-rw-r--r-- | .bazelrc | 2 | ||||
-rw-r--r-- | .gitignore (renamed from libnos_transport/.gitignore) | 0 | ||||
-rw-r--r-- | WORKSPACE | 9 | ||||
-rw-r--r-- | libnos/BUILD | 12 | ||||
-rw-r--r-- | libnos/WORKSPACE | 1 | ||||
-rw-r--r-- | libnos/generator/BUILD | 2 | ||||
-rw-r--r-- | libnos/generator/WORKSPACE | 1 | ||||
-rw-r--r-- | libnos_datagram/WORKSPACE | 1 | ||||
-rw-r--r-- | libnos_datagram/citadel.c | 48 | ||||
-rw-r--r-- | libnos_transport/BUILD | 21 | ||||
-rw-r--r-- | libnos_transport/WORKSPACE | 20 | ||||
-rw-r--r-- | nugget/include/app_nugget.h | 13 | ||||
-rw-r--r-- | nugget/include/application.h | 18 | ||||
-rw-r--r-- | nugget/proto/BUILD | 32 | ||||
-rw-r--r-- | nugget/proto/WORKSPACE | 1 | ||||
-rw-r--r-- | nugget/proto/nugget/app/keymaster/keymaster.proto | 14 |
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 @@ -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; +} |