github.com/cloudwan/edgelq-sdk@v1.15.4/iam/proto/v1/attestation_domain.proto (about) 1 syntax = "proto3"; 2 3 package ntt.iam.v1; 4 5 import "edgelq-sdk/iam/proto/v1/common.proto"; 6 import "google/api/resource.proto"; 7 import "goten-sdk/types/meta.proto"; 8 9 option go_package = "github.com/cloudwan/edgelq-sdk/iam/resources/v1/attestation_domain;attestation_domain"; 10 option java_multiple_files = true; 11 option java_outer_classname = "AttestationDomainProto"; 12 option java_package = "com.ntt.iam.pb.v1"; 13 14 // AttestationDomain Resource 15 message AttestationDomain { 16 option (google.api.resource) = { 17 type : "iam.edgelq.com/AttestationDomain" 18 pattern : "projects/{project}/attestationDomains/{attestation_domain}" 19 }; 20 21 // Name of AttestationDomain 22 // When creating a new instance, this field is optional and if not provided, 23 // it will be generated automatically. Last ID segment must conform to the 24 // following regex: [a-z][a-z0-9\\-]{0,28}[a-z0-9] 25 string name = 2; 26 27 // Metadata is an object with information like create, update and delete time 28 // (for async deleted resources), has user labels/annotations, sharding 29 // information, multi-region syncing information and may have non-schema 30 // owners (useful for taking ownership of resources belonging to lower level 31 // services by higher ones). 32 goten.types.Meta metadata = 1; 33 34 // Display name 35 string display_name = 3; 36 37 // If false (default), attestation verifier SHALL check CA certificate chain 38 // up to the TPM chip manufacturers CA (defined in manufacturer_ca_issuers). 39 // This step is necessary to prove that the attestation request comes from a 40 // genuine TPM device, and not a TPM emulator. 41 // 42 // If true, attestation verifier SHALL skip EKcert verification - 43 // !!INSECURE!! Without this check, any keys may come from a simulated TPM 44 // on the device. An attacker may therefore forge any key they want. 45 // Therefore, this option should only be changed for development purposes. 46 bool insecure_skip_manufacturer_ekcert_verification = 4; 47 48 // Attestees wanting to attest under this attestation domain SHALL fulfill 49 // requirements of at least one of attestation policies defined in this list. 50 // Policies are checked in the order they appear on this list. 51 repeated Policy policies = 5; 52 53 // Attestation policy may require atestees pubkey to be present on 54 // enrollment_list. 55 repeated EnrolledKey enrollment_list = 6; 56 57 // Policy defines a singular attestation policy, that should match a 58 // homogenous class of device (i.e. hardware and firmware configuration) in 59 // the fleet. 60 message Policy { 61 // List of acceptable manufacturer's root CAs certs (in PEM format). 62 // 63 // To obtain such a cert, run something like: 64 // `tpm2_getekcertificate -o cert.bin` 65 // `openssl x509 -inform der -in cert.bin -noout -text` 66 // Then manually download certificate specified in Authority Information 67 // Access (AIA). Repeat the above `openssl` command on the newly 68 // downloadedfile (change the value of `-in` argument). Continue this until 69 // you reach a certificate which does not have AIA. It's the root 70 // certificate. Convert it to PEM like so: `openssl x509 -inform der -in 71 // root.crt -out root.pem` Still, we need to encode newlines: `awk 'NF 72 // {sub(/\r/, ""); printf "%s\\n",$0;}' root.pem` Then paste the output 73 // here. 74 // 75 // Note: multiple PEM certificates may be included here by simple means of 76 // concatenation. 77 string manufacturer_root_ca_certs_pem = 1; 78 79 // If true, the attestee's pubkey SHALL be present on this 80 // AttestationDomain's enrollment list, otherwise fail the attestation. 81 bool require_enrollment = 2; 82 83 // If true, the verifier SHALL parse, replay and verify TPM event log 84 // provided by the atestee, otherwise fail the attestation. 85 // Note that requiring verification of event does not provide additional 86 // security. See 87 // https://github.com/google/go-attestation/blob/master/docs/event-log-disclosure.md#event-type-and-verification-footguns 88 bool verify_event_log = 3; 89 90 // List of expected PCR values. 91 // All PCRs on this list SHALL match exactly the PCRs provided by the 92 // atestee, otherwise the attestation SHALL be failed. The verifier SHALL 93 // perform sanity checks: PCR index/digest pairs are unique and the size of 94 // the list is sane (TODO). 95 // They can be read from TPM by running something like `tpm2_pcrread`. 96 repeated PCR expected_pcrs = 4; 97 } 98 99 // EnrolledKey defines an enrolled key. 100 message EnrolledKey { 101 // PEM encoded EK pubkey. 102 // It can be read from TPM by running something like `tpm2_createek -G rsa 103 // -u ek.pub -c key.ctx -f pem`. 104 string pubkey_pem = 1; 105 106 // User's comments for this entry 107 string comment = 2; 108 } 109 }