
# 证明文档
证明文档用于证明QingTian Enclave实例的可信度量结果。证明文档由QingTianHypervisor生成，文档内容包括PCR列表、QingTianPKI证书链、密码算法声明以及Enclave应用自定义数据。证明文档由华为云QingTian Attestation PKI （Public Key Infrastructure）签署。
QingTianHypervisor生成的证明文档以简明二进制对象表示（CBOR）进行编码，并用CBOR Object Signing and Encryption （COSE）进行签名。关于CBOR，详情可见 [RFC 8949: Concise Binary Object Representation （CBOR）](https://www.rfc-editor.org/rfc/rfc8949.html)。
关于QingTian Enclave证明文档结构，我们遵循CDDL规范（RFC 8610）描述如下：
```
AttestationDocument = {
    module_id: text,                ; 安全模块编号
    timestamp: uint .size 8,        ; 时间戳
    digest: digest,                 ; 摘要算法
    pcrs: { + index => pcr },       ; PCR列表
    certificate: cert,              ; Enclave证明文档的签名证书
    cabundle: [* cert],             ; QingTianPKI证书链
    ? user_data: user_data,         ; 可选，应用相关的数据
    ? nonce: user_data,             ; 可选，不重复使用的数值
    ? pubkey: user_data,        ; 可选，应用程序相关的公钥
}
 
cert = bytes .size (1..4096)         ; DER编码证书
user_data = bytes .size (0..4096)
pcr = bytes .size (48)       ; PCR内容
index = 0..31
digest = "SHA384"
```
证明文档中的可选参数（pubkey，user_data和nonce）可以支持QingTian Enclave与外部实体之间运行自定义（或自协商）的应用级安全协议。比如，QingTian Enclave应用可以创建一个非对称密钥对（PriKey, PubKey），并通过QingTian Enclave证明文档来提供对PubKey的可信证明，那么外部实体就可以基于该PubKey证明来运行一些自定义的可信密钥分发、可信密钥协商等应用级安全协议。
