tpm2-pytss icon indicating copy to clipboard operation
tpm2-pytss copied to clipboard

flush parent handle durint create and load

Open salrashid123 opened this issue 5 months ago • 1 comments

the parent context isn't flushed during a create and load commands cleanly which causes issues in using pytss with a swtpm (no resource mgr, etc).

suggestion is to add in the flush commands shown below to tpm2_pytss/tsskey.py.

i can submit a small pr if needed

    def load(self, ectx, password=None):
        if not password and not self.empty_auth:
            raise RuntimeError("no password specified but it is required")
        elif password and self.empty_auth:
            warnings.warn("password specified but empty_auth is true")
        phandle = self._getparent(ectx, self.public.publicArea.type, self.parent)
        handle = ectx.load(phandle, self.private, self.public)
        ectx.tr_set_auth(handle, password)
        ectx.flush_context(phandle)  # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        return handle

    @classmethod
    def create(cls, ectx, template, parent=lib.TPM2_RH_OWNER, password=None):
        insens = TPM2B_SENSITIVE_CREATE()
        emptyauth = True
        if password:
            insens.sensitive.userAuth = password
            emptyauth = False
        phandle = cls._getparent(ectx, template.type, parent)
        private, public, _, _, _ = ectx.create(
            parent_handle=phandle,
            in_sensitive=insens,
            in_public=TPM2B_PUBLIC(publicArea=template),
            outside_info=TPM2B_DATA(),
            creation_pcr=TPML_PCR_SELECTION(),
        )
        ectx.flush_context(phandle)        # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        return cls(private, public, emptyauth, parent)

salrashid123 avatar Sep 03 '24 14:09 salrashid123