]> git.proxmox.com Git - swtpm.git/commitdiff
swtpm_cert: make the TPM spec parameters mandatory for the EK cert
authorStefan Berger <stefanb@linux.vnet.ibm.com>
Sun, 22 Apr 2018 02:10:36 +0000 (22:10 -0400)
committerStefan Berger <stefanb@linux.vnet.ibm.com>
Mon, 23 Apr 2018 14:03:43 +0000 (10:03 -0400)
src/swtpm_cert/ek-cert.c

index 5c294e3c42369b34dd90a18287b6b9dea3a7c90e..67085c7fa3bc0b3ac386f98618ac24b5f5c0c551 100644 (file)
@@ -577,8 +577,8 @@ main(int argc, char *argv[])
     char *platf_model = NULL;
     bool add_header = false;
     char *spec_family = NULL;
-    long int spec_level = 0;
-    long int spec_revision = 0;
+    long int spec_level = ~0;
+    long int spec_revision = ~0;
 
     i = 1;
     while (i < argc) {
@@ -811,6 +811,14 @@ main(int argc, char *argv[])
         }
         break;
     case CERT_TYPE_EK:
+        if (spec_family == NULL ||
+            spec_level == ~0 ||
+            spec_revision == ~0) {
+            fprintf(stderr, "--tpm-spec-family and --tpm-spec-level and "
+                            "--tpm-spec-revision must all be provided\n");
+            goto cleanup;
+        }
+        break;
     case CERT_TYPE_AIK:
         break;
     }
@@ -1021,13 +1029,11 @@ if (_err != GNUTLS_E_SUCCESS) {             \
     /* 3.5.11 Subject Directory Attributes */
     switch (certtype) {
     case CERT_TYPE_EK:
-        if (spec_family) {
-            err = create_tpm_specification_info(spec_family, spec_level,
-                                                spec_revision, &datum);
-            if (err) {
-                fprintf(stderr, "Could not create TPMSpecification\n");
-                goto cleanup;
-            }
+        err = create_tpm_specification_info(spec_family, spec_level,
+                                            spec_revision, &datum);
+        if (err) {
+            fprintf(stderr, "Could not create TPMSpecification\n");
+            goto cleanup;
         }
         break;
     case CERT_TYPE_PLATFORM: