Snap for 4551672 from cc7032d1e1dd2064b9c123ea3f3ff0c76d2323f9 to pi-release

Change-Id: I2133d2a0059f07d2eb6e667c114ce9867f577863
diff --git a/Android.bp b/Android.bp
index deb53ac..bfbcdf7 100644
--- a/Android.bp
+++ b/Android.bp
@@ -16,7 +16,7 @@
 
 cc_library_headers {
     name: "nos_headers",
-    defaults: ["nos_shared_cc_defaults"],
+    defaults: ["nos_cc_host_supported_defaults"],
     export_include_dirs: ["nugget/include"],
 }
 
@@ -42,7 +42,7 @@
     name: "nos_app_service_defaults",
     defaults: [
         "nos_app_defaults",
-        "nos_base_cc_defaults",
+        "nos_cc_defaults",
     ],
     shared_libs: ["libnosprotos"],
     export_shared_lib_headers: ["libnosprotos"],
diff --git a/citadel/updater/Android.bp b/citadel/updater/Android.bp
index 746d92f..8ea42a4 100644
--- a/citadel/updater/Android.bp
+++ b/citadel/updater/Android.bp
@@ -19,7 +19,7 @@
     srcs: [
         "updater.cpp"
     ],
-    defaults: ["nos_cc_defaults"],
+    defaults: ["nos_cc_hw_defaults"],
     cflags: [
         // for openssl/sha.h
         "-Wno-gnu-anonymous-struct",
diff --git a/citadel/updater/updater.cpp b/citadel/updater/updater.cpp
index c4a040c..75c4aaf 100644
--- a/citadel/updater/updater.cpp
+++ b/citadel/updater/updater.cpp
@@ -57,9 +57,6 @@
   int reboot;
   /* generic connection options */
   const char *device;
-#ifdef ANDROID
-  int citadeld;
-#endif
 } options;
 
 enum no_short_opts_for_these {
@@ -67,9 +64,6 @@
   OPT_RO,
   OPT_RW,
   OPT_REBOOT,
-#ifdef ANDROID
-  OPT_CITADELD
-#endif
 };
 
 const char *short_opts = ":hv";
@@ -80,9 +74,6 @@
   {"rw",          0, NULL, OPT_RW},
   {"reboot",      0, NULL, OPT_REBOOT},
   {"device",      1, NULL, OPT_DEVICE},
-#ifdef ANDROID
-  {"citadeld",    0, NULL, OPT_CITADELD},
-#endif
   {"help",        0, NULL, 'h'},
   {NULL, 0, NULL, 0},
 };
@@ -116,12 +107,6 @@
     "      --rw          Update RW firmware from the image file\n"
     "      --ro          Update RO firmware from the image file\n"
     "      --reboot      Tell Citadel to reboot\n"
-#ifdef ANDROID
-    "\n"
-    "Android options:\n"
-    "\n"
-    "      --citadeld    Communicate with Citadel via citadeld\n"
-#endif
     "\n",
     progname);
 }
@@ -332,14 +317,11 @@
 std::unique_ptr<NuggetClientInterface> select_client()
 {
 #ifdef ANDROID
-  if (options.citadeld) {
-    return std::unique_ptr<NuggetClientInterface>(
-        new CitadeldProxyClient());
-  }
-#endif
-  /* Default to a direct client */
+  return std::unique_ptr<NuggetClientInterface>(new CitadeldProxyClient());
+#else
   return std::unique_ptr<NuggetClientInterface>(
       new NuggetClient(options.device ? options.device : ""));
+#endif
 }
 
 int update_to_image(const std::vector<uint8_t> &image)
@@ -421,11 +403,6 @@
     case OPT_DEVICE:
       options.device = optarg;
       break;
-#ifdef ANDROID
-    case OPT_CITADELD:
-      options.citadeld = 1;
-      break;
-#endif
     case 'h':
       usage(this_prog);
       return 0;
diff --git a/libnos/Android.bp b/libnos/Android.bp
index f813847..49c5385 100644
--- a/libnos/Android.bp
+++ b/libnos/Android.bp
@@ -19,7 +19,7 @@
     srcs: [
         "debug.cpp",
     ],
-    defaults: ["nos_shared_cc_defaults"],
+    defaults: ["nos_cc_host_supported_defaults"],
     header_libs: ["nos_headers"],
     shared_libs: ["libnos_datagram"],
     export_include_dirs: ["include"],
diff --git a/libnos/NuggetClient.cpp b/libnos/NuggetClient.cpp
index ba3be0e..f775756 100644
--- a/libnos/NuggetClient.cpp
+++ b/libnos/NuggetClient.cpp
@@ -87,11 +87,11 @@
 }
 
 nos_device* NuggetClient::Device() {
-  return open_ ? nullptr : &device_;
+  return open_ ? &device_ : nullptr;
 }
 
 const nos_device* NuggetClient::Device() const {
-  return open_ ? nullptr : &device_;
+  return open_ ? &device_ : nullptr;
 }
 
 const std::string& NuggetClient::DeviceName() const {
diff --git a/libnos/generator/Android.bp b/libnos/generator/Android.bp
index 32839d9..4ff1606 100644
--- a/libnos/generator/Android.bp
+++ b/libnos/generator/Android.bp
@@ -19,7 +19,7 @@
     srcs: ["main.cpp"],
     defaults: [
         "nos_proto_defaults",
-        "nos_base_cc_defaults",
+        "nos_cc_defaults",
     ],
     static_libs: ["libnosprotos"],
     shared_libs: ["libprotoc"],
diff --git a/libnos/test/Android.bp b/libnos/test/Android.bp
index 2a3654a..0a06894 100644
--- a/libnos/test/Android.bp
+++ b/libnos/test/Android.bp
@@ -16,7 +16,7 @@
 
 cc_test_library {
     name: "libnos_mock",
-    defaults: ["nos_shared_cc_defaults"],
+    defaults: ["nos_cc_host_supported_defaults"],
     shared_libs: ["libnos"],
     export_include_dirs: ["include"],
     export_shared_lib_headers: ["libnos"],
diff --git a/libnos_datagram/Android.bp b/libnos_datagram/Android.bp
index 9f4a1c9..15d49d3 100644
--- a/libnos_datagram/Android.bp
+++ b/libnos_datagram/Android.bp
@@ -16,6 +16,6 @@
 
 cc_library {
     name: "libnos_datagram",
-    defaults: ["nos_shared_cc_defaults"],
+    defaults: ["nos_cc_host_supported_defaults"],
     export_include_dirs: ["include"],
 }
diff --git a/libnos_transport/Android.bp b/libnos_transport/Android.bp
index 7ddeed4..9e4703e 100644
--- a/libnos_transport/Android.bp
+++ b/libnos_transport/Android.bp
@@ -19,7 +19,7 @@
     srcs: [
         "transport.c",
     ],
-    defaults: ["nos_shared_cc_defaults"],
+    defaults: ["nos_cc_host_supported_defaults"],
     cflags: [
         "-Wno-zero-length-array",
     ],
diff --git a/nugget/proto/Android.bp b/nugget/proto/Android.bp
index 7cea715..4a785ba 100644
--- a/nugget/proto/Android.bp
+++ b/nugget/proto/Android.bp
@@ -42,7 +42,7 @@
     exclude_srcs: ["google/protobuf/descriptor.proto"], // Used for bazel build
     defaults: [
         "libnosprotos_defaults",
-        "nos_shared_cc_defaults",
+        "nos_cc_host_supported_defaults",
     ],
     proto: {
         type: "full",
diff --git a/nugget/proto/nugget/app/keymaster/keymaster_defs.proto b/nugget/proto/nugget/app/keymaster/keymaster_defs.proto
index 346920a..4a7c155 100644
--- a/nugget/proto/nugget/app/keymaster/keymaster_defs.proto
+++ b/nugget/proto/nugget/app/keymaster/keymaster_defs.proto
@@ -67,6 +67,7 @@
   USER_AUTH_TYPE = 0x101f8; // (TagType:ENUM | 504)
   AUTH_TIMEOUT = 0x301f9; // (TagType:UINT | 505)
   ALLOW_WHILE_ON_BODY = 0x701fa; // (TagType:BOOL | 506)
+  TRUSTED_USER_PRESENCE_REQUIRED = 0x701fb; // (TagType:BOOL | 507)
   /* RESERVED: ALL_APPLICATIONS = 0x70258; // (TagType:BOOL | 600) */
   APPLICATION_ID = 0x90259; // (TagType:BYTES | 601)
   /* RESERVED: EXPORTABLE = 0x7025a; // (TagType:BOOL | 602) */
@@ -236,7 +237,9 @@
   VERSION_MISMATCH = 66;
   ROLLBACK_RESISTANCE_UNAVAILABLE = 67;
   HARDWARE_TYPE_UNAVAILABLE = 68;
-  UNKNOWN_ERROR = 69;
+  PROOF_OF_PRESENCE_REQUIRED = 69;
+  CONCURRENT_PROOF_OF_PRESENCE_REQUESTED = 70;
+  UNKNOWN_ERROR = 71;
 };
 
 enum HardwareAuthenticatorType {
diff --git a/nugget/proto/nugget/app/keymaster/keymaster_types.proto b/nugget/proto/nugget/app/keymaster/keymaster_types.proto
index c0b8b81..8224e61 100644
--- a/nugget/proto/nugget/app/keymaster/keymaster_types.proto
+++ b/nugget/proto/nugget/app/keymaster/keymaster_types.proto
@@ -84,6 +84,5 @@
 }
 
 message SymmetricKey {
-  uint32 algorithm = 1;
-  bytes material = 2;
+  bytes material = 1;
 }