in TSS.JS/src/TpmTypes.ts [3154:3292]
public static create(unionType: string, selector: TPM_ALG_ID | TPM_CAP | TPM_ST): any
{
switch (unionType) {
case 'TPMU_CAPABILITIES':
switch (selector) {
case TPM_CAP.ALGS: return new TPML_ALG_PROPERTY();
case TPM_CAP.HANDLES: return new TPML_HANDLE();
case TPM_CAP.COMMANDS: return new TPML_CCA();
case TPM_CAP.PP_COMMANDS: return new TPML_CC();
case TPM_CAP.AUDIT_COMMANDS: return new TPML_CC();
case TPM_CAP.PCRS: return new TPML_PCR_SELECTION();
case TPM_CAP.TPM_PROPERTIES: return new TPML_TAGGED_TPM_PROPERTY();
case TPM_CAP.PCR_PROPERTIES: return new TPML_TAGGED_PCR_PROPERTY();
case TPM_CAP.ECC_CURVES: return new TPML_ECC_CURVE();
case TPM_CAP.AUTH_POLICIES: return new TPML_TAGGED_POLICY();
case TPM_CAP.ACT: return new TPML_ACT_DATA();
}
break;
case 'TPMU_ATTEST':
switch (selector) {
case TPM_ST.ATTEST_CERTIFY: return new TPMS_CERTIFY_INFO();
case TPM_ST.ATTEST_CREATION: return new TPMS_CREATION_INFO();
case TPM_ST.ATTEST_QUOTE: return new TPMS_QUOTE_INFO();
case TPM_ST.ATTEST_COMMAND_AUDIT: return new TPMS_COMMAND_AUDIT_INFO();
case TPM_ST.ATTEST_SESSION_AUDIT: return new TPMS_SESSION_AUDIT_INFO();
case TPM_ST.ATTEST_TIME: return new TPMS_TIME_ATTEST_INFO();
case TPM_ST.ATTEST_NV: return new TPMS_NV_CERTIFY_INFO();
case TPM_ST.ATTEST_NV_DIGEST: return new TPMS_NV_DIGEST_CERTIFY_INFO();
}
break;
case 'TPMU_SYM_DETAILS':
switch (selector) {
case TPM_ALG_ID.TDES: return new TPMS_TDES_SYM_DETAILS();
case TPM_ALG_ID.AES: return new TPMS_AES_SYM_DETAILS();
case TPM_ALG_ID.SM4: return new TPMS_SM4_SYM_DETAILS();
case TPM_ALG_ID.CAMELLIA: return new TPMS_CAMELLIA_SYM_DETAILS();
case TPM_ALG_ID.ANY: return new TPMS_ANY_SYM_DETAILS();
case TPM_ALG_ID.XOR: return new TPMS_XOR_SYM_DETAILS();
case TPM_ALG_ID.NULL: return new TPMS_NULL_SYM_DETAILS();
}
break;
case 'TPMU_SENSITIVE_CREATE':
switch (selector) {
case TPM_ALG_ID.ANY: return null;
case TPM_ALG_ID.ANY2: return new TPMS_DERIVE();
}
break;
case 'TPMU_SCHEME_KEYEDHASH':
switch (selector) {
case TPM_ALG_ID.HMAC: return new TPMS_SCHEME_HMAC();
case TPM_ALG_ID.XOR: return new TPMS_SCHEME_XOR();
case TPM_ALG_ID.NULL: return new TPMS_NULL_SCHEME_KEYEDHASH();
}
break;
case 'TPMU_SIG_SCHEME':
switch (selector) {
case TPM_ALG_ID.RSASSA: return new TPMS_SIG_SCHEME_RSASSA();
case TPM_ALG_ID.RSAPSS: return new TPMS_SIG_SCHEME_RSAPSS();
case TPM_ALG_ID.ECDSA: return new TPMS_SIG_SCHEME_ECDSA();
case TPM_ALG_ID.ECDAA: return new TPMS_SIG_SCHEME_ECDAA();
case TPM_ALG_ID.SM2: return new TPMS_SIG_SCHEME_SM2();
case TPM_ALG_ID.ECSCHNORR: return new TPMS_SIG_SCHEME_ECSCHNORR();
case TPM_ALG_ID.HMAC: return new TPMS_SCHEME_HMAC();
case TPM_ALG_ID.ANY: return new TPMS_SCHEME_HASH();
case TPM_ALG_ID.NULL: return new TPMS_NULL_SIG_SCHEME();
}
break;
case 'TPMU_KDF_SCHEME':
switch (selector) {
case TPM_ALG_ID.MGF1: return new TPMS_KDF_SCHEME_MGF1();
case TPM_ALG_ID.KDF1_SP800_56A: return new TPMS_KDF_SCHEME_KDF1_SP800_56A();
case TPM_ALG_ID.KDF2: return new TPMS_KDF_SCHEME_KDF2();
case TPM_ALG_ID.KDF1_SP800_108: return new TPMS_KDF_SCHEME_KDF1_SP800_108();
case TPM_ALG_ID.ANY: return new TPMS_SCHEME_HASH();
case TPM_ALG_ID.NULL: return new TPMS_NULL_KDF_SCHEME();
}
break;
case 'TPMU_ASYM_SCHEME':
switch (selector) {
case TPM_ALG_ID.ECDH: return new TPMS_KEY_SCHEME_ECDH();
case TPM_ALG_ID.ECMQV: return new TPMS_KEY_SCHEME_ECMQV();
case TPM_ALG_ID.RSASSA: return new TPMS_SIG_SCHEME_RSASSA();
case TPM_ALG_ID.RSAPSS: return new TPMS_SIG_SCHEME_RSAPSS();
case TPM_ALG_ID.ECDSA: return new TPMS_SIG_SCHEME_ECDSA();
case TPM_ALG_ID.ECDAA: return new TPMS_SIG_SCHEME_ECDAA();
case TPM_ALG_ID.SM2: return new TPMS_SIG_SCHEME_SM2();
case TPM_ALG_ID.ECSCHNORR: return new TPMS_SIG_SCHEME_ECSCHNORR();
case TPM_ALG_ID.RSAES: return new TPMS_ENC_SCHEME_RSAES();
case TPM_ALG_ID.OAEP: return new TPMS_ENC_SCHEME_OAEP();
case TPM_ALG_ID.ANY: return new TPMS_SCHEME_HASH();
case TPM_ALG_ID.NULL: return new TPMS_NULL_ASYM_SCHEME();
}
break;
case 'TPMU_SIGNATURE':
switch (selector) {
case TPM_ALG_ID.RSASSA: return new TPMS_SIGNATURE_RSASSA();
case TPM_ALG_ID.RSAPSS: return new TPMS_SIGNATURE_RSAPSS();
case TPM_ALG_ID.ECDSA: return new TPMS_SIGNATURE_ECDSA();
case TPM_ALG_ID.ECDAA: return new TPMS_SIGNATURE_ECDAA();
case TPM_ALG_ID.SM2: return new TPMS_SIGNATURE_SM2();
case TPM_ALG_ID.ECSCHNORR: return new TPMS_SIGNATURE_ECSCHNORR();
case TPM_ALG_ID.HMAC: return new TPMT_HA();
case TPM_ALG_ID.ANY: return new TPMS_SCHEME_HASH();
case TPM_ALG_ID.NULL: return new TPMS_NULL_SIGNATURE();
}
break;
case 'TPMU_PUBLIC_ID':
switch (selector) {
case TPM_ALG_ID.KEYEDHASH: return new TPM2B_DIGEST_KEYEDHASH();
case TPM_ALG_ID.SYMCIPHER: return new TPM2B_DIGEST_SYMCIPHER();
case TPM_ALG_ID.RSA: return new TPM2B_PUBLIC_KEY_RSA();
case TPM_ALG_ID.ECC: return new TPMS_ECC_POINT();
case TPM_ALG_ID.ANY: return new TPMS_DERIVE();
}
break;
case 'TPMU_PUBLIC_PARMS':
switch (selector) {
case TPM_ALG_ID.KEYEDHASH: return new TPMS_KEYEDHASH_PARMS();
case TPM_ALG_ID.SYMCIPHER: return new TPMS_SYMCIPHER_PARMS();
case TPM_ALG_ID.RSA: return new TPMS_RSA_PARMS();
case TPM_ALG_ID.ECC: return new TPMS_ECC_PARMS();
case TPM_ALG_ID.ANY: return new TPMS_ASYM_PARMS();
}
break;
case 'TPMU_SENSITIVE_COMPOSITE':
switch (selector) {
case TPM_ALG_ID.RSA: return new TPM2B_PRIVATE_KEY_RSA();
case TPM_ALG_ID.ECC: return new TPM2B_ECC_PARAMETER();
case TPM_ALG_ID.KEYEDHASH: return new TPM2B_SENSITIVE_DATA();
case TPM_ALG_ID.SYMCIPHER: return new TPM2B_SYM_KEY();
case TPM_ALG_ID.ANY: return new TPM2B_PRIVATE_VENDOR_SPECIFIC();
}
break;
default:
throw new Error('UnionFactory.create(): Unknown union type ' + unionType);
}
throw new Error('Unknown selector value ' + selector + ' for union ' + unionType);
} // create()