Directory Structure =================== tools/vtpm/tpm_emulator-0.2b.tar.gz -> TPM Emulator downloaded at build time that will be patched and used for our vtpms tools/vtpm/vtpm.patch -> patch applied to tpm_emulator to make vtpm tools/vtpm/vtpm/ -> (created on build) tpm_emulator moved to ring 3, listens on a pair of fifos for TPM commands, persistent state is sent via named fifo to vtpm manager, which encrypts it and protects it. tools/vtpm/tpm_emulator.patch -> To allow for debugging and testing on non-TPM platforms, this patches the emulator to allow it to be inserted into the dom0 kernel tools/vtpm/tpm_emulator-0.2 -> (created on build) directory containing patched emulator Compile Flags =================== VTPM_MULTI_VM -> Defined (not finished): VTPMs run in their own VMs Not Defined (default): VTPMs are processes Requirements ============ - xen-unstable - IBM frontend/backend vtpm driver patch - vtpm_managerd - GNU MP Big number library (GMP) vtpmd Flow (for vtpm_manager. vtpmd never run by default) ============================ - Launch the VTPM manager (vtpm_managerd) which which begins listening to the BE with one thread and listens to a named fifo that is shared by the vtpms to commuincate with the manager. - VTPM Manager listens to TPM BE. - When xend launches a tpm frontend equipped VM it contacts the manager over the vtpm backend. - When the manager receives the open message from the BE, it launches a vtpm - Xend allows the VM to continue booting. - When a TPM request is issued to the front end, the front end transmits the TPM request to the backend. - The manager receives the TPM requests and uses a named fifo to forward the request to the vtpm. - The fifo listener begins listening for the reply from vtpm for the request. - Vtpm processes request and replies to manager over shared named fifo. - If needed, the vtpm may send a request to the vtpm_manager at any time to save it's secrets to disk. - Manager receives response from vtpm and passes it back to backend for forwarding to guest. tpm_emulator flow ================== Read documentation in tpm_emulator-0.2 directory