Merge "KM: Increase max_count of params in KeyParameters to 25" into main
diff --git a/OWNERS b/OWNERS
index 3505355..2110bb5 100644
--- a/OWNERS
+++ b/OWNERS
@@ -2,6 +2,6 @@
 # or people with more than 10 commits last year.
 # Please update this list if you find better owner candidates.
 wfrichar@google.com
+tommychiu@google.com
+zhakevin@google.com
 kroot@google.com
-dybertwang@google.com
-byi@google.com
diff --git a/libnos/generator/test/Android.bp b/libnos/generator/test/Android.bp
index 30287aa..e0c4d32 100644
--- a/libnos/generator/test/Android.bp
+++ b/libnos/generator/test/Android.bp
@@ -26,7 +26,11 @@
 genrule {
     name: "nos_generator_test_service_genc++",
     out: ["Hello.client.cpp"],
-    srcs: ["nos/generator/test/test.proto"],
+    srcs: [
+        "nos/generator/test/test.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_SOURCE + "-Iexternal/nos/host/generic/libnos/generator/test",
 }
@@ -34,7 +38,11 @@
 genrule {
     name: "nos_generator_test_service_genc++_headers",
     out: ["Hello.client.h"],
-    srcs: ["nos/generator/test/test.proto"],
+    srcs: [
+        "nos/generator/test/test.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_HEADER + "-Iexternal/nos/host/generic/libnos/generator/test",
 }
@@ -42,7 +50,11 @@
 genrule {
     name: "nos_generator_test_service_genc++_mock",
     out: ["MockHello.client.h"],
-    srcs: ["nos/generator/test/test.proto"],
+    srcs: [
+        "nos/generator/test/test.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_MOCK + "-Iexternal/nos/host/generic/libnos/generator/test",
 }
diff --git a/nugget/include/app_nugget.h b/nugget/include/app_nugget.h
index 8852b18..49ca2de 100644
--- a/nugget/include/app_nugget.h
+++ b/nugget/include/app_nugget.h
@@ -462,10 +462,27 @@
 /*
  * GSA key provision command
  *
- * @param args         gsa unique public key
+ * We use the same command id to support multiple GSA-GSC PSK
+ * provision handshaking. List possible args and reply usage by
+ * each case.
+ *
+ * Non-secure PSK provision case:
+ * @param args         GSA-GSC PSK (plaintext)
  * @param arg_len      32
- * @param reply        gsc public key + sha256(pre-shared key)
- * @param reply_len    64 + 32
+ * @param reply        GSA-GSC PSK (plaintext)
+ * @param reply_len    32
+ *
+ * Ephemeral ec key handshaking case:
+ * @param args         GSA public key
+ * @param arg_len      64
+ * @param reply        GSC public key + signature
+ * @param reply_len    64 + 64
+ *
+ * Secure PSK provision case:
+ * @param args         encrypted GSA-GSC PSK (nonce + PSK + tag)
+ * @param arg_len      12 + 32 + 16
+ * @param reply        <none>
+ * @param reply_len    0
  */
 
 /**
diff --git a/nugget/include/feature_map.h b/nugget/include/feature_map.h
index 141b52d..7ff697b 100644
--- a/nugget/include/feature_map.h
+++ b/nugget/include/feature_map.h
@@ -50,6 +50,14 @@
   km_feature_max = FEATURE_MASK,  // 24-bit FEATURE_FIELD
 };
 
+enum nugget_feature_list {
+  nugget_feature_test_image = 0,
+
+  /* Please do not change numbers after they've been released */
+
+  nugget_feature_max = FEATURE_MASK,  // 24-bit FEATURE_FIELD
+};
+
 enum weaver_feature_list {
   weaver_feature_api_no_proto = 0,
 
diff --git a/nugget/proto/Android.bp b/nugget/proto/Android.bp
index b9f1220..b4ee2a0 100644
--- a/nugget/proto/Android.bp
+++ b/nugget/proto/Android.bp
@@ -43,3 +43,8 @@
     },
 
 }
+
+filegroup {
+    name: "nugget_options_proto",
+    srcs:  ["nugget/protobuf/options.proto"],
+}
\ No newline at end of file
diff --git a/nugget/proto/nugget/app/avb/Android.bp b/nugget/proto/nugget/app/avb/Android.bp
index 136b9d5..53b284a 100644
--- a/nugget/proto/nugget/app/avb/Android.bp
+++ b/nugget/proto/nugget/app/avb/Android.bp
@@ -26,7 +26,11 @@
 genrule {
     name: "nos_app_avb_service_genc++",
     out: ["Avb.client.cpp"],
-    srcs: ["avb.proto"],
+    srcs: [
+        "avb.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_SOURCE,
 }
@@ -34,7 +38,11 @@
 genrule {
     name: "nos_app_avb_service_genc++_headers",
     out: ["Avb.client.h"],
-    srcs: ["avb.proto"],
+    srcs: [
+        "avb.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_HEADER,
 }
@@ -42,7 +50,11 @@
 genrule {
     name: "nos_app_avb_service_genc++_mock",
     out: ["MockAvb.client.h"],
-    srcs: ["avb.proto"],
+    srcs: [
+        "avb.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_MOCK,
 }
diff --git a/nugget/proto/nugget/app/identity/Android.bp b/nugget/proto/nugget/app/identity/Android.bp
index b65297a..c557182 100644
--- a/nugget/proto/nugget/app/identity/Android.bp
+++ b/nugget/proto/nugget/app/identity/Android.bp
@@ -26,7 +26,13 @@
 genrule {
     name: "nos_app_identity_service_genc++",
     out: ["Identity.client.cpp"],
-    srcs: ["identity.proto"],
+    srcs: [
+        "identity.proto",
+        "identity_defs.proto",
+        "identity_types.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_SOURCE,
 }
@@ -34,7 +40,13 @@
 genrule {
     name: "nos_app_identity_service_genc++_headers",
     out: ["Identity.client.h"],
-    srcs: ["identity.proto"],
+    srcs: [
+        "identity.proto",
+        "identity_defs.proto",
+        "identity_types.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_HEADER,
 }
@@ -42,7 +54,13 @@
 genrule {
     name: "nos_app_identity_service_genc++_mock",
     out: ["MockIdentity.client.h"],
-    srcs: ["identity.proto"],
+    srcs: [
+        "identity.proto",
+        "identity_defs.proto",
+        "identity_types.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_MOCK,
 }
diff --git a/nugget/proto/nugget/app/identity/identity.proto b/nugget/proto/nugget/app/identity/identity.proto
index 41af08e..58e656e 100644
--- a/nugget/proto/nugget/app/identity/identity.proto
+++ b/nugget/proto/nugget/app/identity/identity.proto
@@ -18,7 +18,6 @@
 
 package nugget.app.identity;
 
-import "nugget/app/identity/identity_defs.proto";
 import "nugget/app/identity/identity_types.proto";
 import "nugget/protobuf/options.proto";
 
diff --git a/nugget/proto/nugget/app/identity/identity_types.proto b/nugget/proto/nugget/app/identity/identity_types.proto
index 4c50f2c..66420a1 100644
--- a/nugget/proto/nugget/app/identity/identity_types.proto
+++ b/nugget/proto/nugget/app/identity/identity_types.proto
@@ -18,7 +18,6 @@
 
 package nugget.app.identity;
 
-import "nugget/protobuf/options.proto";
 import "nugget/app/identity/identity_defs.proto";
 
 message Result {
diff --git a/nugget/proto/nugget/app/keymaster/Android.bp b/nugget/proto/nugget/app/keymaster/Android.bp
index 32e3479..8afadc9 100644
--- a/nugget/proto/nugget/app/keymaster/Android.bp
+++ b/nugget/proto/nugget/app/keymaster/Android.bp
@@ -26,7 +26,13 @@
 genrule {
     name: "nos_app_keymaster_service_genc++",
     out: ["Keymaster.client.cpp"],
-    srcs: ["keymaster.proto"],
+    srcs: [
+        "keymaster.proto",
+        "keymaster_defs.proto",
+        "keymaster_types.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_SOURCE,
 }
@@ -34,7 +40,13 @@
 genrule {
     name: "nos_app_keymaster_service_genc++_headers",
     out: ["Keymaster.client.h"],
-    srcs: ["keymaster.proto"],
+    srcs: [
+        "keymaster.proto",
+        "keymaster_defs.proto",
+        "keymaster_types.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_HEADER,
 }
@@ -42,7 +54,13 @@
 genrule {
     name: "nos_app_keymaster_service_genc++_mock",
     out: ["MockKeymaster.client.h"],
-    srcs: ["keymaster.proto"],
+    srcs: [
+        "keymaster.proto",
+        "keymaster_defs.proto",
+        "keymaster_types.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_MOCK,
 }
diff --git a/nugget/proto/nugget/app/weaver/Android.bp b/nugget/proto/nugget/app/weaver/Android.bp
index 6a1dbde..1c4535a 100644
--- a/nugget/proto/nugget/app/weaver/Android.bp
+++ b/nugget/proto/nugget/app/weaver/Android.bp
@@ -26,7 +26,11 @@
 genrule {
     name: "nos_app_weaver_service_genc++",
     out: ["Weaver.client.cpp"],
-    srcs: ["weaver.proto"],
+    srcs: [
+        "weaver.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_SOURCE,
 }
@@ -34,7 +38,11 @@
 genrule {
     name: "nos_app_weaver_service_genc++_headers",
     out: ["Weaver.client.h"],
-    srcs: ["weaver.proto"],
+    srcs: [
+        "weaver.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_HEADER,
 }
@@ -42,7 +50,11 @@
 genrule {
     name: "nos_app_weaver_service_genc++_mock",
     out: ["MockWeaver.client.h"],
-    srcs: ["weaver.proto"],
+    srcs: [
+        "weaver.proto",
+        ":nugget_options_proto",
+        ":libprotobuf-internal-protos",
+    ],
     tools: ["aprotoc", "protoc-gen-nos-client-cpp"],
     cmd: GEN_SERVICE_MOCK,
 }