FreeBSD Manual Pages
TPMLIB_GetInfo(3) TPMLIB_GetInfo(3) NAME TPMLIB_GetInfo - Get Information about the TPM implementation LIBRARY TPM library (libtpms, -ltpms) SYNOPSIS #include <libtpms/tpm_library.h> char *TPMLIB_GetInfo(TPMLIB_InfoFlags flags); DESCRIPTION The TPMLIB_GetInfo() function allows to query for TPM implementation specifics and get a JSON string in return. Which data is to be returned can be specified in the flags parameter that may be a logical 'or' concatena- tion of flags. If passed flags are not supported, nothing is returned . If a 0 is passed in, an empty JSON Object '{}' is returned. The following flags are defined and return JSON objects as shown: TPMLIB_INFO_TPMSPECIFICATION {"TPMSpecification":{"family":"1.2","level":2,"revision":116}} TPMLIB_INFO_TPMATTRIBUTES {"TPMAttributes":{"manufacturer":"id:00001014","ver- sion":"id:00740001","model":"swtpm"}} TPMLIB_INFO_TPMFEATURES (since v0.8.0) {"TPMFeatures":{"RSAKeySizes":[1024,2048,3072]}} This JSON object may be extended in the future. TPMLIB_INFO_RUNTIME_ALGORITHMS (since v0.10.0) { "RuntimeAlgorithms": { "Implemented": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,hmac," \ "aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,sha384," \ "sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,ecdh,ecdaa," \ "sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,kdf1-sp800-108," \ "ecc,ecc-min-size=192,ecc-nist,ecc-bn,ecc-nist-p192," \ "ecc-nist-p224,ecc-nist-p256,ecc-nist-p384," \ "ecc-nist-p521,"ecc-bn-p256,ecc-bn-p638,ecc-sm2-p256," \ "symcipher,camellia,camellia-min-size=128,cmac,ctr,ofb," \ "cbc,cfb,ecb", "CanBeDisabled": "tdes,sha1,sha512,rsassa,rsaes,rsapss,ecmqv,ecc-nist," \ "ecc-bn,ecc-nist-p192,ecc-nist-p224,ecc-nist-p521," \ "ecc-bn-p256,ecc-bn-p638,ecc-sm2-p256,camellia,cmac," \ "ctr,ofb,cbc,ecb", "Enabled": "rsa,rsa-min-size=1024,hmac,aes,aes-min-size=128,mgf1," \ "keyedhash,xor,sha256,sha384,null,oaep,ecdsa,ecdh,ecdaa," \ "sm2,ecschnorr,kdf1-sp800-56a,kdf2,kdf1-sp800-108,ecc," \ "ecc-min-size=192,ecc-bn,ecc-nist-p192,ecc-nist-p224," \ "ecc-nist-p256,ecc-nist-p384,ecc-nist-p521,ecc-bn-p256," \ "ecc-bn-p638,ecc-sm2-p256,symcipher,camellia," \ "camellia-min-size=128,cmac,ctr,ofb,cbc,cfb,ecb", "Disabled": "tdes,sha1,sha512,rsassa,rsaes,rsapss,ecmqv,ecc-nist" } } This JSON object enumerates all implemented algorithms as well as sup- ported elliptic curve cryptography (ECC) curves. Those verbs enumerated under CanBeDisabled represent algorithms and ECC curves that a user may omit from a profile, thus making them unavailable to applications. The verbs enumerated under Enabled and Disabled represent algorithms that are enabled and disabled in the currently active profile. The verbs ecc-nist and ecc-bn are shortcuts enabling all currently im- plemented ECC NIST curves (ecc-nist-p192, ecc-nist-p256, ...) and BN (Baretto-Naehrig) curves (ecc-bn-p256, ecc-bn-p638). If omitted then the individual curves can still be enumerated individually to enable them. Since ecc-nist-p256 and ecc-nist-p384 cannot be disabled, they must be enumerated if the ecc-nist shortcut is not used. Minimum key sizes for rsa, ecc, tdes, aes, and camellia are also de- scribed. When new algorithms and ECC curves are added to the TPM in the future, then this JSON object will return more algorithms. TPMLIB_INFO_RUNTIME_COMMANDS (since v0.10.0) { "RuntimeCommands": { "Implemented": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159," \ "0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178," \ "0x17a-0x193,0x197,0x199-0x19a", "CanBeDisabled": "0x11f,0x121-0x122,0x124-0x128,0x12a-0x12e,0x130," \ "0x132-0x13b,0x13d-0x140,0x142,0x146-0x147,0x149-0x14d," \ "0x14f-0x152,0x154-0x155,0x159,0x15b,0x15d-0x15e," \ "0x160-0x164,0x167-0x168,0x16a-0x172,0x174,0x177-0x178," \ "0x17b,0x17f-0x181,0x183-0x184,0x187-0x193,0x197," \ 0x199-0x19a", "Enabled": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,0x15b-0x15e," \ "0x160-0x165,0x167-0x174,0x176-0x178,0x17a-0x193,0x197," \ "0x199-0x19a", "Disabled": "" } } This JSON object enumerates all implemented commands by their hexadeci- mal numbers and shows which ones can be disabled, which ones are cur- rently enabled and which ones are disabled. TPMLIB_INFO_ACTIVE_PROFILE (since v0.10.0) This JSON object shows the currently active profile. { "ActiveProfile": { "Name": "null", "StateFormatLevel": 1, "Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159," \ "0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178," \ "0x17a-0x193,0x197", "Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,hmac," \ "aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,sha384," \ "sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,ecdh,ecdaa," \ "sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,kdf1-sp800-108," \ "ecc,ecc-min-size=192,ecc-nist,ecc-bn,symcipher,camellia," \ "camellia-min-size=128,cmac,ctr,ofb,cbc,cfb,ecb", "Description": "The profile enables the commands and algorithms that " \ "were enabled in libtpms v0.9. This profile is " \ "automatically used when the state does not have a " \ "profile, for example when it was created by " \ "libtpms v0.9 or before." } } The above profile is the 'null' profile. If the null profile is used then the state will again be readable by libtpms v0.9. TPMLIB_INFO_AVAILABLE_PROFILES (since v0.10.0) This JSON object enumerates available profiles. { "AvailableProfiles": [ { "Name": "default-v1", "StateFormatLevel": 4, "Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,...", "Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,...", "Description": "This profile enables all currently supported ...", }, { "Name": "null", "StateFormatLevel": 1, "Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,...", "Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,...", "Description": "The profile enables the commands and algorithms ...", }, .... ] } Future versions of libtpms may enumerate other profiles. RETURN VALUE This function returns a JSON string on success and a NULL pointer if a mem- ory allocation failure occurred. The caller must free() the returned string. SEE ALSO libtpms 2026-01-02 TPMLIB_GetInfo(3)
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=TPMLIB_GetInfo&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
