Subject: [bug#46139] [PATCH] gnu: Add tpm2-tss.

From: Nicolas Goaziou <[email-masked]>
Date: Wed, 27 Jan 2021 21:44:21 +0100

Hello,

guix-patches--- via <[email-masked]> writes:

> * gnu/packages/hardware.scm (tpm2-tss): New variable.

Thank you. Some comments follow.

> +    (inputs
> +     `(("pkg-config" ,pkg-config)
> +       ("openssl" ,openssl)
> +       ("json-c" ,json-c)
> +       ("curl" ,curl)))

pkg-config should be a native-input.

Don't you need libgcrypt as an input, too?

> +    (synopsis "OSS implementation of the TCG TPM2 Software Stack (TSS2)")

> +    (description "This package provides the Trusted Computing Group's (TCG)
> +TPM2 Software Stack (TSS).  This stack consists of the following layers from
> +top to bottom:
> +
> +@enumerate
> +@item Feature API (FAPI) as described in the TCG Feature API (FAPI)
> +Specification along with TCG TSS 2.0 JSON Data Types and Policy Language
> +Specification This API is designed to be very high-level API, intended to make
> +programming with the TPM as simple as possible. The API functions are exposed
> +through a single library: libtss2-fapi.
> +@item Enhanced System API (ESAPI) as described in the TCG TSS 2.0 Enhanced
> +System API (ESAPI) Specification This API is a 1-to-1 mapping of the TPM2
> +commands documented in Part 3 of the TPM2 specification. Additionally there
> +are asynchronous versions of each command. In addition to SAPI, the ESAPI
> +performs tracking of meta data for TPM object and automatic calculation of
> +session based authorization and encryption values. Both the synchronous and
> +asynchronous API are exposed through a single library: libtss2-esys. 
> +@item System API (SAPI) as described in the TCG TSS 2.0 System Level API
> +(SAPI) Specification This API is a 1-to-1 mapping of the TPM2 commands
> +documented in Part 3 of the TPM2 specification. Additionally there are
> +asynchronous versions of each command. These asynchronous variants may be
> +useful for integration into event-driven programming environments. Both the
> +synchronous and asynchronous API are exposed through a single library:
> +libtss2-sys.
> +@item Marshaling/Unmarshaling (MU) as described in the TCG TSS 2.0
> +Marshaling/Unmarshaling API Specification This API provides a set of
> +marshaling and unmarshaling functions for all data types define by the TPM
> +library specification. The Marshaling/Unmarshaling API is exposed through a
> +library called libtss2-mu.
> +@item TPM Command Transmission Interface (TCTI) as described in the TCG TSS
> +2.0 TPM Command Transmission Interface (TCTI) API Specification. This API
> +provides a standard interface to transmit / receive TPM command / response
> +buffers. It is expected that any number of libraries implementing the TCTI API
> +will be implemented as a way to abstract various platform specific IPC
> +mechanisms. Currently this repository provides several TCTI implementations:
> +libtss2-tcti-device, libtss2-tcti-tbs (for Windows), libtss2-tcti-swtpm and
> +libtss2-tcti-mssim. The former should be used for direct access to the TPM
> +through the Linux kernel driver. The latter implements the protocol exposed by
> +the Microsoft software TPM2 simulator.
> +@item The TCG TSS 2.0 Overview and Common Structures Specification forms the
> +basis for all implementations in this project. NOTE: We deviate from this
> +specification by increasing the value of TPM2_NUM_PCR_BANKS from 3 to 16 to
> +ensure compatibility with TPM2 implementations that have enabled a larger than
> +typical number of PCR banks. This larger value for TPM2_NUM_PCR_BANKS is
> +expected to be included in a future revision of the specification.
> +@end enumerate")

This description is waaaaay too long. Could you trim it down a bit?
IIRC, the manual suggests description of about 5 lines. Of course, this
is not a hard rule.

Also you need to add two spaces after sentences.

> +    (home-page "https://tpm2-software.github.io/")

Could you move it above synopsis?

Regards,
-- 
Nicolas Goaziou