[PATCH] fix(data): correct type for TpmSignCommand.in_scheme

Pétur Runólfsson <[email protected]> Fri, 19 Dec 2025 12:41:51 +0000
Newsgroups dev.linux.lists.tpm-protocol
Message-ID <[email protected]>
The type of the inScheme parameter for the TPM_Sign command is
TPMT_SIG_SCHEME+ ([1], Table 109).

Added test message scraped from strace output of Esys_Sign().

[1] https://trustedcomputinggroup.org/wp-content/uploads/Trusted-Platform-M=
odule-2.0-Library-Part-3-Version-184_pub.pdf

Signed-off-by: P=C3=A9tur Run=C3=B3lfsson <[email protected]>
---
 src/frame/data.rs | 6 +++---
 tests/message.txt | 3 ++-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/frame/data.rs b/src/frame/data.rs
index 9bc27ca..668f672 100644
--- a/src/frame/data.rs
+++ b/src/frame/data.rs
@@ -14,8 +14,8 @@ use crate::{
         TpmSe, TpmSu, TpmaLocality, TpmiAlgCipherMode, TpmiAlgHash, TpmiEc=
cKeyExchange, TpmiYesNo,
         TpmlAcCapabilities, TpmlAlg, TpmlCc, TpmlDigest, TpmlDigestValues,=
 TpmlPcrSelection,
         TpmsAcOutput, TpmsAlgorithmDetailEcc, TpmsCapabilityData, TpmsCont=
ext, TpmsTimeInfo,
-        TpmtHa, TpmtKdfScheme, TpmtPublicParms, TpmtRsaDecrypt, TpmtSignat=
ure, TpmtSymDef,
-        TpmtSymDefObject, TpmtTkAuth, TpmtTkCreation, TpmtTkHashcheck, Tpm=
tTkVerified,
+        TpmtHa, TpmtKdfScheme, TpmtPublicParms, TpmtRsaDecrypt, TpmtSigSch=
eme, TpmtSignature,
+        TpmtSymDef, TpmtSymDefObject, TpmtTkAuth, TpmtTkCreation, TpmtTkHa=
shcheck, TpmtTkVerified,
     },
     frame::TpmHeader,
 };
@@ -2552,7 +2552,7 @@ tpm_struct! {
     handles: 1,
     parameters: {
         pub digest: Tpm2bDigest,
-        pub in_scheme: TpmtSignature,
+        pub in_scheme: TpmtSigScheme,
         pub validation: TpmtTkHashcheck,
     }
 }
diff --git a/tests/message.txt b/tests/message.txt
index 38bb576..09d6448 100644
--- a/tests/message.txt
+++ b/tests/message.txt
@@ -9,7 +9,8 @@
 00000137 Command 0000 80020000002a0000013740000001010000000000000c40000009=
00000000033132330004deadbeef0000
 00000176 Command 0000 80020000003f0000017640000001400000010000001040000009=
0000800007617574683132330010aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000010010000b
 00000176 Command 0000 80010000002b0000017640000007400000070010aaaaaaaaaaaa=
aaaaaaaaaaaaaaaaaaaa0000000010000b
-0000015D Command 0000 80010000005C0000015D800000010020aaaaaaaaaaaaaaaaaaaa=
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0005000Bbbbbbbbbbbbbbbbbbbbbbbb=
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8024400000070000
+0000015D Command 0000 80010000003C0000015D800000010020aaaaaaaaaaaaaaaaaaaa=
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0005000B8024400000070000
+0000015D Command 0000 8002000000c90000015d80fffffe00000049020000000020013e=
913204ba4c050b520e5c1b298183877ba1b96b986f9cbc3fb52ec82a68fa21002081d177bfa=
62f2442b571932ebc03ee9f48e28f553a3272003d387ceb31857eac00205cb67f3ab8c70a63=
af698f78e9378254e643786a0bd31301744d15c15805c6e30018000b8024400000010040875=
f530de79f51f5db75e9488c7bb07b7906211e486c675791b6bb8ccdd3357ff59a1603df6d27=
d6814e81621586eaad9af3564ff4032e3085bcd20c94a854e6
 0000017A Response 0000 80010000020b0000000001000000060000003f00000100322e3=
0000000010100000000000001020000008a000001030000000800000104000007e200000105=
4946580000000106534c4239000001073637300000000108000000000000010900000000000=
0010a000000000000010b000700550000010c0011cb000000010d000004000000010e000000=
040000010f00000007000001100000000300000111000000400000011200000018000001130=
0000003000001140000ffff0000011600000008000001170000080000000118000000060000=
0119000040000000011a0000000b0000011b000000060000011c000000800000011d000000f=
f0000011e0000058c0000011f0000058c0000012000000020000001210000038f0000012200=
0001ee000001230000000100000124000000000000012500000103000001260000000000000=
12700000000000001280000008000000129000000610000012a000000600000012b00000001=
0000012c000003000000012d000000010000012e00000200000002000000000400000201800=
0000f000002020000000d000002030000000000000204000000030000020500000000000002=
060000004000000207000000040000020800000001000002090000000c0000020a000000020=
000020b0000000c0000020c000000000000020d000000020000020e000000000000020f0000=
001f0000021000000258
 00000176 Response 0000 8001000000300000000002000000002000647915de6106c955b=
26456b8b8a3b10546fa446405d4eb2e1fb0247fb52080
 0000017A Response 0000 8001000000170000000000000000080000000200030010
--=20
2.43.0