# SPDX-License-Identifier: BSD-2
""" This module contains all the constant values from the following TCG specifications:
- https://trustedcomputinggroup.org/resource/tpm-library-specification/. See Part 2 "Structures".
- https://trustedcomputinggroup.org/resource/tss-overview-common-structures-specification
Along with helpers to go from string values to constants and constant values to string values.
"""
from ._libtpm2_pytss import lib, ffi
from tpm2_pytss.internal.utils import _CLASS_INT_ATTRS_from_string, _lib_version_atleast
[docs]class TPM_FRIENDLY_INT(int):
_FIXUP_MAP = {}
[docs] @classmethod
def parse(cls, value: str) -> int:
# If it's a string initializer value, see if it matches anything in the list
if isinstance(value, str):
try:
x = _CLASS_INT_ATTRS_from_string(cls, value, cls._FIXUP_MAP)
if not isinstance(x, int):
raise KeyError(f'Expected int got: "{type(x)}"')
return x
except KeyError:
raise ValueError(
f'Could not convert friendly name to value, got: "{value}"'
)
else:
raise TypeError(f'Expected value to be a str object, got: "{type(value)}"')
[docs] @classmethod
def iterator(cls) -> filter:
""" Returns the constants in the class.
Returns:
(int): The int values of the constants in the class.
Example:
list(ESYS_TR.iterator()) -> [4095, 255, 0, 1, 2, 3, ... ]
"""
return filter(lambda x: isinstance(x, int), vars(cls).values())
[docs] @classmethod
def contains(cls, value: int) -> bool:
""" Indicates if a class contains a numeric constant.
Args:
value (int): The raw numerical number to test for.
Returns:
(bool): True if the class contains the constant, False otherwise.
Example:
ESYS_TR.contains(7) -> True
"""
return value in cls.iterator()
[docs] @classmethod
def to_string(cls, value: int) -> str:
""" Converts an integer value into it's friendly string name for that class.
Args:
value (int): The raw numerical number to try and convert to a name.
Returns:
(str): The string of the constant defining the raw numeric.
Raises:
ValueError: If the numeric does not match a constant.
Example:
ESYS_TR.to_string(5) -> 'ESYS_TR.PCR5'
"""
# Take the shortest match, ie OWNER over RH_OWNER.
m = None
items = vars(cls).items()
for k, v in items:
if v == value and (m is None or len(k) < len(m)):
m = k
if m is None:
raise ValueError(f"Could not match {value} to class {cls.__name__}")
return f"{cls.__name__}.{m}"
[docs] def __str__(self) -> str:
"""Returns a string value of the constant normalized to lowercase.
Returns:
(str): a string value of the constant normalized to lowercase.
Example:
str(ESYS_TR.PCR2) -> 'pcr2'
"""
for k, v in vars(self.__class__).items():
if int(self) == v:
return k.lower()
return str(int(self))
def __abs__(self):
return self.__class__(int(self).__abs__())
def __add__(self, value):
return self.__class__(int(self).__add__(value))
def __and__(self, value):
return self.__class__(int(self).__and__(value))
def __ceil__(self):
return self.__class__(int(self).__ceil__())
def __divmod__(self, value):
a, b = int(self).__divmod__(value)
return self.__class__(a), self.__class__(b)
def __floor__(self):
return self.__class__(int(self).__floor__())
def __floordiv__(self, value):
return self.__class__(int(self).__floordiv__(value))
def __invert__(self):
return self.__class__(int(self).__invert__())
def __lshift__(self, value):
return self.__class__(int(self).__lshift__(value))
def __mod__(self, value):
return self.__class__(int(self).__mod__(value))
def __mul__(self, value):
return self.__class__(int(self).__mul__(value))
def __neg__(self):
return self.__class__(int(self).__neg__())
def __or__(self, value):
return self.__class__(int(self).__or__(value))
def __pos__(self):
return self.__class__(int(self).__pos__())
def __pow__(self, value, mod=None):
return self.__class__(int(self).__pow__(value, mod))
def __radd__(self, value):
return self.__class__(int(self).__radd__(value))
def __rand__(self, value):
return self.__class__(int(self).__rand__(value))
def __rdivmod__(self, value):
a, b = int(self).__rdivmod__(value)
return self.__class__(a), self.__class__(b)
def __rfloordiv__(self, value):
return self.__class__(int(self).__rfloordiv__(value))
def __rlshift__(self, value):
return self.__class__(int(self).__rlshift__(value))
def __rmod__(self, value):
return self.__class__(int(self).__rmod__(value))
def __rmul__(self, value):
return self.__class__(int(self).__rmul__(value))
def __ror__(self, value):
return self.__class__(int(self).__ror__(value))
def __round__(self):
return self.__class__(int(self).__round__())
def __rpow__(self, value, mod=None):
return self.__class__(int(self).__rpow__(value, mod))
def __rrshift__(self, value):
return self.__class__(int(self).__rrshift__(value))
def __rshift__(self, value):
return self.__class__(int(self).__rshift__(value))
def __rsub__(self, value):
return self.__class__(int(self).__rsub__(value))
def __rtruediv__(self, value):
return self.__class__(int(self).__rtruediv__(value))
def __rxor__(self, value):
return self.__class__(int(self).__rxor__(value))
def __sub__(self, value):
return self.__class__(int(self).__sub__(value))
def __truediv__(self, value):
return self.__class__(int(self).__truediv__(value))
def __xor__(self, value):
return self.__class__(int(self).__xor__(value))
@staticmethod
def _copy_and_set(dstcls, srccls):
"""Copy class variables from srccls to dstcls
srccls must be a subclass on TPM_FRIENDLY_INT.
Sets the the variable type to dstcls when copying.
dstcls and srccls can be the same.
Skip setting destination if the dstcls variable already have the correct type.
"""
if not issubclass(srccls, TPM_FRIENDLY_INT):
return
for k, v in vars(srccls).items():
dv = getattr(dstcls, k, None)
if not isinstance(v, int) or k.startswith("_") or type(dv) == type(dstcls):
continue
fv = dstcls(v)
setattr(dstcls, k, fv)
@staticmethod
def _fix_const_type(cls):
"""Ensure constants in a TPM2 constant class have the correct type
We also copy constants from a superclass in case it's of the correct type.
"""
for sc in cls.__mro__:
if sc in (TPM_FRIENDLY_INT, TPMA_FRIENDLY_INTLIST):
break
TPM_FRIENDLY_INT._copy_and_set(cls, sc)
return cls
[docs]class TPMA_FRIENDLY_INTLIST(TPM_FRIENDLY_INT):
_MASKS = tuple()
[docs] @classmethod
def parse(cls, value: str) -> int:
""" Converts a string of | separated constant values into it's integer value.
Given a pipe "|" separated list of string constant values that represent the
bitwise values returns the value itself. The value "" (empty string) returns
a 0.
Args:
value (str): The string "bitwise" expression of the object or the empty string.
Returns:
The integer result.
Raises:
TypeError: If the value is not a str.
ValueError: If a field portion of the str does not match a constant.
Examples:
TPMA_NV.parse("ppwrite|orderly|NO_DA") -> 0x6000001
TPMA_NV.parse("NO_DA") -> 0x2000000
"""
intvalue = 0
if not isinstance(value, str):
raise TypeError(f'Expected value to be a str, got: "{type(value)}"')
hunks = value.split("|") if "|" in value else [value]
for k in list(hunks):
if "=" not in k:
continue
hname, hval = k.split("=", 1)
v = int(hval, base=0)
hunks.remove(k)
found = False
for mask, shift, name in cls._MASKS:
if hname != name:
continue
mv = mask >> shift
if v > mv:
raise ValueError(
f"value for {name} is to large, got 0x{v:x}, max is 0x{mv:x}"
)
intvalue = intvalue | (v << shift)
found = True
break
if not found:
raise ValueError(f"unknown mask type {hname}")
for k in hunks:
try:
intvalue |= _CLASS_INT_ATTRS_from_string(cls, k, cls._FIXUP_MAP)
except KeyError:
raise ValueError(
f'Could not convert friendly name to value, got: "{k}"'
)
return intvalue
[docs] def __str__(self):
"""Given a constant, return the string bitwise representation.
Each constant is seperated by the "|" (pipe) character.
Returns:
(str): a bitwise string value of the fields for the constant normalized to lowercase.
Raises:
ValueError: If their are unmatched bits in the constant value.
Example:
str(TPMA_NV(TPMA_NV.PPWRITE|TPMA_NV.ORDERLY|TPMA_NV.NO_DA)) -> 'ppwrite|noda|orderly'
"""
cv = int(self)
ints = list()
for k, v in vars(self.__class__).items():
if cv == 0:
break
if (
not isinstance(v, int)
or k.startswith(("_", "_DEFAULT"))
or k.endswith(("_MASK", "_SHIFT"))
):
continue
for fk, fv in self._FIXUP_MAP.items():
if k == fv:
k = fk
break
if v == 0 or v & cv != v:
continue
ints.append(k.lower())
cv = cv ^ v
for mask, shift, name in self._MASKS:
if not cv & mask:
continue
v = (cv & mask) >> shift
s = f"{name}=0x{v:x}"
cv = cv ^ (cv & mask)
ints.append(s)
if cv:
raise ValueError(f"unnmatched values left: 0x{cv:x}")
return "|".join(ints)
[docs]@TPM_FRIENDLY_INT._fix_const_type
class ESYS_TR(TPM_FRIENDLY_INT):
"""ESYS_TR is an ESAPI identifier representing a TPM resource
To get the ESYS_TR identifier for a persistent handle, such as a NV area
or a persistent key use :func:`tpm2_pytss.ESAPI.tr_from_tpmpublic`
"""
NONE = lib.ESYS_TR_NONE
PASSWORD = lib.ESYS_TR_PASSWORD
PCR0 = lib.ESYS_TR_PCR0
PCR1 = lib.ESYS_TR_PCR1
PCR2 = lib.ESYS_TR_PCR2
PCR3 = lib.ESYS_TR_PCR3
PCR4 = lib.ESYS_TR_PCR4
PCR5 = lib.ESYS_TR_PCR5
PCR6 = lib.ESYS_TR_PCR6
PCR7 = lib.ESYS_TR_PCR7
PCR8 = lib.ESYS_TR_PCR8
PCR9 = lib.ESYS_TR_PCR9
PCR10 = lib.ESYS_TR_PCR10
PCR11 = lib.ESYS_TR_PCR11
PCR12 = lib.ESYS_TR_PCR12
PCR13 = lib.ESYS_TR_PCR13
PCR14 = lib.ESYS_TR_PCR14
PCR15 = lib.ESYS_TR_PCR15
PCR16 = lib.ESYS_TR_PCR16
PCR17 = lib.ESYS_TR_PCR17
PCR18 = lib.ESYS_TR_PCR18
PCR19 = lib.ESYS_TR_PCR19
PCR20 = lib.ESYS_TR_PCR20
PCR21 = lib.ESYS_TR_PCR21
PCR22 = lib.ESYS_TR_PCR22
PCR23 = lib.ESYS_TR_PCR23
PCR24 = lib.ESYS_TR_PCR24
PCR25 = lib.ESYS_TR_PCR25
PCR26 = lib.ESYS_TR_PCR26
PCR27 = lib.ESYS_TR_PCR27
PCR28 = lib.ESYS_TR_PCR28
PCR29 = lib.ESYS_TR_PCR29
PCR30 = lib.ESYS_TR_PCR30
PCR31 = lib.ESYS_TR_PCR31
OWNER = lib.ESYS_TR_RH_OWNER
NULL = lib.ESYS_TR_RH_NULL
LOCKOUT = lib.ESYS_TR_RH_LOCKOUT
ENDORSEMENT = lib.ESYS_TR_RH_ENDORSEMENT
PLATFORM = lib.ESYS_TR_RH_PLATFORM
PLATFORM_NV = lib.ESYS_TR_RH_PLATFORM_NV
RH_OWNER = lib.ESYS_TR_RH_OWNER
RH_NULL = lib.ESYS_TR_RH_NULL
RH_LOCKOUT = lib.ESYS_TR_RH_LOCKOUT
RH_ENDORSEMENT = lib.ESYS_TR_RH_ENDORSEMENT
RH_PLATFORM = lib.ESYS_TR_RH_PLATFORM
RH_PLATFORM_NV = lib.ESYS_TR_RH_PLATFORM_NV
[docs] def serialize(self, ectx: "ESAPI") -> bytes:
"""Same as see tpm2_pytss.ESAPI.tr_serialize
Args:
ectx(ESAPI): The esapi context the ESYS_TR was created
from.
Returns:
A byte array of the serialized ESYS_TR.
"""
return ectx.tr_serialize(self)
[docs] @staticmethod
def deserialize(ectx: "ESAPI", buffer: bytes) -> "ESYS_TR":
"""Same as see tpm2_pytss.ESAPI.tr_derialize
Args:
ectx(ESAPI): The esapi context to load the ESYS_TR on.
Returns:
An ESYS_TR representing the TPM object.
"""
return ectx.tr_deserialize(buffer)
[docs] def get_name(self, ectx: "ESAPI") -> "TPM2B_NAME":
"""Same as see tpm2_pytss.ESAPI.tr_get_name
Args:
ectx(ESAPI): The esapi context to retrieve the object name from.
Returns:
A TPM2B_NAME object.
"""
return ectx.tr_get_name(self)
[docs] def close(self, ectx: "ESAPI"):
"""Same as see tpm2_pytss.ESAPI.tr_close
Args:
ectx(ESAPI): The esapi context to close the ESYS_TR on.
"""
return ectx.tr_close(self)
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_RH(TPM_FRIENDLY_INT):
SRK = lib.TPM2_RH_SRK
OWNER = lib.TPM2_RH_OWNER
REVOKE = lib.TPM2_RH_REVOKE
TRANSPORT = lib.TPM2_RH_TRANSPORT
OPERATOR = lib.TPM2_RH_OPERATOR
ADMIN = lib.TPM2_RH_ADMIN
EK = lib.TPM2_RH_EK
NULL = lib.TPM2_RH_NULL
UNASSIGNED = lib.TPM2_RH_UNASSIGNED
try:
PW = lib.TPM2_RS_PW
except AttributeError:
PW = lib.TPM2_RH_PW
LOCKOUT = lib.TPM2_RH_LOCKOUT
ENDORSEMENT = lib.TPM2_RH_ENDORSEMENT
PLATFORM = lib.TPM2_RH_PLATFORM
PLATFORM_NV = lib.TPM2_RH_PLATFORM_NV
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_ALG(TPM_FRIENDLY_INT):
ERROR = lib.TPM2_ALG_ERROR
RSA = lib.TPM2_ALG_RSA
TDES = lib.TPM2_ALG_TDES
SHA = lib.TPM2_ALG_SHA
SHA1 = lib.TPM2_ALG_SHA1
HMAC = lib.TPM2_ALG_HMAC
AES = lib.TPM2_ALG_AES
MGF1 = lib.TPM2_ALG_MGF1
KEYEDHASH = lib.TPM2_ALG_KEYEDHASH
XOR = lib.TPM2_ALG_XOR
SHA256 = lib.TPM2_ALG_SHA256
SHA384 = lib.TPM2_ALG_SHA384
SHA512 = lib.TPM2_ALG_SHA512
NULL = lib.TPM2_ALG_NULL
SM3_256 = lib.TPM2_ALG_SM3_256
SM4 = lib.TPM2_ALG_SM4
RSASSA = lib.TPM2_ALG_RSASSA
RSAES = lib.TPM2_ALG_RSAES
RSAPSS = lib.TPM2_ALG_RSAPSS
OAEP = lib.TPM2_ALG_OAEP
ECDSA = lib.TPM2_ALG_ECDSA
ECDH = lib.TPM2_ALG_ECDH
ECDAA = lib.TPM2_ALG_ECDAA
SM2 = lib.TPM2_ALG_SM2
ECSCHNORR = lib.TPM2_ALG_ECSCHNORR
ECMQV = lib.TPM2_ALG_ECMQV
KDF1_SP800_56A = lib.TPM2_ALG_KDF1_SP800_56A
KDF2 = lib.TPM2_ALG_KDF2
KDF1_SP800_108 = lib.TPM2_ALG_KDF1_SP800_108
ECC = lib.TPM2_ALG_ECC
SYMCIPHER = lib.TPM2_ALG_SYMCIPHER
CAMELLIA = lib.TPM2_ALG_CAMELLIA
CTR = lib.TPM2_ALG_CTR
SHA3_256 = lib.TPM2_ALG_SHA3_256
SHA3_384 = lib.TPM2_ALG_SHA3_384
SHA3_512 = lib.TPM2_ALG_SHA3_512
OFB = lib.TPM2_ALG_OFB
CBC = lib.TPM2_ALG_CBC
CFB = lib.TPM2_ALG_CFB
ECB = lib.TPM2_ALG_ECB
FIRST = lib.TPM2_ALG_FIRST
LAST = lib.TPM2_ALG_LAST
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_ALG_ID(TPM2_ALG):
pass
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_ECC(TPM_FRIENDLY_INT):
NONE = lib.TPM2_ECC_NONE
NIST_P192 = lib.TPM2_ECC_NIST_P192
NIST_P224 = lib.TPM2_ECC_NIST_P224
NIST_P256 = lib.TPM2_ECC_NIST_P256
NIST_P384 = lib.TPM2_ECC_NIST_P384
NIST_P521 = lib.TPM2_ECC_NIST_P521
BN_P256 = lib.TPM2_ECC_BN_P256
BN_P638 = lib.TPM2_ECC_BN_P638
SM2_P256 = lib.TPM2_ECC_SM2_P256
_FIXUP_MAP = {
"192": "NIST_P192",
"224": "NIST_P224",
"256": "NIST_P256",
"384": "NIST_P384",
"521": "NIST_P521",
"SM2": "SM2_P256",
}
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_ECC_CURVE(TPM2_ECC):
pass
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_CC(TPM_FRIENDLY_INT):
NV_UndefineSpaceSpecial = lib.TPM2_CC_NV_UndefineSpaceSpecial
FIRST = lib.TPM2_CC_FIRST
EvictControl = lib.TPM2_CC_EvictControl
HierarchyControl = lib.TPM2_CC_HierarchyControl
NV_UndefineSpace = lib.TPM2_CC_NV_UndefineSpace
ChangeEPS = lib.TPM2_CC_ChangeEPS
ChangePPS = lib.TPM2_CC_ChangePPS
Clear = lib.TPM2_CC_Clear
ClearControl = lib.TPM2_CC_ClearControl
ClockSet = lib.TPM2_CC_ClockSet
HierarchyChangeAuth = lib.TPM2_CC_HierarchyChangeAuth
NV_DefineSpace = lib.TPM2_CC_NV_DefineSpace
PCR_Allocate = lib.TPM2_CC_PCR_Allocate
PCR_SetAuthPolicy = lib.TPM2_CC_PCR_SetAuthPolicy
PP_Commands = lib.TPM2_CC_PP_Commands
SetPrimaryPolicy = lib.TPM2_CC_SetPrimaryPolicy
FieldUpgradeStart = lib.TPM2_CC_FieldUpgradeStart
ClockRateAdjust = lib.TPM2_CC_ClockRateAdjust
CreatePrimary = lib.TPM2_CC_CreatePrimary
NV_GlobalWriteLock = lib.TPM2_CC_NV_GlobalWriteLock
GetCommandAuditDigest = lib.TPM2_CC_GetCommandAuditDigest
NV_Increment = lib.TPM2_CC_NV_Increment
NV_SetBits = lib.TPM2_CC_NV_SetBits
NV_Extend = lib.TPM2_CC_NV_Extend
NV_Write = lib.TPM2_CC_NV_Write
NV_WriteLock = lib.TPM2_CC_NV_WriteLock
DictionaryAttackLockReset = lib.TPM2_CC_DictionaryAttackLockReset
DictionaryAttackParameters = lib.TPM2_CC_DictionaryAttackParameters
NV_ChangeAuth = lib.TPM2_CC_NV_ChangeAuth
PCR_Event = lib.TPM2_CC_PCR_Event
PCR_Reset = lib.TPM2_CC_PCR_Reset
SequenceComplete = lib.TPM2_CC_SequenceComplete
SetAlgorithmSet = lib.TPM2_CC_SetAlgorithmSet
SetCommandCodeAuditStatus = lib.TPM2_CC_SetCommandCodeAuditStatus
FieldUpgradeData = lib.TPM2_CC_FieldUpgradeData
IncrementalSelfTest = lib.TPM2_CC_IncrementalSelfTest
SelfTest = lib.TPM2_CC_SelfTest
Startup = lib.TPM2_CC_Startup
Shutdown = lib.TPM2_CC_Shutdown
StirRandom = lib.TPM2_CC_StirRandom
ActivateCredential = lib.TPM2_CC_ActivateCredential
Certify = lib.TPM2_CC_Certify
PolicyNV = lib.TPM2_CC_PolicyNV
CertifyCreation = lib.TPM2_CC_CertifyCreation
Duplicate = lib.TPM2_CC_Duplicate
GetTime = lib.TPM2_CC_GetTime
GetSessionAuditDigest = lib.TPM2_CC_GetSessionAuditDigest
NV_Read = lib.TPM2_CC_NV_Read
NV_ReadLock = lib.TPM2_CC_NV_ReadLock
ObjectChangeAuth = lib.TPM2_CC_ObjectChangeAuth
PolicySecret = lib.TPM2_CC_PolicySecret
Rewrap = lib.TPM2_CC_Rewrap
Create = lib.TPM2_CC_Create
ECDH_ZGen = lib.TPM2_CC_ECDH_ZGen
HMAC = lib.TPM2_CC_HMAC
Import = lib.TPM2_CC_Import
Load = lib.TPM2_CC_Load
Quote = lib.TPM2_CC_Quote
RSA_Decrypt = lib.TPM2_CC_RSA_Decrypt
HMAC_Start = lib.TPM2_CC_HMAC_Start
SequenceUpdate = lib.TPM2_CC_SequenceUpdate
Sign = lib.TPM2_CC_Sign
Unseal = lib.TPM2_CC_Unseal
PolicySigned = lib.TPM2_CC_PolicySigned
ContextLoad = lib.TPM2_CC_ContextLoad
ContextSave = lib.TPM2_CC_ContextSave
ECDH_KeyGen = lib.TPM2_CC_ECDH_KeyGen
EncryptDecrypt = lib.TPM2_CC_EncryptDecrypt
FlushContext = lib.TPM2_CC_FlushContext
LoadExternal = lib.TPM2_CC_LoadExternal
MakeCredential = lib.TPM2_CC_MakeCredential
NV_ReadPublic = lib.TPM2_CC_NV_ReadPublic
PolicyAuthorize = lib.TPM2_CC_PolicyAuthorize
PolicyAuthValue = lib.TPM2_CC_PolicyAuthValue
PolicyCommandCode = lib.TPM2_CC_PolicyCommandCode
PolicyCounterTimer = lib.TPM2_CC_PolicyCounterTimer
PolicyCpHash = lib.TPM2_CC_PolicyCpHash
PolicyLocality = lib.TPM2_CC_PolicyLocality
PolicyNameHash = lib.TPM2_CC_PolicyNameHash
PolicyOR = lib.TPM2_CC_PolicyOR
PolicyTicket = lib.TPM2_CC_PolicyTicket
ReadPublic = lib.TPM2_CC_ReadPublic
RSA_Encrypt = lib.TPM2_CC_RSA_Encrypt
StartAuthSession = lib.TPM2_CC_StartAuthSession
VerifySignature = lib.TPM2_CC_VerifySignature
ECC_Parameters = lib.TPM2_CC_ECC_Parameters
FirmwareRead = lib.TPM2_CC_FirmwareRead
GetCapability = lib.TPM2_CC_GetCapability
GetRandom = lib.TPM2_CC_GetRandom
GetTestResult = lib.TPM2_CC_GetTestResult
Hash = lib.TPM2_CC_Hash
PCR_Read = lib.TPM2_CC_PCR_Read
PolicyPCR = lib.TPM2_CC_PolicyPCR
PolicyRestart = lib.TPM2_CC_PolicyRestart
ReadClock = lib.TPM2_CC_ReadClock
PCR_Extend = lib.TPM2_CC_PCR_Extend
PCR_SetAuthValue = lib.TPM2_CC_PCR_SetAuthValue
NV_Certify = lib.TPM2_CC_NV_Certify
EventSequenceComplete = lib.TPM2_CC_EventSequenceComplete
HashSequenceStart = lib.TPM2_CC_HashSequenceStart
PolicyPhysicalPresence = lib.TPM2_CC_PolicyPhysicalPresence
PolicyDuplicationSelect = lib.TPM2_CC_PolicyDuplicationSelect
PolicyGetDigest = lib.TPM2_CC_PolicyGetDigest
TestParms = lib.TPM2_CC_TestParms
Commit = lib.TPM2_CC_Commit
PolicyPassword = lib.TPM2_CC_PolicyPassword
ZGen_2Phase = lib.TPM2_CC_ZGen_2Phase
EC_Ephemeral = lib.TPM2_CC_EC_Ephemeral
PolicyNvWritten = lib.TPM2_CC_PolicyNvWritten
PolicyTemplate = lib.TPM2_CC_PolicyTemplate
CreateLoaded = lib.TPM2_CC_CreateLoaded
PolicyAuthorizeNV = lib.TPM2_CC_PolicyAuthorizeNV
EncryptDecrypt2 = lib.TPM2_CC_EncryptDecrypt2
AC_GetCapability = lib.TPM2_CC_AC_GetCapability
AC_Send = lib.TPM2_CC_AC_Send
Policy_AC_SendSelect = lib.TPM2_CC_Policy_AC_SendSelect
LAST = lib.TPM2_CC_LAST
Vendor_TCG_Test = lib.TPM2_CC_Vendor_TCG_Test
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_SPEC(TPM_FRIENDLY_INT):
FAMILY = lib.TPM2_SPEC_FAMILY
LEVEL = lib.TPM2_SPEC_LEVEL
VERSION = lib.TPM2_SPEC_VERSION
YEAR = lib.TPM2_SPEC_YEAR
DAY_OF_YEAR = lib.TPM2_SPEC_DAY_OF_YEAR
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_GENERATED(TPM_FRIENDLY_INT):
VALUE = lib.TPM2_GENERATED_VALUE
[docs]class TPM_BASE_RC(TPM_FRIENDLY_INT):
[docs] def decode(self):
return ffi.string(lib.Tss2_RC_Decode(self)).decode()
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_RC(TPM_BASE_RC):
SUCCESS = lib.TPM2_RC_SUCCESS
BAD_TAG = lib.TPM2_RC_BAD_TAG
VER1 = lib.TPM2_RC_VER1
INITIALIZE = lib.TPM2_RC_INITIALIZE
FAILURE = lib.TPM2_RC_FAILURE
SEQUENCE = lib.TPM2_RC_SEQUENCE
PRIVATE = lib.TPM2_RC_PRIVATE
HMAC = lib.TPM2_RC_HMAC
DISABLED = lib.TPM2_RC_DISABLED
EXCLUSIVE = lib.TPM2_RC_EXCLUSIVE
AUTH_TYPE = lib.TPM2_RC_AUTH_TYPE
AUTH_MISSING = lib.TPM2_RC_AUTH_MISSING
POLICY = lib.TPM2_RC_POLICY
PCR = lib.TPM2_RC_PCR
PCR_CHANGED = lib.TPM2_RC_PCR_CHANGED
UPGRADE = lib.TPM2_RC_UPGRADE
TOO_MANY_CONTEXTS = lib.TPM2_RC_TOO_MANY_CONTEXTS
AUTH_UNAVAILABLE = lib.TPM2_RC_AUTH_UNAVAILABLE
REBOOT = lib.TPM2_RC_REBOOT
UNBALANCED = lib.TPM2_RC_UNBALANCED
COMMAND_SIZE = lib.TPM2_RC_COMMAND_SIZE
COMMAND_CODE = lib.TPM2_RC_COMMAND_CODE
AUTHSIZE = lib.TPM2_RC_AUTHSIZE
AUTH_CONTEXT = lib.TPM2_RC_AUTH_CONTEXT
NV_RANGE = lib.TPM2_RC_NV_RANGE
NV_SIZE = lib.TPM2_RC_NV_SIZE
NV_LOCKED = lib.TPM2_RC_NV_LOCKED
NV_AUTHORIZATION = lib.TPM2_RC_NV_AUTHORIZATION
NV_UNINITIALIZED = lib.TPM2_RC_NV_UNINITIALIZED
NV_SPACE = lib.TPM2_RC_NV_SPACE
NV_DEFINED = lib.TPM2_RC_NV_DEFINED
BAD_CONTEXT = lib.TPM2_RC_BAD_CONTEXT
CPHASH = lib.TPM2_RC_CPHASH
PARENT = lib.TPM2_RC_PARENT
NEEDS_TEST = lib.TPM2_RC_NEEDS_TEST
NO_RESULT = lib.TPM2_RC_NO_RESULT
SENSITIVE = lib.TPM2_RC_SENSITIVE
MAX_FM0 = lib.TPM2_RC_MAX_FM0
FMT1 = lib.TPM2_RC_FMT1
ASYMMETRIC = lib.TPM2_RC_ASYMMETRIC
ATTRIBUTES = lib.TPM2_RC_ATTRIBUTES
HASH = lib.TPM2_RC_HASH
VALUE = lib.TPM2_RC_VALUE
HIERARCHY = lib.TPM2_RC_HIERARCHY
KEY_SIZE = lib.TPM2_RC_KEY_SIZE
MGF = lib.TPM2_RC_MGF
MODE = lib.TPM2_RC_MODE
TYPE = lib.TPM2_RC_TYPE
HANDLE = lib.TPM2_RC_HANDLE
KDF = lib.TPM2_RC_KDF
RANGE = lib.TPM2_RC_RANGE
AUTH_FAIL = lib.TPM2_RC_AUTH_FAIL
NONCE = lib.TPM2_RC_NONCE
PP = lib.TPM2_RC_PP
SCHEME = lib.TPM2_RC_SCHEME
SIZE = lib.TPM2_RC_SIZE
SYMMETRIC = lib.TPM2_RC_SYMMETRIC
TAG = lib.TPM2_RC_TAG
SELECTOR = lib.TPM2_RC_SELECTOR
INSUFFICIENT = lib.TPM2_RC_INSUFFICIENT
SIGNATURE = lib.TPM2_RC_SIGNATURE
KEY = lib.TPM2_RC_KEY
POLICY_FAIL = lib.TPM2_RC_POLICY_FAIL
INTEGRITY = lib.TPM2_RC_INTEGRITY
TICKET = lib.TPM2_RC_TICKET
BAD_AUTH = lib.TPM2_RC_BAD_AUTH
EXPIRED = lib.TPM2_RC_EXPIRED
POLICY_CC = lib.TPM2_RC_POLICY_CC
BINDING = lib.TPM2_RC_BINDING
CURVE = lib.TPM2_RC_CURVE
ECC_POINT = lib.TPM2_RC_ECC_POINT
WARN = lib.TPM2_RC_WARN
CONTEXT_GAP = lib.TPM2_RC_CONTEXT_GAP
OBJECT_MEMORY = lib.TPM2_RC_OBJECT_MEMORY
SESSION_MEMORY = lib.TPM2_RC_SESSION_MEMORY
MEMORY = lib.TPM2_RC_MEMORY
SESSION_HANDLES = lib.TPM2_RC_SESSION_HANDLES
OBJECT_HANDLES = lib.TPM2_RC_OBJECT_HANDLES
LOCALITY = lib.TPM2_RC_LOCALITY
YIELDED = lib.TPM2_RC_YIELDED
CANCELED = lib.TPM2_RC_CANCELED
TESTING = lib.TPM2_RC_TESTING
REFERENCE_H0 = lib.TPM2_RC_REFERENCE_H0
REFERENCE_H1 = lib.TPM2_RC_REFERENCE_H1
REFERENCE_H2 = lib.TPM2_RC_REFERENCE_H2
REFERENCE_H3 = lib.TPM2_RC_REFERENCE_H3
REFERENCE_H4 = lib.TPM2_RC_REFERENCE_H4
REFERENCE_H5 = lib.TPM2_RC_REFERENCE_H5
REFERENCE_H6 = lib.TPM2_RC_REFERENCE_H6
REFERENCE_S0 = lib.TPM2_RC_REFERENCE_S0
REFERENCE_S1 = lib.TPM2_RC_REFERENCE_S1
REFERENCE_S2 = lib.TPM2_RC_REFERENCE_S2
REFERENCE_S3 = lib.TPM2_RC_REFERENCE_S3
REFERENCE_S4 = lib.TPM2_RC_REFERENCE_S4
REFERENCE_S5 = lib.TPM2_RC_REFERENCE_S5
REFERENCE_S6 = lib.TPM2_RC_REFERENCE_S6
NV_RATE = lib.TPM2_RC_NV_RATE
LOCKOUT = lib.TPM2_RC_LOCKOUT
RETRY = lib.TPM2_RC_RETRY
NV_UNAVAILABLE = lib.TPM2_RC_NV_UNAVAILABLE
NOT_USED = lib.TPM2_RC_NOT_USED
H = lib.TPM2_RC_H
P = lib.TPM2_RC_P
S = lib.TPM2_RC_S
RC1 = lib.TPM2_RC_1
RC2 = lib.TPM2_RC_2
RC3 = lib.TPM2_RC_3
RC4 = lib.TPM2_RC_4
RC5 = lib.TPM2_RC_5
RC6 = lib.TPM2_RC_6
RC7 = lib.TPM2_RC_7
RC8 = lib.TPM2_RC_8
RC9 = lib.TPM2_RC_9
A = lib.TPM2_RC_A
B = lib.TPM2_RC_B
C = lib.TPM2_RC_C
D = lib.TPM2_RC_D
E = lib.TPM2_RC_E
F = lib.TPM2_RC_F
N_MASK = lib.TPM2_RC_N_MASK
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TSS2_RC(TPM_BASE_RC):
RC_LAYER_SHIFT = lib.TSS2_RC_LAYER_SHIFT
RC_LAYER_MASK = lib.TSS2_RC_LAYER_MASK
TPM_RC_LAYER = lib.TSS2_TPM_RC_LAYER
FEATURE_RC_LAYER = lib.TSS2_FEATURE_RC_LAYER
ESAPI_RC_LAYER = lib.TSS2_ESAPI_RC_LAYER
SYS_RC_LAYER = lib.TSS2_SYS_RC_LAYER
MU_RC_LAYER = lib.TSS2_MU_RC_LAYER
TCTI_RC_LAYER = lib.TSS2_TCTI_RC_LAYER
RESMGR_RC_LAYER = lib.TSS2_RESMGR_RC_LAYER
RESMGR_TPM_RC_LAYER = lib.TSS2_RESMGR_TPM_RC_LAYER
BASE_RC_GENERAL_FAILURE = lib.TSS2_BASE_RC_GENERAL_FAILURE
BASE_RC_NOT_IMPLEMENTED = lib.TSS2_BASE_RC_NOT_IMPLEMENTED
BASE_RC_BAD_CONTEXT = lib.TSS2_BASE_RC_BAD_CONTEXT
BASE_RC_ABI_MISMATCH = lib.TSS2_BASE_RC_ABI_MISMATCH
BASE_RC_BAD_REFERENCE = lib.TSS2_BASE_RC_BAD_REFERENCE
BASE_RC_INSUFFICIENT_BUFFER = lib.TSS2_BASE_RC_INSUFFICIENT_BUFFER
BASE_RC_BAD_SEQUENCE = lib.TSS2_BASE_RC_BAD_SEQUENCE
BASE_RC_NO_CONNECTION = lib.TSS2_BASE_RC_NO_CONNECTION
BASE_RC_TRY_AGAIN = lib.TSS2_BASE_RC_TRY_AGAIN
BASE_RC_IO_ERROR = lib.TSS2_BASE_RC_IO_ERROR
BASE_RC_BAD_VALUE = lib.TSS2_BASE_RC_BAD_VALUE
BASE_RC_NOT_PERMITTED = lib.TSS2_BASE_RC_NOT_PERMITTED
BASE_RC_INVALID_SESSIONS = lib.TSS2_BASE_RC_INVALID_SESSIONS
BASE_RC_NO_DECRYPT_PARAM = lib.TSS2_BASE_RC_NO_DECRYPT_PARAM
BASE_RC_NO_ENCRYPT_PARAM = lib.TSS2_BASE_RC_NO_ENCRYPT_PARAM
BASE_RC_BAD_SIZE = lib.TSS2_BASE_RC_BAD_SIZE
BASE_RC_MALFORMED_RESPONSE = lib.TSS2_BASE_RC_MALFORMED_RESPONSE
BASE_RC_INSUFFICIENT_CONTEXT = lib.TSS2_BASE_RC_INSUFFICIENT_CONTEXT
BASE_RC_INSUFFICIENT_RESPONSE = lib.TSS2_BASE_RC_INSUFFICIENT_RESPONSE
BASE_RC_INCOMPATIBLE_TCTI = lib.TSS2_BASE_RC_INCOMPATIBLE_TCTI
BASE_RC_NOT_SUPPORTED = lib.TSS2_BASE_RC_NOT_SUPPORTED
BASE_RC_BAD_TCTI_STRUCTURE = lib.TSS2_BASE_RC_BAD_TCTI_STRUCTURE
BASE_RC_MEMORY = lib.TSS2_BASE_RC_MEMORY
BASE_RC_BAD_TR = lib.TSS2_BASE_RC_BAD_TR
BASE_RC_MULTIPLE_DECRYPT_SESSIONS = lib.TSS2_BASE_RC_MULTIPLE_DECRYPT_SESSIONS
BASE_RC_MULTIPLE_ENCRYPT_SESSIONS = lib.TSS2_BASE_RC_MULTIPLE_ENCRYPT_SESSIONS
BASE_RC_RSP_AUTH_FAILED = lib.TSS2_BASE_RC_RSP_AUTH_FAILED
BASE_RC_NO_CONFIG = lib.TSS2_BASE_RC_NO_CONFIG
BASE_RC_BAD_PATH = lib.TSS2_BASE_RC_BAD_PATH
BASE_RC_NOT_DELETABLE = lib.TSS2_BASE_RC_NOT_DELETABLE
BASE_RC_PATH_ALREADY_EXISTS = lib.TSS2_BASE_RC_PATH_ALREADY_EXISTS
BASE_RC_KEY_NOT_FOUND = lib.TSS2_BASE_RC_KEY_NOT_FOUND
BASE_RC_SIGNATURE_VERIFICATION_FAILED = (
lib.TSS2_BASE_RC_SIGNATURE_VERIFICATION_FAILED
)
BASE_RC_HASH_MISMATCH = lib.TSS2_BASE_RC_HASH_MISMATCH
BASE_RC_KEY_NOT_DUPLICABLE = lib.TSS2_BASE_RC_KEY_NOT_DUPLICABLE
BASE_RC_PATH_NOT_FOUND = lib.TSS2_BASE_RC_PATH_NOT_FOUND
BASE_RC_NO_CERT = lib.TSS2_BASE_RC_NO_CERT
BASE_RC_NO_PCR = lib.TSS2_BASE_RC_NO_PCR
BASE_RC_PCR_NOT_RESETTABLE = lib.TSS2_BASE_RC_PCR_NOT_RESETTABLE
BASE_RC_BAD_TEMPLATE = lib.TSS2_BASE_RC_BAD_TEMPLATE
BASE_RC_AUTHORIZATION_FAILED = lib.TSS2_BASE_RC_AUTHORIZATION_FAILED
BASE_RC_AUTHORIZATION_UNKNOWN = lib.TSS2_BASE_RC_AUTHORIZATION_UNKNOWN
BASE_RC_NV_NOT_READABLE = lib.TSS2_BASE_RC_NV_NOT_READABLE
BASE_RC_NV_TOO_SMALL = lib.TSS2_BASE_RC_NV_TOO_SMALL
BASE_RC_NV_NOT_WRITEABLE = lib.TSS2_BASE_RC_NV_NOT_WRITEABLE
BASE_RC_POLICY_UNKNOWN = lib.TSS2_BASE_RC_POLICY_UNKNOWN
BASE_RC_NV_WRONG_TYPE = lib.TSS2_BASE_RC_NV_WRONG_TYPE
BASE_RC_NAME_ALREADY_EXISTS = lib.TSS2_BASE_RC_NAME_ALREADY_EXISTS
BASE_RC_NO_TPM = lib.TSS2_BASE_RC_NO_TPM
BASE_RC_BAD_KEY = lib.TSS2_BASE_RC_BAD_KEY
BASE_RC_NO_HANDLE = lib.TSS2_BASE_RC_NO_HANDLE
if _lib_version_atleast("tss2-esapi", "3.0.0"):
BASE_RC_NOT_PROVISIONED = lib.TSS2_BASE_RC_NOT_PROVISIONED
BASE_RC_ALREADY_PROVISIONED = lib.TSS2_BASE_RC_ALREADY_PROVISIONED
LAYER_IMPLEMENTATION_SPECIFIC_OFFSET = lib.TSS2_LAYER_IMPLEMENTATION_SPECIFIC_OFFSET
LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT = lib.TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT
RC_SUCCESS = lib.TSS2_RC_SUCCESS
TCTI_RC_GENERAL_FAILURE = lib.TSS2_TCTI_RC_GENERAL_FAILURE
TCTI_RC_NOT_IMPLEMENTED = lib.TSS2_TCTI_RC_NOT_IMPLEMENTED
TCTI_RC_BAD_CONTEXT = lib.TSS2_TCTI_RC_BAD_CONTEXT
TCTI_RC_ABI_MISMATCH = lib.TSS2_TCTI_RC_ABI_MISMATCH
TCTI_RC_BAD_REFERENCE = lib.TSS2_TCTI_RC_BAD_REFERENCE
TCTI_RC_INSUFFICIENT_BUFFER = lib.TSS2_TCTI_RC_INSUFFICIENT_BUFFER
TCTI_RC_BAD_SEQUENCE = lib.TSS2_TCTI_RC_BAD_SEQUENCE
TCTI_RC_NO_CONNECTION = lib.TSS2_TCTI_RC_NO_CONNECTION
TCTI_RC_TRY_AGAIN = lib.TSS2_TCTI_RC_TRY_AGAIN
TCTI_RC_IO_ERROR = lib.TSS2_TCTI_RC_IO_ERROR
TCTI_RC_BAD_VALUE = lib.TSS2_TCTI_RC_BAD_VALUE
TCTI_RC_NOT_PERMITTED = lib.TSS2_TCTI_RC_NOT_PERMITTED
TCTI_RC_MALFORMED_RESPONSE = lib.TSS2_TCTI_RC_MALFORMED_RESPONSE
TCTI_RC_NOT_SUPPORTED = lib.TSS2_TCTI_RC_NOT_SUPPORTED
TCTI_RC_MEMORY = lib.TSS2_TCTI_RC_MEMORY
SYS_RC_GENERAL_FAILURE = lib.TSS2_SYS_RC_GENERAL_FAILURE
SYS_RC_ABI_MISMATCH = lib.TSS2_SYS_RC_ABI_MISMATCH
SYS_RC_BAD_REFERENCE = lib.TSS2_SYS_RC_BAD_REFERENCE
SYS_RC_INSUFFICIENT_BUFFER = lib.TSS2_SYS_RC_INSUFFICIENT_BUFFER
SYS_RC_BAD_SEQUENCE = lib.TSS2_SYS_RC_BAD_SEQUENCE
SYS_RC_BAD_VALUE = lib.TSS2_SYS_RC_BAD_VALUE
SYS_RC_INVALID_SESSIONS = lib.TSS2_SYS_RC_INVALID_SESSIONS
SYS_RC_NO_DECRYPT_PARAM = lib.TSS2_SYS_RC_NO_DECRYPT_PARAM
SYS_RC_NO_ENCRYPT_PARAM = lib.TSS2_SYS_RC_NO_ENCRYPT_PARAM
SYS_RC_BAD_SIZE = lib.TSS2_SYS_RC_BAD_SIZE
SYS_RC_MALFORMED_RESPONSE = lib.TSS2_SYS_RC_MALFORMED_RESPONSE
SYS_RC_INSUFFICIENT_CONTEXT = lib.TSS2_SYS_RC_INSUFFICIENT_CONTEXT
SYS_RC_INSUFFICIENT_RESPONSE = lib.TSS2_SYS_RC_INSUFFICIENT_RESPONSE
SYS_RC_INCOMPATIBLE_TCTI = lib.TSS2_SYS_RC_INCOMPATIBLE_TCTI
SYS_RC_BAD_TCTI_STRUCTURE = lib.TSS2_SYS_RC_BAD_TCTI_STRUCTURE
MU_RC_GENERAL_FAILURE = lib.TSS2_MU_RC_GENERAL_FAILURE
MU_RC_BAD_REFERENCE = lib.TSS2_MU_RC_BAD_REFERENCE
MU_RC_BAD_SIZE = lib.TSS2_MU_RC_BAD_SIZE
MU_RC_BAD_VALUE = lib.TSS2_MU_RC_BAD_VALUE
MU_RC_INSUFFICIENT_BUFFER = lib.TSS2_MU_RC_INSUFFICIENT_BUFFER
ESYS_RC_GENERAL_FAILURE = lib.TSS2_ESYS_RC_GENERAL_FAILURE
ESYS_RC_NOT_IMPLEMENTED = lib.TSS2_ESYS_RC_NOT_IMPLEMENTED
ESYS_RC_ABI_MISMATCH = lib.TSS2_ESYS_RC_ABI_MISMATCH
ESYS_RC_BAD_REFERENCE = lib.TSS2_ESYS_RC_BAD_REFERENCE
ESYS_RC_INSUFFICIENT_BUFFER = lib.TSS2_ESYS_RC_INSUFFICIENT_BUFFER
ESYS_RC_BAD_SEQUENCE = lib.TSS2_ESYS_RC_BAD_SEQUENCE
ESYS_RC_INVALID_SESSIONS = lib.TSS2_ESYS_RC_INVALID_SESSIONS
ESYS_RC_TRY_AGAIN = lib.TSS2_ESYS_RC_TRY_AGAIN
ESYS_RC_IO_ERROR = lib.TSS2_ESYS_RC_IO_ERROR
ESYS_RC_BAD_VALUE = lib.TSS2_ESYS_RC_BAD_VALUE
ESYS_RC_NO_DECRYPT_PARAM = lib.TSS2_ESYS_RC_NO_DECRYPT_PARAM
ESYS_RC_NO_ENCRYPT_PARAM = lib.TSS2_ESYS_RC_NO_ENCRYPT_PARAM
ESYS_RC_BAD_SIZE = lib.TSS2_ESYS_RC_BAD_SIZE
ESYS_RC_MALFORMED_RESPONSE = lib.TSS2_ESYS_RC_MALFORMED_RESPONSE
ESYS_RC_INSUFFICIENT_CONTEXT = lib.TSS2_ESYS_RC_INSUFFICIENT_CONTEXT
ESYS_RC_INSUFFICIENT_RESPONSE = lib.TSS2_ESYS_RC_INSUFFICIENT_RESPONSE
ESYS_RC_INCOMPATIBLE_TCTI = lib.TSS2_ESYS_RC_INCOMPATIBLE_TCTI
ESYS_RC_BAD_TCTI_STRUCTURE = lib.TSS2_ESYS_RC_BAD_TCTI_STRUCTURE
ESYS_RC_MEMORY = lib.TSS2_ESYS_RC_MEMORY
ESYS_RC_BAD_TR = lib.TSS2_ESYS_RC_BAD_TR
ESYS_RC_MULTIPLE_DECRYPT_SESSIONS = lib.TSS2_ESYS_RC_MULTIPLE_DECRYPT_SESSIONS
ESYS_RC_MULTIPLE_ENCRYPT_SESSIONS = lib.TSS2_ESYS_RC_MULTIPLE_ENCRYPT_SESSIONS
ESYS_RC_RSP_AUTH_FAILED = lib.TSS2_ESYS_RC_RSP_AUTH_FAILED
if _lib_version_atleast("tss2-fapi", "3.0.0"):
FAPI_RC_GENERAL_FAILURE = lib.TSS2_FAPI_RC_GENERAL_FAILURE
FAPI_RC_NOT_IMPLEMENTED = lib.TSS2_FAPI_RC_NOT_IMPLEMENTED
FAPI_RC_BAD_REFERENCE = lib.TSS2_FAPI_RC_BAD_REFERENCE
FAPI_RC_BAD_SEQUENCE = lib.TSS2_FAPI_RC_BAD_SEQUENCE
FAPI_RC_IO_ERROR = lib.TSS2_FAPI_RC_IO_ERROR
FAPI_RC_BAD_VALUE = lib.TSS2_FAPI_RC_BAD_VALUE
FAPI_RC_NO_DECRYPT_PARAM = lib.TSS2_FAPI_RC_NO_DECRYPT_PARAM
FAPI_RC_NO_ENCRYPT_PARAM = lib.TSS2_FAPI_RC_NO_ENCRYPT_PARAM
FAPI_RC_MEMORY = lib.TSS2_FAPI_RC_MEMORY
FAPI_RC_BAD_CONTEXT = lib.TSS2_FAPI_RC_BAD_CONTEXT
FAPI_RC_NO_CONFIG = lib.TSS2_FAPI_RC_NO_CONFIG
FAPI_RC_BAD_PATH = lib.TSS2_FAPI_RC_BAD_PATH
FAPI_RC_NOT_DELETABLE = lib.TSS2_FAPI_RC_NOT_DELETABLE
FAPI_RC_PATH_ALREADY_EXISTS = lib.TSS2_FAPI_RC_PATH_ALREADY_EXISTS
FAPI_RC_KEY_NOT_FOUND = lib.TSS2_FAPI_RC_KEY_NOT_FOUND
FAPI_RC_SIGNATURE_VERIFICATION_FAILED = (
lib.TSS2_FAPI_RC_SIGNATURE_VERIFICATION_FAILED
)
FAPI_RC_HASH_MISMATCH = lib.TSS2_FAPI_RC_HASH_MISMATCH
FAPI_RC_KEY_NOT_DUPLICABLE = lib.TSS2_FAPI_RC_KEY_NOT_DUPLICABLE
FAPI_RC_PATH_NOT_FOUND = lib.TSS2_FAPI_RC_PATH_NOT_FOUND
FAPI_RC_NO_CERT = lib.TSS2_FAPI_RC_NO_CERT
FAPI_RC_NO_PCR = lib.TSS2_FAPI_RC_NO_PCR
FAPI_RC_PCR_NOT_RESETTABLE = lib.TSS2_FAPI_RC_PCR_NOT_RESETTABLE
FAPI_RC_BAD_TEMPLATE = lib.TSS2_FAPI_RC_BAD_TEMPLATE
FAPI_RC_AUTHORIZATION_FAILED = lib.TSS2_FAPI_RC_AUTHORIZATION_FAILED
FAPI_RC_AUTHORIZATION_UNKNOWN = lib.TSS2_FAPI_RC_AUTHORIZATION_UNKNOWN
FAPI_RC_NV_NOT_READABLE = lib.TSS2_FAPI_RC_NV_NOT_READABLE
FAPI_RC_NV_TOO_SMALL = lib.TSS2_FAPI_RC_NV_TOO_SMALL
FAPI_RC_NV_NOT_WRITEABLE = lib.TSS2_FAPI_RC_NV_NOT_WRITEABLE
FAPI_RC_POLICY_UNKNOWN = lib.TSS2_FAPI_RC_POLICY_UNKNOWN
FAPI_RC_NV_WRONG_TYPE = lib.TSS2_FAPI_RC_NV_WRONG_TYPE
FAPI_RC_NAME_ALREADY_EXISTS = lib.TSS2_FAPI_RC_NAME_ALREADY_EXISTS
FAPI_RC_NO_TPM = lib.TSS2_FAPI_RC_NO_TPM
FAPI_RC_TRY_AGAIN = lib.TSS2_FAPI_RC_TRY_AGAIN
FAPI_RC_BAD_KEY = lib.TSS2_FAPI_RC_BAD_KEY
FAPI_RC_NO_HANDLE = lib.TSS2_FAPI_RC_NO_HANDLE
FAPI_RC_NOT_PROVISIONED = lib.TSS2_FAPI_RC_NOT_PROVISIONED
FAPI_RC_ALREADY_PROVISIONED = lib.TSS2_FAPI_RC_ALREADY_PROVISIONED
if _lib_version_atleast("tss2-policy", "4.0.0"):
POLICY_RC_GENERAL_FAILURE = lib.TSS2_POLICY_RC_GENERAL_FAILURE
POLICY_RC_IO_ERROR = lib.TSS2_POLICY_RC_IO_ERROR
POLICY_RC_AUTHORIZATION_UNKNOWN = lib.TSS2_POLICY_RC_AUTHORIZATION_UNKNOWN
POLICY_RC_BAD_VALUE = lib.TSS2_POLICY_RC_BAD_VALUE
POLICY_RC_MEMORY = lib.TSS2_POLICY_RC_MEMORY
POLICY_RC_BAD_REFERENCE = lib.TSS2_POLICY_RC_BAD_REFERENCE
POLICY_RC_BAD_TEMPLATE = lib.TSS2_POLICY_RC_BAD_TEMPLATE
POLICY_RC_POLICY_NOT_CALCULATED = lib.TSS2_POLICY_RC_POLICY_NOT_CALCULATED
POLICY_RC_BUFFER_TOO_SMALL = lib.TSS2_POLICY_RC_BUFFER_TOO_SMALL
POLICY_RC_NULL_CALLBACK = lib.TSS2_POLICY_RC_NULL_CALLBACK
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_EO(TPM_FRIENDLY_INT):
EQ = lib.TPM2_EO_EQ
NEQ = lib.TPM2_EO_NEQ
SIGNED_GT = lib.TPM2_EO_SIGNED_GT
UNSIGNED_GT = lib.TPM2_EO_UNSIGNED_GT
SIGNED_LT = lib.TPM2_EO_SIGNED_LT
UNSIGNED_LT = lib.TPM2_EO_UNSIGNED_LT
SIGNED_GE = lib.TPM2_EO_SIGNED_GE
UNSIGNED_GE = lib.TPM2_EO_UNSIGNED_GE
SIGNED_LE = lib.TPM2_EO_SIGNED_LE
UNSIGNED_LE = lib.TPM2_EO_UNSIGNED_LE
BITSET = lib.TPM2_EO_BITSET
BITCLEAR = lib.TPM2_EO_BITCLEAR
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_ST(TPM_FRIENDLY_INT):
RSP_COMMAND = lib.TPM2_ST_RSP_COMMAND
NULL = lib.TPM2_ST_NULL
NO_SESSIONS = lib.TPM2_ST_NO_SESSIONS
SESSIONS = lib.TPM2_ST_SESSIONS
ATTEST_NV = lib.TPM2_ST_ATTEST_NV
ATTEST_COMMAND_AUDIT = lib.TPM2_ST_ATTEST_COMMAND_AUDIT
ATTEST_SESSION_AUDIT = lib.TPM2_ST_ATTEST_SESSION_AUDIT
ATTEST_CERTIFY = lib.TPM2_ST_ATTEST_CERTIFY
ATTEST_QUOTE = lib.TPM2_ST_ATTEST_QUOTE
ATTEST_TIME = lib.TPM2_ST_ATTEST_TIME
ATTEST_CREATION = lib.TPM2_ST_ATTEST_CREATION
CREATION = lib.TPM2_ST_CREATION
VERIFIED = lib.TPM2_ST_VERIFIED
AUTH_SECRET = lib.TPM2_ST_AUTH_SECRET
HASHCHECK = lib.TPM2_ST_HASHCHECK
AUTH_SIGNED = lib.TPM2_ST_AUTH_SIGNED
FU_MANIFEST = lib.TPM2_ST_FU_MANIFEST
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_SU(TPM_FRIENDLY_INT):
CLEAR = lib.TPM2_SU_CLEAR
STATE = lib.TPM2_SU_STATE
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_SE(TPM_FRIENDLY_INT):
HMAC = lib.TPM2_SE_HMAC
POLICY = lib.TPM2_SE_POLICY
TRIAL = lib.TPM2_SE_TRIAL
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_CAP(TPM_FRIENDLY_INT):
FIRST = lib.TPM2_CAP_FIRST
ALGS = lib.TPM2_CAP_ALGS
HANDLES = lib.TPM2_CAP_HANDLES
COMMANDS = lib.TPM2_CAP_COMMANDS
PP_COMMANDS = lib.TPM2_CAP_PP_COMMANDS
AUDIT_COMMANDS = lib.TPM2_CAP_AUDIT_COMMANDS
PCRS = lib.TPM2_CAP_PCRS
TPM_PROPERTIES = lib.TPM2_CAP_TPM_PROPERTIES
PCR_PROPERTIES = lib.TPM2_CAP_PCR_PROPERTIES
ECC_CURVES = lib.TPM2_CAP_ECC_CURVES
LAST = lib.TPM2_CAP_LAST
VENDOR_PROPERTY = lib.TPM2_CAP_VENDOR_PROPERTY
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMI_YES_NO(TPM_FRIENDLY_INT):
YES = lib.TPM2_YES
NO = lib.TPM2_NO
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM_AT(TPM_FRIENDLY_INT):
ANY = lib.TPM_AT_ANY
ERROR = lib.TPM_AT_ERROR
PV1 = lib.TPM_AT_PV1
VEND = lib.TPM_AT_VEND
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT(TPM_FRIENDLY_INT):
NONE = lib.TPM2_PT_NONE
GROUP = lib.TPM2_PT_GROUP
FIXED = lib.TPM2_PT_FIXED
LOCKOUT_COUNTER = lib.TPM2_PT_LOCKOUT_COUNTER
LEVEL = lib.TPM2_PT_LEVEL
REVISION = lib.TPM2_PT_REVISION
DAY_OF_YEAR = lib.TPM2_PT_DAY_OF_YEAR
YEAR = lib.TPM2_PT_YEAR
MANUFACTURER = lib.TPM2_PT_MANUFACTURER
FAMILY_INDICATOR = lib.TPM2_PT_FAMILY_INDICATOR
INPUT_BUFFER = lib.TPM2_PT_INPUT_BUFFER
ACTIVE_SESSIONS_MAX = lib.TPM2_PT_ACTIVE_SESSIONS_MAX
CONTEXT_GAP_MAX = lib.TPM2_PT_CONTEXT_GAP_MAX
MEMORY = lib.TPM2_PT_MEMORY
CLOCK_UPDATE = lib.TPM2_PT_CLOCK_UPDATE
ORDERLY_COUNT = lib.TPM2_PT_ORDERLY_COUNT
MAX_COMMAND_SIZE = lib.TPM2_PT_MAX_COMMAND_SIZE
MAX_RESPONSE_SIZE = lib.TPM2_PT_MAX_RESPONSE_SIZE
MAX_DIGEST = lib.TPM2_PT_MAX_DIGEST
MAX_OBJECT_CONTEXT = lib.TPM2_PT_MAX_OBJECT_CONTEXT
MAX_SESSION_CONTEXT = lib.TPM2_PT_MAX_SESSION_CONTEXT
SPLIT_MAX = lib.TPM2_PT_SPLIT_MAX
TOTAL_COMMANDS = lib.TPM2_PT_TOTAL_COMMANDS
VENDOR_COMMANDS = lib.TPM2_PT_VENDOR_COMMANDS
MODES = lib.TPM2_PT_MODES
VAR = lib.TPM2_PT_VAR
PERMANENT = lib.TPM2_PT_PERMANENT
STARTUP_CLEAR = lib.TPM2_PT_STARTUP_CLEAR
LIBRARY_COMMANDS = lib.TPM2_PT_LIBRARY_COMMANDS
ALGORITHM_SET = lib.TPM2_PT_ALGORITHM_SET
LOADED_CURVES = lib.TPM2_PT_LOADED_CURVES
MAX_AUTH_FAIL = lib.TPM2_PT_MAX_AUTH_FAIL
LOCKOUT_INTERVAL = lib.TPM2_PT_LOCKOUT_INTERVAL
LOCKOUT_RECOVERY = lib.TPM2_PT_LOCKOUT_RECOVERY
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_VENDOR(TPM_FRIENDLY_INT):
STRING_1 = lib.TPM2_PT_VENDOR_STRING_1
STRING_2 = lib.TPM2_PT_VENDOR_STRING_2
STRING_3 = lib.TPM2_PT_VENDOR_STRING_3
STRING_4 = lib.TPM2_PT_VENDOR_STRING_4
TPM_TYPE = lib.TPM2_PT_VENDOR_TPM_TYPE
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_FIRMWARE(TPM_FRIENDLY_INT):
VERSION_1 = lib.TPM2_PT_FIRMWARE_VERSION_1
VERSION_2 = lib.TPM2_PT_FIRMWARE_VERSION_2
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_HR(TPM_FRIENDLY_INT):
LOADED_MIN = lib.TPM2_PT_HR_LOADED_MIN
NV_INDEX = lib.TPM2_PT_HR_NV_INDEX
LOADED = lib.TPM2_PT_HR_LOADED
LOADED_AVAIL = lib.TPM2_PT_HR_LOADED_AVAIL
ACTIVE = lib.TPM2_PT_HR_ACTIVE
ACTIVE_AVAIL = lib.TPM2_PT_HR_ACTIVE_AVAIL
TRANSIENT_AVAIL = lib.TPM2_PT_HR_TRANSIENT_AVAIL
PERSISTENT = lib.TPM2_PT_HR_PERSISTENT
PERSISTENT_AVAIL = lib.TPM2_PT_HR_PERSISTENT_AVAIL
TRANSIENT_MIN = lib.TPM2_PT_HR_TRANSIENT_MIN
PERSISTENT_MIN = lib.TPM2_PT_HR_PERSISTENT_MIN
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_NV(TPM_FRIENDLY_INT):
COUNTERS_MAX = lib.TPM2_PT_NV_COUNTERS_MAX
INDEX_MAX = lib.TPM2_PT_NV_INDEX_MAX
BUFFER_MAX = lib.TPM2_PT_NV_BUFFER_MAX
COUNTERS = lib.TPM2_PT_NV_COUNTERS
COUNTERS_AVAIL = lib.TPM2_PT_NV_COUNTERS_AVAIL
WRITE_RECOVERY = lib.TPM2_PT_NV_WRITE_RECOVERY
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_CONTEXT(TPM_FRIENDLY_INT):
HASH = lib.TPM2_PT_CONTEXT_HASH
SYM = lib.TPM2_PT_CONTEXT_SYM
SYM_SIZE = lib.TPM2_PT_CONTEXT_SYM_SIZE
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_PS(TPM_FRIENDLY_INT):
FAMILY_INDICATOR = lib.TPM2_PT_PS_FAMILY_INDICATOR
LEVEL = lib.TPM2_PT_PS_LEVEL
REVISION = lib.TPM2_PT_PS_REVISION
DAY_OF_YEAR = lib.TPM2_PT_PS_DAY_OF_YEAR
YEAR = lib.TPM2_PT_PS_YEAR
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_AUDIT(TPM_FRIENDLY_INT):
COUNTER_0 = lib.TPM2_PT_AUDIT_COUNTER_0
COUNTER_1 = lib.TPM2_PT_AUDIT_COUNTER_1
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PT_PCR(TPM_FRIENDLY_INT):
FIRST = lib.TPM2_PT_TPM2_PCR_FIRST
SAVE = lib.TPM2_PT_PCR_SAVE
EXTEND_L0 = lib.TPM2_PT_PCR_EXTEND_L0
RESET_L0 = lib.TPM2_PT_PCR_RESET_L0
EXTEND_L1 = lib.TPM2_PT_PCR_EXTEND_L1
RESET_L1 = lib.TPM2_PT_PCR_RESET_L1
EXTEND_L2 = lib.TPM2_PT_PCR_EXTEND_L2
RESET_L2 = lib.TPM2_PT_PCR_RESET_L2
EXTEND_L3 = lib.TPM2_PT_PCR_EXTEND_L3
RESET_L3 = lib.TPM2_PT_PCR_RESET_L3
EXTEND_L4 = lib.TPM2_PT_PCR_EXTEND_L4
RESET_L4 = lib.TPM2_PT_PCR_RESET_L4
NO_INCREMENT = lib.TPM2_PT_PCR_NO_INCREMENT
DRTM_RESET = lib.TPM2_PT_PCR_DRTM_RESET
POLICY = lib.TPM2_PT_PCR_POLICY
AUTH = lib.TPM2_PT_PCR_AUTH
LAST = lib.TPM2_PT_TPM2_PCR_LAST
COUNT = lib.TPM2_PT_PCR_COUNT
SELECT_MIN = lib.TPM2_PT_PCR_SELECT_MIN
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_PS(TPM_FRIENDLY_INT):
MAIN = lib.TPM2_PS_MAIN
PC = lib.TPM2_PS_PC
PDA = lib.TPM2_PS_PDA
CELL_PHONE = lib.TPM2_PS_CELL_PHONE
SERVER = lib.TPM2_PS_SERVER
PERIPHERAL = lib.TPM2_PS_PERIPHERAL
TSS = lib.TPM2_PS_TSS
STORAGE = lib.TPM2_PS_STORAGE
AUTHENTICATION = lib.TPM2_PS_AUTHENTICATION
EMBEDDED = lib.TPM2_PS_EMBEDDED
HARDCOPY = lib.TPM2_PS_HARDCOPY
INFRASTRUCTURE = lib.TPM2_PS_INFRASTRUCTURE
VIRTUALIZATION = lib.TPM2_PS_VIRTUALIZATION
TNC = lib.TPM2_PS_TNC
MULTI_TENANT = lib.TPM2_PS_MULTI_TENANT
TC = lib.TPM2_PS_TC
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_HT(TPM_FRIENDLY_INT):
PCR = lib.TPM2_HT_PCR
NV_INDEX = lib.TPM2_HT_NV_INDEX
HMAC_SESSION = lib.TPM2_HT_HMAC_SESSION
LOADED_SESSION = lib.TPM2_HT_LOADED_SESSION
POLICY_SESSION = lib.TPM2_HT_POLICY_SESSION
SAVED_SESSION = lib.TPM2_HT_SAVED_SESSION
PERMANENT = lib.TPM2_HT_PERMANENT
TRANSIENT = lib.TPM2_HT_TRANSIENT
PERSISTENT = lib.TPM2_HT_PERSISTENT
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_SESSION(TPMA_FRIENDLY_INTLIST):
CONTINUESESSION = lib.TPMA_SESSION_CONTINUESESSION
AUDITEXCLUSIVE = lib.TPMA_SESSION_AUDITEXCLUSIVE
AUDITRESET = lib.TPMA_SESSION_AUDITRESET
DECRYPT = lib.TPMA_SESSION_DECRYPT
ENCRYPT = lib.TPMA_SESSION_ENCRYPT
AUDIT = lib.TPMA_SESSION_AUDIT
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_LOCALITY(TPMA_FRIENDLY_INTLIST):
ZERO = lib.TPMA_LOCALITY_TPM2_LOC_ZERO
ONE = lib.TPMA_LOCALITY_TPM2_LOC_ONE
TWO = lib.TPMA_LOCALITY_TPM2_LOC_TWO
THREE = lib.TPMA_LOCALITY_TPM2_LOC_THREE
FOUR = lib.TPMA_LOCALITY_TPM2_LOC_FOUR
EXTENDED_MASK = lib.TPMA_LOCALITY_EXTENDED_MASK
EXTENDED_SHIFT = lib.TPMA_LOCALITY_EXTENDED_SHIFT
[docs] @classmethod
def create_extended(cls, value):
x = (1 << cls.EXTENDED_SHIFT) + value
if x > 255:
raise ValueError("Extended Localities must be less than 256")
return x
[docs] @classmethod
def parse(cls, value: str) -> "TPMA_LOCALITY":
"""Converts a string of | separated localities or an extended locality into a TPMA_LOCALITY instance
Args:
value (str): The string "bitwise" expression of the localities or the extended locality.
Returns:
The locality or set of localities as a TPMA_LOCALITY instance.
Raises:
TypeError: If the value is not a str.
ValueError: If a field portion of the str does not match a constant.
Examples:
TPMA_LOCALITY.parse("zero|one") -> 0x03
TPMA_LOCALITY.parse("0xf0") -> 0xf0
"""
try:
return cls(value, base=0)
except ValueError:
pass
return super().parse(value)
[docs] def __str__(self) -> str:
"""Given a set of localities or an extended locality, return the string representation
Returns:
(str): a bitwise string value of the localities or the exteded locality.
Example:
str(TPMA_LOCALITY.THREE|TPMA_LOCALITY.FOUR) -> 'three|four'
str(TPMA_LOCALITY(0xf0)) -> '0xf0'
"""
if self > 31:
return f"{self:#x}"
return super().__str__()
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_NT(TPM_FRIENDLY_INT):
ORDINARY = lib.TPM2_NT_ORDINARY
COUNTER = lib.TPM2_NT_COUNTER
BITS = lib.TPM2_NT_BITS
EXTEND = lib.TPM2_NT_EXTEND
PIN_FAIL = lib.TPM2_NT_PIN_FAIL
PIN_PASS = lib.TPM2_NT_PIN_PASS
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_HR(TPM_FRIENDLY_INT):
HANDLE_MASK = lib.TPM2_HR_HANDLE_MASK
RANGE_MASK = lib.TPM2_HR_RANGE_MASK
SHIFT = lib.TPM2_HR_SHIFT
PCR = lib.TPM2_HR_PCR
HMAC_SESSION = lib.TPM2_HR_HMAC_SESSION
POLICY_SESSION = lib.TPM2_HR_POLICY_SESSION
TRANSIENT = lib.TPM2_HR_TRANSIENT
PERSISTENT = lib.TPM2_HR_PERSISTENT
NV_INDEX = lib.TPM2_HR_NV_INDEX
PERMANENT = lib.TPM2_HR_PERMANENT
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_HC(TPM_FRIENDLY_INT):
HR_HANDLE_MASK = lib.TPM2_HR_HANDLE_MASK
HR_RANGE_MASK = lib.TPM2_HR_RANGE_MASK
HR_SHIFT = lib.TPM2_HR_SHIFT
HR_PCR = lib.TPM2_HR_PCR
HR_HMAC_SESSION = lib.TPM2_HR_HMAC_SESSION
HR_POLICY_SESSION = lib.TPM2_HR_POLICY_SESSION
HR_TRANSIENT = lib.TPM2_HR_TRANSIENT
HR_PERSISTENT = lib.TPM2_HR_PERSISTENT
HR_NV_INDEX = lib.TPM2_HR_NV_INDEX
HR_PERMANENT = lib.TPM2_HR_PERMANENT
PCR_FIRST = lib.TPM2_PCR_FIRST
PCR_LAST = lib.TPM2_PCR_LAST
HMAC_SESSION_FIRST = lib.TPM2_HMAC_SESSION_FIRST
HMAC_SESSION_LAST = lib.TPM2_HMAC_SESSION_LAST
LOADED_SESSION_FIRST = lib.TPM2_LOADED_SESSION_FIRST
LOADED_SESSION_LAST = lib.TPM2_LOADED_SESSION_LAST
POLICY_SESSION_FIRST = lib.TPM2_POLICY_SESSION_FIRST
POLICY_SESSION_LAST = lib.TPM2_POLICY_SESSION_LAST
TRANSIENT_FIRST = lib.TPM2_TRANSIENT_FIRST
ACTIVE_SESSION_FIRST = lib.TPM2_ACTIVE_SESSION_FIRST
ACTIVE_SESSION_LAST = lib.TPM2_ACTIVE_SESSION_LAST
TRANSIENT_LAST = lib.TPM2_TRANSIENT_LAST
PERSISTENT_FIRST = lib.TPM2_PERSISTENT_FIRST
PERSISTENT_LAST = lib.TPM2_PERSISTENT_LAST
PLATFORM_PERSISTENT = lib.TPM2_PLATFORM_PERSISTENT
NV_INDEX_FIRST = lib.TPM2_NV_INDEX_FIRST
NV_INDEX_LAST = lib.TPM2_NV_INDEX_LAST
PERMANENT_FIRST = lib.TPM2_PERMANENT_FIRST
PERMANENT_LAST = lib.TPM2_PERMANENT_LAST
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_CLOCK(TPM_FRIENDLY_INT):
COARSE_SLOWER = lib.TPM2_CLOCK_COARSE_SLOWER
MEDIUM_SLOWER = lib.TPM2_CLOCK_MEDIUM_SLOWER
FINE_SLOWER = lib.TPM2_CLOCK_FINE_SLOWER
NO_CHANGE = lib.TPM2_CLOCK_NO_CHANGE
FINE_FASTER = lib.TPM2_CLOCK_FINE_FASTER
MEDIUM_FASTER = lib.TPM2_CLOCK_MEDIUM_FASTER
COARSE_FASTER = lib.TPM2_CLOCK_COARSE_FASTER
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_CLOCK_ADJUST(TPM2_CLOCK):
pass
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_NV(TPMA_FRIENDLY_INTLIST):
_FIXUP_MAP = {"NODA": "NO_DA"}
_MASKS = ((lib.TPMA_NV_TPM2_NT_MASK, lib.TPMA_NV_TPM2_NT_SHIFT, "nt"),)
PPWRITE = lib.TPMA_NV_PPWRITE
OWNERWRITE = lib.TPMA_NV_OWNERWRITE
AUTHWRITE = lib.TPMA_NV_AUTHWRITE
POLICYWRITE = lib.TPMA_NV_POLICYWRITE
TPM2_NT_MASK = lib.TPMA_NV_TPM2_NT_MASK
TPM2_NT_SHIFT = lib.TPMA_NV_TPM2_NT_SHIFT
POLICY_DELETE = lib.TPMA_NV_POLICY_DELETE
WRITELOCKED = lib.TPMA_NV_WRITELOCKED
WRITEALL = lib.TPMA_NV_WRITEALL
WRITEDEFINE = lib.TPMA_NV_WRITEDEFINE
WRITE_STCLEAR = lib.TPMA_NV_WRITE_STCLEAR
GLOBALLOCK = lib.TPMA_NV_GLOBALLOCK
PPREAD = lib.TPMA_NV_PPREAD
OWNERREAD = lib.TPMA_NV_OWNERREAD
AUTHREAD = lib.TPMA_NV_AUTHREAD
POLICYREAD = lib.TPMA_NV_POLICYREAD
NO_DA = lib.TPMA_NV_NO_DA
ORDERLY = lib.TPMA_NV_ORDERLY
CLEAR_STCLEAR = lib.TPMA_NV_CLEAR_STCLEAR
READLOCKED = lib.TPMA_NV_READLOCKED
WRITTEN = lib.TPMA_NV_WRITTEN
PLATFORMCREATE = lib.TPMA_NV_PLATFORMCREATE
READ_STCLEAR = lib.TPMA_NV_READ_STCLEAR
@property
def nt(self) -> TPM2_NT:
"""TPM2_NT: The type of the NV area"""
return TPM2_NT((self & self.TPM2_NT_MASK) >> self.TPM2_NT_SHIFT)
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_CC(TPMA_FRIENDLY_INTLIST):
_MASKS = (
(lib.TPMA_CC_COMMANDINDEX_MASK, lib.TPMA_CC_COMMANDINDEX_SHIFT, "commandindex"),
(lib.TPMA_CC_CHANDLES_MASK, lib.TPMA_CC_CHANDLES_SHIFT, "chandles"),
)
COMMANDINDEX_MASK = lib.TPMA_CC_COMMANDINDEX_MASK
COMMANDINDEX_SHIFT = lib.TPMA_CC_COMMANDINDEX_SHIFT
RESERVED1_MASK = lib.TPMA_CC_RESERVED1_MASK
NV = lib.TPMA_CC_NV
EXTENSIVE = lib.TPMA_CC_EXTENSIVE
FLUSHED = lib.TPMA_CC_FLUSHED
CHANDLES_MASK = lib.TPMA_CC_CHANDLES_MASK
CHANDLES_SHIFT = lib.TPMA_CC_CHANDLES_SHIFT
RHANDLE = lib.TPMA_CC_RHANDLE
V = lib.TPMA_CC_V
RES_MASK = lib.TPMA_CC_RES_MASK
RES_SHIFT = lib.TPMA_CC_RES_SHIFT
@property
def commandindex(self) -> int:
"""int: The command index"""
return self & self.COMMANDINDEX_MASK
@property
def chandles(self) -> int:
"""int: The number of handles in the handle area"""
return (self & self.CHANDLES_MASK) >> self.CHANDLES_SHIFT
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_OBJECT(TPMA_FRIENDLY_INTLIST):
FIXEDTPM = lib.TPMA_OBJECT_FIXEDTPM
STCLEAR = lib.TPMA_OBJECT_STCLEAR
FIXEDPARENT = lib.TPMA_OBJECT_FIXEDPARENT
SENSITIVEDATAORIGIN = lib.TPMA_OBJECT_SENSITIVEDATAORIGIN
USERWITHAUTH = lib.TPMA_OBJECT_USERWITHAUTH
ADMINWITHPOLICY = lib.TPMA_OBJECT_ADMINWITHPOLICY
NODA = lib.TPMA_OBJECT_NODA
ENCRYPTEDDUPLICATION = lib.TPMA_OBJECT_ENCRYPTEDDUPLICATION
RESTRICTED = lib.TPMA_OBJECT_RESTRICTED
DECRYPT = lib.TPMA_OBJECT_DECRYPT
SIGN_ENCRYPT = lib.TPMA_OBJECT_SIGN_ENCRYPT
DEFAULT_TPM2_TOOLS_CREATE_ATTRS = (
lib.TPMA_OBJECT_DECRYPT
| lib.TPMA_OBJECT_SIGN_ENCRYPT
| lib.TPMA_OBJECT_FIXEDTPM
| lib.TPMA_OBJECT_FIXEDPARENT
| lib.TPMA_OBJECT_SENSITIVEDATAORIGIN
| lib.TPMA_OBJECT_USERWITHAUTH
)
DEFAULT_TPM2_TOOLS_CREATEPRIMARY_ATTRS = (
lib.TPMA_OBJECT_RESTRICTED
| lib.TPMA_OBJECT_DECRYPT
| lib.TPMA_OBJECT_FIXEDTPM
| lib.TPMA_OBJECT_FIXEDPARENT
| lib.TPMA_OBJECT_SENSITIVEDATAORIGIN
| lib.TPMA_OBJECT_USERWITHAUTH
)
_FIXUP_MAP = {
"SIGN": "SIGN_ENCRYPT",
"ENCRYPT": "SIGN_ENCRYPT",
}
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_ALGORITHM(TPM_FRIENDLY_INT):
ASYMMETRIC = lib.TPMA_ALGORITHM_ASYMMETRIC
SYMMETRIC = lib.TPMA_ALGORITHM_SYMMETRIC
HASH = lib.TPMA_ALGORITHM_HASH
OBJECT = lib.TPMA_ALGORITHM_OBJECT
RESERVED1_MASK = lib.TPMA_ALGORITHM_RESERVED1_MASK
SIGNING = lib.TPMA_ALGORITHM_SIGNING
ENCRYPTING = lib.TPMA_ALGORITHM_ENCRYPTING
METHOD = lib.TPMA_ALGORITHM_METHOD
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_PERMANENT(TPMA_FRIENDLY_INTLIST):
OWNERAUTHSET = lib.TPMA_PERMANENT_OWNERAUTHSET
ENDORSEMENTAUTHSET = lib.TPMA_PERMANENT_ENDORSEMENTAUTHSET
LOCKOUTAUTHSET = lib.TPMA_PERMANENT_LOCKOUTAUTHSET
RESERVED1_MASK = lib.TPMA_PERMANENT_RESERVED1_MASK
DISABLECLEAR = lib.TPMA_PERMANENT_DISABLECLEAR
INLOCKOUT = lib.TPMA_PERMANENT_INLOCKOUT
TPMGENERATEDEPS = lib.TPMA_PERMANENT_TPMGENERATEDEPS
RESERVED2_MASK = lib.TPMA_PERMANENT_RESERVED2_MASK
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_STARTUP(TPMA_FRIENDLY_INTLIST):
CLEAR_PHENABLE = lib.TPMA_STARTUP_CLEAR_PHENABLE
CLEAR_SHENABLE = lib.TPMA_STARTUP_CLEAR_SHENABLE
CLEAR_EHENABLE = lib.TPMA_STARTUP_CLEAR_EHENABLE
CLEAR_PHENABLENV = lib.TPMA_STARTUP_CLEAR_PHENABLENV
CLEAR_RESERVED1_MASK = lib.TPMA_STARTUP_CLEAR_RESERVED1_MASK
CLEAR_ORDERLY = lib.TPMA_STARTUP_CLEAR_ORDERLY
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_MEMORY(TPM_FRIENDLY_INT):
SHAREDRAM = lib.TPMA_MEMORY_SHAREDRAM
SHAREDNV = lib.TPMA_MEMORY_SHAREDNV
OBJECTCOPIEDTORAM = lib.TPMA_MEMORY_OBJECTCOPIEDTORAM
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPM2_MAX(TPM_FRIENDLY_INT):
DIGEST_BUFFER = lib.TPM2_MAX_DIGEST_BUFFER
NV_BUFFER_SIZE = lib.TPM2_MAX_NV_BUFFER_SIZE
PCRS = lib.TPM2_MAX_PCRS
ALG_LIST_SIZE = lib.TPM2_MAX_ALG_LIST_SIZE
CAP_CC = lib.TPM2_MAX_CAP_CC
CAP_BUFFER = lib.TPM2_MAX_CAP_BUFFER
CONTEXT_SIZE = lib.TPM2_MAX_CONTEXT_SIZE
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TPMA_MODES(TPMA_FRIENDLY_INTLIST):
FIPS_140_2 = lib.TPMA_MODES_FIPS_140_2
RESERVED1_MASK = lib.TPMA_MODES_RESERVED1_MASK
#
# We specifically keep these constants around even when FAPI is missing so they may be used
# without conditional worry and we DONT use lib prefix here because the constants are only
# present if FAPI is installed. So just use the values directly.
#
[docs]@TPM_FRIENDLY_INT._fix_const_type
class FAPI_ESYSBLOB(TPM_FRIENDLY_INT):
CONTEXTLOAD = 1
DESERIALIZE = 2
[docs]@TPM_FRIENDLY_INT._fix_const_type
class TSS2_POLICY_PCR_SELECTOR(TPM_FRIENDLY_INT):
PCR_SELECT = 0
PCR_SELECTION = 1