Use whitelabel_tag when generating signature_ids.

Each whitelabel design needs a unique signature_id, at least for mpkeys.
Include the whitelabel_tag in the signature_id, when set for a config.

BUG=b:161424242
TEST=./run_py_unittests.sh

Cq-Depend: chrome-internal:3168654
Change-Id: I399c6375228f755a3c1f2ffdf58b3fe661d3fb88
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/2301630
Tested-by: Sam McNally <sammc@chromium.org>
Reviewed-by: C Shapiro <shapiroc@chromium.org>
Commit-Queue: Sam McNally <sammc@chromium.org>
(cherry picked from commit 2fc807fd9a138b219586977dccaf90daa43cb394)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/2304109
Reviewed-by: Sam McNally <sammc@chromium.org>
diff --git a/payload_utils/cros_config_proto_converter.py b/payload_utils/cros_config_proto_converter.py
index 26f8873..99ba0da 100755
--- a/payload_utils/cros_config_proto_converter.py
+++ b/payload_utils/cros_config_proto_converter.py
@@ -272,11 +272,15 @@
 def _build_fw_signing(config):
   if config.sw_config.firmware and config.device_signer_config:
     hw_design = config.hw_design.name.lower()
+    brand_scan_config = config.brand_config.scan_config
+    if brand_scan_config and brand_scan_config.whitelabel_tag:
+      signature_id = '%s-%s' % (hw_design, brand_scan_config.whitelabel_tag)
+    else:
+      signature_id = hw_design
+
     return {
         'key-id': config.device_signer_config.key_id,
-        # TODO(shapiroc): Need to fix for whitelabel.
-        # Whitelabel will collide on unique signature-id values.
-        'signature-id': hw_design,
+        'signature-id': signature_id,
     }
   return {}
 
diff --git a/payload_utils/test_data/fake_project.json b/payload_utils/test_data/fake_project.json
index ced7d39..e2dd128 100644
--- a/payload_utils/test_data/fake_project.json
+++ b/payload_utils/test_data/fake_project.json
@@ -574,7 +574,7 @@
         },
         "firmware-signing": {
           "key-id": "KEYD",
-          "signature-id": "project-wl"
+          "signature-id": "project-wl-loema"
         },
         "identity": {
           "platform-name": "FAKE_PROGRAM",
@@ -665,7 +665,7 @@
         },
         "firmware-signing": {
           "key-id": "KEYE",
-          "signature-id": "project-wl"
+          "signature-id": "project-wl-loemb"
         },
         "identity": {
           "platform-name": "FAKE_PROGRAM",
@@ -756,7 +756,7 @@
         },
         "firmware-signing": {
           "key-id": "KEYF",
-          "signature-id": "project-wl"
+          "signature-id": "project-wl-loemc"
         },
         "identity": {
           "platform-name": "FAKE_PROGRAM",
diff --git a/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json b/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
index 8b5dcfd..3b454e3 100644
--- a/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
+++ b/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
@@ -744,7 +744,7 @@
         },
         "firmware-signing": {
           "key-id": "KEYD",
-          "signature-id": "project-wl"
+          "signature-id": "project-wl-loema"
         },
         "identity": {
           "platform-name": "FAKE_PROGRAM",
@@ -868,7 +868,7 @@
         },
         "firmware-signing": {
           "key-id": "KEYE",
-          "signature-id": "project-wl"
+          "signature-id": "project-wl-loemb"
         },
         "identity": {
           "platform-name": "FAKE_PROGRAM",
@@ -992,7 +992,7 @@
         },
         "firmware-signing": {
           "key-id": "KEYF",
-          "signature-id": "project-wl"
+          "signature-id": "project-wl-loemc"
         },
         "identity": {
           "platform-name": "FAKE_PROGRAM",