|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | option optimize_for = LITE_RUNTIME; | 
|  |  | 
|  | package attestation; | 
|  |  | 
|  | // Describes key type. | 
|  | enum KeyType { | 
|  | KEY_TYPE_RSA = 1; | 
|  | KEY_TYPE_ECC = 2; | 
|  | } | 
|  |  | 
|  | // Describes allowed key usage. | 
|  | enum KeyUsage { | 
|  | KEY_USAGE_SIGN = 1; | 
|  | KEY_USAGE_DECRYPT = 2; | 
|  | } | 
|  |  | 
|  | // Enumerates various certificate profiles supported by the Attestation CA. | 
|  | enum CertificateProfile { | 
|  | // A certificate intended for enterprise-owned devices.  It has the following | 
|  | // subjectName fields: | 
|  | //   CN=<stable device identifier> | 
|  | //   OU=state:[verified|developer] | 
|  | //   O=Chrome Device Enterprise | 
|  | ENTERPRISE_MACHINE_CERTIFICATE = 0; | 
|  |  | 
|  | // A certificate intended for enterprise-owned user accounts.  It has the | 
|  | // following subjectName fields: | 
|  | //   OU=state:[verified|developer] | 
|  | //   O=Chrome Device Enterprise | 
|  | ENTERPRISE_USER_CERTIFICATE = 1; | 
|  |  | 
|  | // A certificate intended for platform verification by providers of protected | 
|  | // content.  It has the following subjectName fields: | 
|  | //   O=Chrome Device Content Protection | 
|  | CONTENT_PROTECTION_CERTIFICATE = 2; | 
|  |  | 
|  | // Like above, but it also includes a stable ID and origin. | 
|  | //   CN=<origin-specific device identifier> | 
|  | //   OU=<origin> | 
|  | //   O=Chrome Device Content Protection | 
|  | CONTENT_PROTECTION_CERTIFICATE_WITH_STABLE_ID = 3; | 
|  |  | 
|  | // A certificate intended for cast devices. | 
|  | CAST_CERTIFICATE = 4; | 
|  |  | 
|  | GFSC_CERTIFICATE = 5; | 
|  | } | 
|  |  | 
|  | // Holds information about a quote generated by the TPM. | 
|  | message Quote { | 
|  | // The quote; a signature generated with the AIK. | 
|  | optional bytes quote = 1; | 
|  | // The serialized data that was quoted; this assists in verifying the quote. | 
|  | optional bytes quoted_data = 2; | 
|  | // The value of the PCR(s) at the time the quote was generated. | 
|  | optional bytes quoted_pcr_value = 3; | 
|  | // Source data which was originally used to extend the PCR. If this field | 
|  | // exists it can be expected that SHA1(pcr_source_hint) was extended into the | 
|  | // PCR. | 
|  | optional bytes pcr_source_hint = 4; | 
|  | } | 
|  |  | 
|  | // Holds encrypted data and information required to decrypt it. | 
|  | message EncryptedData { | 
|  | // A key that has been sealed to the TPM or wrapped by another key. | 
|  | optional bytes wrapped_key = 2; | 
|  | // The initialization vector used during encryption. | 
|  | optional bytes iv = 3; | 
|  | // MAC of (iv || encrypted_data). | 
|  | optional bytes mac = 4; | 
|  | optional bytes encrypted_data = 5; | 
|  | // An identifier for the wrapping key to assist in decryption. | 
|  | optional bytes wrapping_key_id = 6; | 
|  | } | 
|  |  | 
|  | // The wrapper message of any data and its signature. | 
|  | message SignedData { | 
|  | // The data to be signed. | 
|  | optional bytes data = 1; | 
|  | // The signature of the data field. | 
|  | optional bytes signature = 2; | 
|  | } | 
|  |  | 
|  | // These two fields are suitable for passing to Tspi_TPM_ActivateIdentity() | 
|  | // directly. | 
|  | message EncryptedIdentityCredential { | 
|  | // TPM_ASYM_CA_CONTENTS, encrypted with EK public key. | 
|  | optional bytes asym_ca_contents = 1; | 
|  | // TPM_SYM_CA_ATTESTATION, encrypted with the key in aysm_ca_contents. | 
|  | optional bytes sym_ca_attestation = 2; | 
|  | } | 
|  |  |