in TSS.Py/src/TpmTypes.py [0:0]
def create(unionType, selector):
""" Args:
unionType (string): union type name
selector (TPM_ALG_ID|TPM_CAP|TPM_ST): enum value
specifying the union member to instantiate
"""
if unionType == 'TPMU_CAPABILITIES':
if selector == TPM_CAP.ALGS: return TPML_ALG_PROPERTY()
if selector == TPM_CAP.HANDLES: return TPML_HANDLE()
if selector == TPM_CAP.COMMANDS: return TPML_CCA()
if selector == TPM_CAP.PP_COMMANDS: return TPML_CC()
if selector == TPM_CAP.AUDIT_COMMANDS: return TPML_CC()
if selector == TPM_CAP.PCRS: return TPML_PCR_SELECTION()
if selector == TPM_CAP.TPM_PROPERTIES: return TPML_TAGGED_TPM_PROPERTY()
if selector == TPM_CAP.PCR_PROPERTIES: return TPML_TAGGED_PCR_PROPERTY()
if selector == TPM_CAP.ECC_CURVES: return TPML_ECC_CURVE()
if selector == TPM_CAP.AUTH_POLICIES: return TPML_TAGGED_POLICY()
if selector == TPM_CAP.ACT: return TPML_ACT_DATA()
elif unionType == 'TPMU_ATTEST':
if selector == TPM_ST.ATTEST_CERTIFY: return TPMS_CERTIFY_INFO()
if selector == TPM_ST.ATTEST_CREATION: return TPMS_CREATION_INFO()
if selector == TPM_ST.ATTEST_QUOTE: return TPMS_QUOTE_INFO()
if selector == TPM_ST.ATTEST_COMMAND_AUDIT: return TPMS_COMMAND_AUDIT_INFO()
if selector == TPM_ST.ATTEST_SESSION_AUDIT: return TPMS_SESSION_AUDIT_INFO()
if selector == TPM_ST.ATTEST_TIME: return TPMS_TIME_ATTEST_INFO()
if selector == TPM_ST.ATTEST_NV: return TPMS_NV_CERTIFY_INFO()
if selector == TPM_ST.ATTEST_NV_DIGEST: return TPMS_NV_DIGEST_CERTIFY_INFO()
elif unionType == 'TPMU_SYM_DETAILS':
if selector == TPM_ALG_ID.TDES: return TPMS_TDES_SYM_DETAILS()
if selector == TPM_ALG_ID.AES: return TPMS_AES_SYM_DETAILS()
if selector == TPM_ALG_ID.SM4: return TPMS_SM4_SYM_DETAILS()
if selector == TPM_ALG_ID.CAMELLIA: return TPMS_CAMELLIA_SYM_DETAILS()
if selector == TPM_ALG_ID.ANY: return TPMS_ANY_SYM_DETAILS()
if selector == TPM_ALG_ID.XOR: return TPMS_XOR_SYM_DETAILS()
if selector == TPM_ALG_ID.NULL: return TPMS_NULL_SYM_DETAILS()
elif unionType == 'TPMU_SENSITIVE_CREATE':
if selector == TPM_ALG_ID.ANY: return None
if selector == TPM_ALG_ID.ANY2: return TPMS_DERIVE()
elif unionType == 'TPMU_SCHEME_KEYEDHASH':
if selector == TPM_ALG_ID.HMAC: return TPMS_SCHEME_HMAC()
if selector == TPM_ALG_ID.XOR: return TPMS_SCHEME_XOR()
if selector == TPM_ALG_ID.NULL: return TPMS_NULL_SCHEME_KEYEDHASH()
elif unionType == 'TPMU_SIG_SCHEME':
if selector == TPM_ALG_ID.RSASSA: return TPMS_SIG_SCHEME_RSASSA()
if selector == TPM_ALG_ID.RSAPSS: return TPMS_SIG_SCHEME_RSAPSS()
if selector == TPM_ALG_ID.ECDSA: return TPMS_SIG_SCHEME_ECDSA()
if selector == TPM_ALG_ID.ECDAA: return TPMS_SIG_SCHEME_ECDAA()
if selector == TPM_ALG_ID.SM2: return TPMS_SIG_SCHEME_SM2()
if selector == TPM_ALG_ID.ECSCHNORR: return TPMS_SIG_SCHEME_ECSCHNORR()
if selector == TPM_ALG_ID.HMAC: return TPMS_SCHEME_HMAC()
if selector == TPM_ALG_ID.ANY: return TPMS_SCHEME_HASH()
if selector == TPM_ALG_ID.NULL: return TPMS_NULL_SIG_SCHEME()
elif unionType == 'TPMU_KDF_SCHEME':
if selector == TPM_ALG_ID.MGF1: return TPMS_KDF_SCHEME_MGF1()
if selector == TPM_ALG_ID.KDF1_SP800_56A: return TPMS_KDF_SCHEME_KDF1_SP800_56A()
if selector == TPM_ALG_ID.KDF2: return TPMS_KDF_SCHEME_KDF2()
if selector == TPM_ALG_ID.KDF1_SP800_108: return TPMS_KDF_SCHEME_KDF1_SP800_108()
if selector == TPM_ALG_ID.ANY: return TPMS_SCHEME_HASH()
if selector == TPM_ALG_ID.NULL: return TPMS_NULL_KDF_SCHEME()
elif unionType == 'TPMU_ASYM_SCHEME':
if selector == TPM_ALG_ID.ECDH: return TPMS_KEY_SCHEME_ECDH()
if selector == TPM_ALG_ID.ECMQV: return TPMS_KEY_SCHEME_ECMQV()
if selector == TPM_ALG_ID.RSASSA: return TPMS_SIG_SCHEME_RSASSA()
if selector == TPM_ALG_ID.RSAPSS: return TPMS_SIG_SCHEME_RSAPSS()
if selector == TPM_ALG_ID.ECDSA: return TPMS_SIG_SCHEME_ECDSA()
if selector == TPM_ALG_ID.ECDAA: return TPMS_SIG_SCHEME_ECDAA()
if selector == TPM_ALG_ID.SM2: return TPMS_SIG_SCHEME_SM2()
if selector == TPM_ALG_ID.ECSCHNORR: return TPMS_SIG_SCHEME_ECSCHNORR()
if selector == TPM_ALG_ID.RSAES: return TPMS_ENC_SCHEME_RSAES()
if selector == TPM_ALG_ID.OAEP: return TPMS_ENC_SCHEME_OAEP()
if selector == TPM_ALG_ID.ANY: return TPMS_SCHEME_HASH()
if selector == TPM_ALG_ID.NULL: return TPMS_NULL_ASYM_SCHEME()
elif unionType == 'TPMU_SIGNATURE':
if selector == TPM_ALG_ID.RSASSA: return TPMS_SIGNATURE_RSASSA()
if selector == TPM_ALG_ID.RSAPSS: return TPMS_SIGNATURE_RSAPSS()
if selector == TPM_ALG_ID.ECDSA: return TPMS_SIGNATURE_ECDSA()
if selector == TPM_ALG_ID.ECDAA: return TPMS_SIGNATURE_ECDAA()
if selector == TPM_ALG_ID.SM2: return TPMS_SIGNATURE_SM2()
if selector == TPM_ALG_ID.ECSCHNORR: return TPMS_SIGNATURE_ECSCHNORR()
if selector == TPM_ALG_ID.HMAC: return TPMT_HA()
if selector == TPM_ALG_ID.ANY: return TPMS_SCHEME_HASH()
if selector == TPM_ALG_ID.NULL: return TPMS_NULL_SIGNATURE()
elif unionType == 'TPMU_PUBLIC_ID':
if selector == TPM_ALG_ID.KEYEDHASH: return TPM2B_DIGEST_KEYEDHASH()
if selector == TPM_ALG_ID.SYMCIPHER: return TPM2B_DIGEST_SYMCIPHER()
if selector == TPM_ALG_ID.RSA: return TPM2B_PUBLIC_KEY_RSA()
if selector == TPM_ALG_ID.ECC: return TPMS_ECC_POINT()
if selector == TPM_ALG_ID.ANY: return TPMS_DERIVE()
elif unionType == 'TPMU_PUBLIC_PARMS':
if selector == TPM_ALG_ID.KEYEDHASH: return TPMS_KEYEDHASH_PARMS()
if selector == TPM_ALG_ID.SYMCIPHER: return TPMS_SYMCIPHER_PARMS()
if selector == TPM_ALG_ID.RSA: return TPMS_RSA_PARMS()
if selector == TPM_ALG_ID.ECC: return TPMS_ECC_PARMS()
if selector == TPM_ALG_ID.ANY: return TPMS_ASYM_PARMS()
elif unionType == 'TPMU_SENSITIVE_COMPOSITE':
if selector == TPM_ALG_ID.RSA: return TPM2B_PRIVATE_KEY_RSA()
if selector == TPM_ALG_ID.ECC: return TPM2B_ECC_PARAMETER()
if selector == TPM_ALG_ID.KEYEDHASH: return TPM2B_SENSITIVE_DATA()
if selector == TPM_ALG_ID.SYMCIPHER: return TPM2B_SYM_KEY()
if selector == TPM_ALG_ID.ANY: return TPM2B_PRIVATE_VENDOR_SPECIFIC()
else:
raise(Exception('UnionFactory.create(): Unrecognized union type "{}"'.format(unionType)))
raise(Exception('UnionFactory.create(): Unknown selector value "{s}" for union "{u}"'.format(s = str(selector), u = unionType)))