return 0;
}
-#define parent_is_generated(vpninfo) (vpninfo->tpm2->parent >> TPM2_HR_SHIFT == TPM2_HT_PERMANENT)
+#define parent_is_generated(parent) ((parent) >> TPM2_HR_SHIFT == TPM2_HT_PERMANENT)
+#define parent_is_persistent(parent) ((parent) >> TPM2_HR_SHIFT == TPM2_HT_PERSISTENT)
static int init_tpm2_key(ESYS_CONTEXT **ctx, ESYS_TR *keyHandle,
struct openconnect_info *vpninfo)
goto error;
}
- if (parent_is_generated(vpninfo)) {
+ if (parent_is_generated(vpninfo->tpm2->parent)) {
if (init_tpm2_primary(vpninfo, *ctx, &parentHandle))
goto error;
} else {
goto error;
}
- if (parent_is_generated(vpninfo)) {
+ if (parent_is_generated(vpninfo->tpm2->parent)) {
r = Esys_FlushContext(*ctx, parentHandle);
if (r) {
vpn_progress(vpninfo, PRG_ERR,
return 0;
error:
- if (parent_is_generated(vpninfo) && parentHandle != ESYS_TR_NONE)
+ if (parent_is_generated(vpninfo->tpm2->parent) && parentHandle != ESYS_TR_NONE)
Esys_FlushContext(*ctx, parentHandle);
if (*keyHandle != ESYS_TR_NONE)
Esys_FlushContext(*ctx, *keyHandle);
{
TSS2_RC r;
- if (parent >> TPM2_HR_SHIFT != TPM2_HT_PERSISTENT &&
+ if (!parent_is_persistent(parent) &&
parent != TPM2_RH_OWNER && parent != TPM2_RH_NULL &&
parent != TPM2_RH_ENDORSEMENT && parent != TPM2_RH_PLATFORM) {
vpn_progress(vpninfo, PRG_ERR,
TPM_RH_NULL, NULL, 0);
}
-static void tpm2_flush_srk(TSS_CONTEXT *tssContext, TPM_HANDLE hSRK)
-{
- /* only flush if it's a volatile key which we must have created */
- if ((hSRK & 0xFF000000) == 0x80000000)
- tpm2_flush_handle(tssContext, hSRK);
-}
-
+#define parent_is_generated(parent) ((parent) >> HR_SHIFT == TPM_HT_PERMANENT)
+#define parent_is_persistent(parent) ((parent) >> HR_SHIFT == TPM_HT_PERSISTENT)
static TPM_RC tpm2_load_srk(TSS_CONTEXT *tssContext, TPM_HANDLE *h,
const char *auth, TPM_HANDLE hierarchy,
memset(&in, 0, sizeof(in));
memset(&out, 0, sizeof(out));
- if (vpninfo->tpm2->parent >> HR_SHIFT == TPM_HT_PERSISTENT) {
+ if (parent_is_persistent(vpninfo->tpm2->parent)) {
if (!pass) {
TPMT_PUBLIC pub;
rc = tpm2_readpublic(tssContext, vpninfo->tpm2->parent, &pub);
key = out.objectHandle;
out_flush_srk:
- tpm2_flush_srk(tssContext, in.parentHandle);
+ if (parent_is_generated(vpninfo->tpm2->parent))
+ tpm2_flush_handle(tssContext, in.parentHandle);
out:
vpninfo->tpm2->parent_pass = pass;
if (!key)
BYTE *der;
INT32 dersize;
- if (parent >> HR_SHIFT != TPM_HT_PERSISTENT &&
+ if (!parent_is_persistent(parent) &&
parent != TPM_RH_OWNER && parent != TPM_RH_NULL &&
parent != TPM_RH_ENDORSEMENT && parent != TPM_RH_PLATFORM) {
vpn_progress(vpninfo, PRG_ERR,