def create()

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)))