code: def _clean_ctx(self):
          
          try:
              if self.ctx is not None:
                  libcrypto.EVP_MD_CTX_free(self.ctx)
                  del self.ctx
          except AttributeError:
              pass
          self.digest_out = None
          self.digest_finalized = False
docs: Clears and deallocates context