From patchwork Sat Nov 15 18:51:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 707 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1763232811; bh=EoMOMY7A0+5mJ+TeN5qTACCwBzgzNhBdoD5ElBjF/lk=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=s2OqfJ41/CXhijx/NHfyoeQ9r/lK/evYRZQx9k78MnVAyxRD8SnPcjfB+0DKvEs2A YWu+r504ith3eDQtP0wQMK38rSKV4kqX1Pq3avtgMerYpN2xCQkc3FmkPGH2YujUy9 pcODfuT1Lhy+cK/sYcwob09h2hd9RAMkeuv6G7KEVYmuHtsVYzc1vjtWA2RycwrEWI IoDPGen/2h/5+NmJKTRRT7NdeNwEEsKt0ocH+DaLdfSKkMHk28wOHtha7WsqjQJ00E WqmDcfcep7Kea3LeSQSOpX0k3q7GR6LyU2lKFHbKjDo57ykAz+dVFPWDsRycrrBDMl WWkShF7N1n9Cg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 9481E6861F for ; Sat, 15 Nov 2025 11:53:31 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id skLdnXNIC8km for ; Sat, 15 Nov 2025 11:53:31 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1763232811; bh=EoMOMY7A0+5mJ+TeN5qTACCwBzgzNhBdoD5ElBjF/lk=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=s2OqfJ41/CXhijx/NHfyoeQ9r/lK/evYRZQx9k78MnVAyxRD8SnPcjfB+0DKvEs2A YWu+r504ith3eDQtP0wQMK38rSKV4kqX1Pq3avtgMerYpN2xCQkc3FmkPGH2YujUy9 pcODfuT1Lhy+cK/sYcwob09h2hd9RAMkeuv6G7KEVYmuHtsVYzc1vjtWA2RycwrEWI IoDPGen/2h/5+NmJKTRRT7NdeNwEEsKt0ocH+DaLdfSKkMHk28wOHtha7WsqjQJ00E WqmDcfcep7Kea3LeSQSOpX0k3q7GR6LyU2lKFHbKjDo57ykAz+dVFPWDsRycrrBDMl WWkShF7N1n9Cg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 81BFD6861E for ; Sat, 15 Nov 2025 11:53:31 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1763232810; bh=ggu/T+Vnn2gZiSWHubn9AzqqWKFRWrv3snnqiRWNgR0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Yy4SIhCtyWAg+G/oCQ/GI9PiCSELxrY8L0XFvGxXuC3ANQqRY5B/vtCK1iAVJheQc acbWOsNKu70c6Gf9OF+/6veyCygkgkn+ut9yOXCuFCB26zzcEtKry2JRc0IEM+MnJa 6ONyRgrxX0A6SfvQrthuE9OYlrLaOMAh3JP+DkRU/aPwcao6o9X4ubBLSc+nDPzHmr UJCeibTEuA9RThhN79nNF5H+HV4dJ0jCMO0KOnOmu2cC7KJkmFXJa+uCMJvZMhEGys VIvPInLdmwNXgUQpu/iF9IXZvs2i+ADw5161075X1brjru5G+2Lg0egRZ/pd7r2T4Y iG0qsUm205MAg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 07CE968626; Sat, 15 Nov 2025 11:53:30 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id r6dUeeGGk06x; Sat, 15 Nov 2025 11:53:29 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1763232804; bh=4PEDC/hiHLRdbvzF3DTY7YvUKgjuvKR2wOpY9aKXwA4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U5Y7yHzN8240um5J92AnrXOfQGvbEzV14/fCL4DfRynqcPzKRVFtX96UX+M1SrqPc wDBCm7eoQ0L7MLrs3CEl7JXvpsP5bcUcC9XM9ByZMK5ROVE/LCyuENiMaoXA8HIExu vgrboxYBRZ9nZjP0Afpw105fYH2dqi73TnBtom358mBsjKoFNoQaWFo7Fu9YVtfNpm XUFFLn05eHnFKl7SMieJ9zCkpy73Xk+HZhpOIWPDCUr60k4B3o2zd9xwxfNJo3iNsB 8OsZd3J65UoXhkH33Mpi7jVzsVTICtYBCcDdEmsxki8am/vpUA1JrdtXFzZaSA12Cq dTNG7n/4HsOLA== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id A75F868521; Sat, 15 Nov 2025 11:53:24 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Sat, 15 Nov 2025 11:51:58 -0700 Message-ID: <20251115185212.539268-10-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251115185212.539268-1-sjg@u-boot.org> References: <20251115185212.539268-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: XRJEB36TQHW5NLCS7QFSIHQ55XFUGMPH X-Message-ID-Hash: XRJEB36TQHW5NLCS7QFSIHQ55XFUGMPH X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 09/16] tkey: Provide some back-door functions for TKey tests List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass The tests need to reset the emulated TKey and put it into a known state. Add a few more functions to help with this. Signed-off-by: Simon Glass --- drivers/misc/tkey_emul.c | 41 ++++++++++++++++++++++++++++++++++++++++ include/tkey.h | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/drivers/misc/tkey_emul.c b/drivers/misc/tkey_emul.c index 5f7a4aa2f09..403e6e819b9 100644 --- a/drivers/misc/tkey_emul.c +++ b/drivers/misc/tkey_emul.c @@ -262,6 +262,47 @@ static int tkey_emul_read_all(struct udevice *dev, void *buf, int maxlen, return len; } +int tkey_emul_reset_for_test(struct udevice *dev) +{ + struct tkey_emul_priv *priv = dev_get_priv(dev); + + /* Reset to firmware mode */ + priv->app_loaded = false; + priv->total_loaded = 0; + priv->resp_len = 0; + log_debug("Reset emulator to firmware mode\n"); + + return 0; +} + +int tkey_emul_set_pubkey_for_test(struct udevice *dev, const void *pubkey) +{ + struct tkey_emul_priv *priv = dev_get_priv(dev); + + memcpy(priv->pubkey, pubkey, 32); + log_debug("Set test pubkey\n"); + + return 0; +} + +int tkey_emul_set_app_mode_for_test(struct udevice *dev, bool app_mode) +{ + /* + * Only set app_loaded if device is active (has priv data). + * After device_remove(), priv is freed, so we can't access it. + * When device is re-probed, it will start in firmware mode by default. + */ + if (device_active(dev)) { + struct tkey_emul_priv *priv = dev_get_priv(dev); + + priv->app_loaded = app_mode; + } + + log_debug("Set emulator to %s mode\n", app_mode ? "app" : "firmware"); + + return 0; +} + int tkey_emul_set_connected_for_test(struct udevice *dev, bool connected) { struct tkey_emul_plat *plat = dev_get_plat(dev); diff --git a/include/tkey.h b/include/tkey.h index 1c66dab8484..e610d91140c 100644 --- a/include/tkey.h +++ b/include/tkey.h @@ -278,6 +278,42 @@ int tkey_derive_disk_key(struct udevice *dev, const void *app_data, int tkey_derive_wrapping_key(struct udevice *dev, const char *password, void *wrapping_key); +/** + * tkey_emul_reset_for_test() - Reset emulator to firmware mode for testing + * + * This is a back-door function for tests to simulate TKey replug by resetting + * the emulator to firmware mode. Only works with tkey-emul driver. + * + * @dev: TKey device (must be tkey-emul) + * Return: 0 on success, -ve error on failure + */ +int tkey_emul_reset_for_test(struct udevice *dev); + +/** + * tkey_emul_set_pubkey_for_test() - Set public key returned by emulator + * + * This is a back-door function for tests to configure what public key the + * emulator returns from APP_CMD_GET_PUBKEY. The disk key will be derived + * from this pubkey using SHA256(hex(pubkey)). + * + * @dev: TKey device (must be tkey-emul) + * @pubkey: Public key to return (32 bytes) + * Return: 0 on success, -ve error on failure + */ +int tkey_emul_set_pubkey_for_test(struct udevice *dev, const void *pubkey); + +/** + * tkey_emul_set_app_mode_for_test() - Set emulator mode for testing + * + * This is a back-door function for tests to force the emulator into app mode + * or firmware mode, allowing tests to verify replug behavior. + * + * @dev: TKey device (must be tkey-emul) + * @app_mode: true for app mode, false for firmware mode + * Return: 0 on success, -ve error on failure + */ +int tkey_emul_set_app_mode_for_test(struct udevice *dev, bool app_mode); + /** * tkey_emul_set_connected_for_test() - Simulate device connection state *