BTW-- have you seen the IBM Attestation Client/Sever project for TPM 2.0:

One potentially helpful doc show a provisioning flow:


On 8/3/18 6:02 AM, Peter Magnusson wrote:

Does it seem like a correct understanding of that the proof of
possession process is something like follows;

1. Client -> CA.identityRequestGetChallenge( AIK, EKCert )

2. Client receives challenge [RSA encrypted AES key, AES encrypted data]

3. Client uses endorsement key and tool/command
tpm2_activatecredential to decrypt RSA blob (the AES key)

4. Client decrypt the AES block using the AES key, yielding the proper
response (proof of possession)

5. Client -> CA.identityRequestSubmitResponse ( response )

6. Client receive the AIKCert

(Based my understanding on and
various threads about tpm2_activetecredential being involved in how to
proving ownership.)

Presumably the AES operations in Open Attestation are very
implementation specific and could be replaced with more modern modes
of operations.

On Wed, Aug 1, 2018 at 6:38 PM Agerstam, Mats G
<> wrote:
I think Open CIT (Cloud Integrity Technology) supersedes OpenAttestation. More details on that can be found here:

-----Original Message-----
From: tpm2 [] On Behalf Of Roberts, William C
Sent: Wednesday, August 1, 2018 9:29 AM
To: Peter Magnusson <>;
Subject: Re: [tpm2] AIK Enrollment Process implementations using tpm2-tools or similar

I dug around and someone pointed me to this:

Unfortunately, I know nothing beyond that (typical problem for me).

-----Original Message-----
From: tpm2 [] On Behalf Of Peter Magnusson
Sent: Wednesday, August 1, 2018 3:55 AM
Subject: [tpm2] AIK Enrollment Process implementations using tpm2-tools or


Is there any AIK Enrollment / POP examples available using tpm2-tools (or other
open source tools, code bases)?

Long version:

I had some success with tpm2-tools based attestation, e.g. generating AIK,
extracting EKpub and EKCert from TPM, performing the tpm2 quotation, etc.

However, my understanding of the relevant spec's is that for TPM2 User Devices
(and many other devices), the EK is limited to performing the Enrolment
Processes (Proof of Possession). So to complete a meaningful Remote
Attestation flow, there is a need to get AIKCert externally using AIK Enrollment
Process[1] against an Attestation CA (formerly known as Privacy CA).

I fail to find public examples (tools, example code, etc) of the enrolment step.
Most of what I find when googling, for example strongswan's TPM pages,
appears to skip the AIK Enrollment Process / POP and just issue the the certificate
without any proof of possession.

Any links or insights would be appreciated =)

[1]. Section 2.3.
tpm2 mailing list
tpm2 mailing list
tpm2 mailing list