tpm2_sign(1) General Commands Manual tpm2_sign(1)

tpm2_sign - امضای یک هش یا پیام با استفاده از TPM

tpm2_sign [OPTIONS] [ARGUMENT]

ابزار tpm2_sign(1) با استفاده از کلید امضای متقارن یا نامتقارن مشخص‌شده، برای پیام یا خلاصه‌ی پیام (message-digest) مشخص‌شده امضا تولید می‌کند.

هنگام امضای یک پیام، ابزار tpm2_sign ابتدا مشابه دستور tpm2_hash خلاصه‌ی پیام را محاسبه می‌کند. این ابزار همچنین بسته به این‌که کلید امضا نامحدود (unrestricted) یا محدود (restricted) باشد، به ترتیب یک بلیت اعتبارسنجی (validation ticket) تحت سلسله‌مراتب‌های TPM2_RH_NULL یا TPM2_RH_OWNER تولید می‌کند.

اگرچه امکان امضای مستقیم پیام‌ها در این ابزار فراهم شده است، اما توصیه می‌شود ابتدا از ابزار tpm2_hash استفاده کرده و سپس خلاصه و بلیت اعتبارسنجی را به این دستور ارسال نمایید.

نکته: اگر کلید امضا یک کلید امضای محدود باشد، اعتبارسنجی و خلاصه باید از طریق ورودی -t ارائه شوند. این بلیت نشان می‌دهد که TPM عمل هش کردن پیام را انجام داده است.

•
-c, --key-context=OBJECT:

شیء بافتار که به کلید مورد استفاده برای امضا اشاره دارد. می‌تواند یک فایل یا شماره دستگیره (handle) باشد. بخش “قالب شیء بافتار (Context Object Format)” را ببینید.

•
-p, --auth_AUTH_:

مقدار احراز هویت اختیاری برای استفاده از کلید مشخص‌شده با -c. مقادیر احراز هویت باید از “استانداردهای قالب‌بندی احراز هویت” پیروی کنند، بخش “Authorization Formatting” را ببینید.

•
-g, --hash-algorithm=ALGORITHM:

الگوریتم هش استفاده‌شده برای خلاصه‌سازی پیام. الگوریتم‌ها باید از “استانداردهای قالب‌بندی” پیروی کنند، بخش “Algorithm Specifiers” را ببینید. همچنین برای فهرستی از الگوریتم‌های هش پشتیبانی‌شده، بخش “Supported Hash Algorithms” را ببینید.

•
-s, --scheme=ALGORITHM:

طرح‌واره امضا (signing scheme) که برای امضای پیام استفاده می‌شود. اختیاری است.

طرح‌واره‌های امضا باید از “استانداردهای قالب‌بندی” پیروی کنند، بخش “Algorithm Specifiers” را ببینید.

در صورت تعیین، طرح‌واره امضا باید با نوع کلید مطابقت داشته باشد. در صورت تعیین نشدن، یک طرح‌واره امضای پیش‌فرض برای نوع کلید به کار گرفته خواهد شد.

•
-d, --digest:

مشخص می‌کند که FILE یک فایل حاوی خلاصه (digest) پیام است. در صورت مشخص شدن هم‌زمان این گزینه و -t، یک هشدار صادر شده و بلیت اعتبارسنجی (-t) نادیده گرفته می‌شود. شما نمی‌توانید از این گزینه برای امضای یک خلاصه با یک کلید امضای محدود (restricted) استفاده کنید.

•
-t, --ticket=FILE:

فایل بلیت، حاوی ساختار اعتبارسنجی؛ اختیاری.

•
-o, --signature=FILE:

فایل امضا، ساختار امضا را ثبت می‌کند.

•
-f, --format=FORMAT:

انتخاب قالب برای فایل خروجی امضا. بخش “Signature Format Specifiers” را ببینید.

•
--cphash=FILE

مسیر فایل برای ثبت هش پارامترهای دستور. این مورد معمولاً cpHash نامیده می‌شود. نکته: هنگام انتخاب این گزینه، ابزار در عمل دستور را اجرا نمی‌کند و صرفاً یک cpHash بازمی‌گرداند.

•
--commit-index=NATURALNUMBER

مقدار شمارنده commit برای تعیین نمایه کلید جهت استفاده در طرح‌واره امضای ECDAA. مقدار پیش‌فرض شمارنده 0 است.

•
ARGUMENT آرگومان خط فرمان که داده‌های فایل را برای امضا مشخص می‌کند.

نوع یک شیء بافتار، چه یک handle باشد و چه نام فایل، بر اساس منطق زیر به‌ترتیب تعیین می‌شود:

•
اگر آرگومان مسیر یک فایل باشد، فایل به عنوان یک شیء گذرا (transient object) بازیابی‌شده‌ی TPM بارگذاری می‌شود.
•
اگر آرگومان با یکی از موارد زیر تطابق پیشوندی داشته باشد:
•
owner: سلسله‌مراتب owner
•
platform: سلسله‌مراتب platform
•
endorsement: سلسله‌مراتب endorsement
•
lockout: شیء پایدار کنترل lockout
•
اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک handle تلقی شده (مانند 0x81010013) و مستقیماً استفاده می‌شود._OBJECT_..SH "قالب‌بندی احراز دسترسی (Authorization Formatting)" احراز دسترسی برای استفاده از یک شیء در TPM2.0 می‌تواند به ۳ شکل مختلف باشد: ۱. گذرواژه (Password) ۲. HMAC ۳. نشست‌ها (Sessions)

نکته: “در صورت مشخص نشدن، احراز دسترسی به‌طور پیش‌فرض روی گذرواژه خالی (EMPTY PASSWORD) تنظیم می‌شود”.

برای احراز اصالت با مقادیر auth، دستورات ابزار به‌طور ضمنی یک نشست HMAC ایجاد می‌کنند. بنابراین گذرواژه‌ها بدون رمزگذاری منتقل نمی‌شوند. این امر در مورد گذرواژه‌های تعریف‌شده برای اشیاء صدق نمی‌کند. در این حالت، باید از یک نشست HMAC استفاده شود (رجوع کنید به tpm2_startauthsession(1)).

گذرواژه‌ها بر اساس شناسه‌های پیشوند در قالب‌های زیر تفسیر می‌شوند.

نکته: به‌طور پیش‌فرض زمانی که گذرواژه‌ها فاقد پیشوند باشند، در قالب رشته در نظر گرفته می‌شوند.

یک گذرواژه رشته‌ای، که با پیشوند “str:” یا نبود آن (رشته خام بدون پیشوند) مشخص می‌شود، تفسیر نمی‌گردد و مستقیماً برای احراز دسترسی به کار می‌رود.

foobar
str:foobar

یک گذرواژه رشته هگز، که با پیشوند “hex:” مشخص می‌شود، از قالب هگزادسیمال به یک آرایه بایتی تبدیل می‌شود؛ بنابراین امکان استفاده از گذرواژه‌هایی با نویسه‌های غیرقابل‌چاپ یا ناسازگار با ترمینال را فراهم می‌سازد.

hex:1122334455667788

یک گذرواژه مبتنی بر فایل، که با پیشوند “file:” مشخص می‌شود، باید مسیر فایلی حاوی گذرواژه جهت خوانده شدن توسط ابزار یا “-” برای استفاده از stdin باشد. ذخیره گذرواژه‌ها در فایل از نشت اطلاعات جلوگیری می‌کند؛ زیرا گذرواژه‌های ارائه‌شده به عنوان گزینه می‌توانند از طریق فهرست فرایندها یا قابلیت‌های رایج تاریخچه شل خوانده شوند.

# to use stdin and be prompted
file:-
# to use a file from a path
file:path/to/password/file
# to echo a password via stdin:
echo foobar | tpm2_tool -p file:-
# to use a bash here-string via stdin:
tpm2_tool -p file:- <<< foobar

هنگام استفاده از یک نشست پالیسی (policy session) جهت احراز دسترسیِ استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session پیشوندگذاری کنید. سپس مسیری را به یک فایل نشست که با tpm2_startauthsession(1) ایجاد شده است تعیین نمایید. به‌صورت اختیاری، اگر نشست مستلزم ارسال یک auth value به همراه دستگیره (handle) نشست باشد (مانند policy password)، یک + و یک رشته را مطابق با توضیحات بخش گذرواژه‌ها (Passwords) اضافه کنید.

برای استفاده از یک فایل بافتار (context) نشست به نام session.ctx:

session:session.ctx

برای استفاده از یک فایل بافتار نشست به نام session.ctx و ارسال authvalue با مقدار mypassword:

session:session.ctx+mypassword

برای استفاده از یک فایل بافتار نشست به نام session.ctx و ارسال authvalue از نوع HEX با مقدار 0x11223344:

session:session.ctx+hex:11223344

می‌توانید با استفاده از پیشوند “pcr:” و ریززبان PCR، یک پالیسی PCR را برآورده کنید. ریززبان PCR به شرح زیر است: <pcr-spec>=<raw-pcr-file>

مشخصه PCR در بخش “مشخص‌کننده‌های بانک PCR (PCR bank specifiers)” مستند شده است.

آرگومان raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتوای خام PCR بازگردانده‌شده توسط tpm2_pcrread(1) می‌باشد.

مشخص‌کننده‌های بانک PCR (PCR bank specifiers)

برای برآورده کردن یک پالیسی PCR از sha256 روی بانک‌های ۰، ۱، ۲ و ۳ از یک مشخص‌کننده به صورت زیر استفاده کنید:

pcr:sha256:0,1,2,3

مشخص‌سازی AUTH.

گزینه‌هایی که الگوریتم می‌پذیرند از “نام‌های آسان (nice-names)” پشتیبانی می‌کنند.

دو رده اصلی از رشته‌های مشخص‌کننده الگوریتم وجود دارد: ساده و پیچیده. بسته به کاربرد و شرایط، تنها الگوریتم‌های خاصی توسط TPM پذیرفته خواهند شد..SS "مشخص‌کننده‌های ساده (Simple specifiers)" این‌ها رشته‌هایی بدون داده‌های مشخص‌کننده اضافی هستند. هنگام ایجاد شیءها، بخش‌های مشخص‌نشده شیء بر روی مقادیر پیش‌فرض در نظر گرفته می‌شوند. می‌توانید فهرست “مشخص‌کننده‌های ساده” را در زیر بیابید.

•
rsa
•
ecc

•
aes
•
camellia
•
sm4

•
sha1
•
sha256
•
sha384
•
sha512
•
sm3_256
•
sha3_256
•
sha3_384
•
sha3_512

•
hmac
•
xor

•
rsassa
•
rsapss
•
ecdsa
•
ecdaa
•
ecschnorr
•
sm2

•
oaep
•
rsaes
•
ecdh

•
ctr
•
ofb
•
cbc
•
cfb
•
ecb

•
null

شیءها هنگام تعیین برای ایجاد توسط TPM، الگوریتم‌های متعددی برای مقداردهی در داده‌های عمومی (public data) دارند؛ مواردی مانند نوع، طرح و جزئیات نامتقارن، اندازه کلید و غیره. قالب کلی برای تعیین این داده‌ها در زیر آمده است: <type>:<scheme>:<symmetric-details>

این بخش از مشخص‌کننده الگوریتم پیچیده الزامی است. طرح و جزئیات متقارن باقی‌مانده بر اساس نوع مشخص‌شده و نوع شیء در حال ایجاد، به مقادیر پیش‌فرض تنظیم خواهند شد.

•
aes - مقدار پیش‌فرض AES: aes128
•
aes128<mode> - الگوریتم AES با کلید ۱۲۸ بیتی و حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، پیش‌فرض null خواهد بود.
•
aes192<mode> - مشابه aes128<mode>، با این تفاوت که اندازه کلید ۱۹۲ بیت است.
•
aes256<mode> - مشابه aes128<mode>، با این تفاوت که اندازه کلید ۲۵۶ بیت است.
•
sm4 - مقدار پیش‌فرض SM4: sm4128
•
sm4128 یا sm4_128 <mode> - الگوریتم SM4 با کلید ۱۲۸ بیتی و حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، پیش‌فرض null خواهد بود.
•
ecc - منحنی بیضوی، مقدار پیش‌فرض ecc256.
•
ecc192 یا ecc_nist_p192 - منحنی ۱۹۲ بیتی ECC NIST
•
ecc224 یا ecc_nist_p224 - منحنی ۲۲۴ بیتی ECC NIST
•
ecc256 یا ecc_nist_p256 - منحنی ۲۵۶ بیتی ECC NIST
•
ecc384 یا ecc_nist_p384 - منحنی ۳۸۴ بیتی ECC NIST
•
ecc521 یا ecc_nist_p521 - منحنی ۵۲۱ بیتی ECC NIST
•
ecc_sm2 یا ecc_sm2_p256 - منحنی ۲۵۶ بیتی SM2
•
rsa - مقدار پیش‌فرض RSA: rsa2048
•
rsa1024 - الگوریتم RSA با اندازه کلید ۱۰۲۴ بیت.
•
rsa2048 - الگوریتم RSA با اندازه کلید ۲۰۴۸ بیت.
•
rsa3072 - الگوریتم RSA با اندازه کلید ۳۰۷۲ بیت.
•
rsa4096 - الگوریتم RSA با اندازه کلید ۴۰۹۶ بیت..SS "مشخص‌کننده‌های طرح (Scheme Specifiers)" بخش بعدی، یک فیلد اختیاری است و می‌توان از آن صرف‌نظر کرد.

طرح‌ها معمولاً Signing Schemes (طرح‌های امضا) یا Asymmetric Encryption Schemes (طرح‌های رمزنگاری نامتقارن) هستند. بیشتر طرح‌های امضا بلافاصله پس از طرح امضا یک الگوریتم درهم‌سازی (هش) دریافت می‌کنند. اگر الگوریتم هش مشخص نشده باشد، مقدار پیش‌فرض sha256 خواهد بود. برخی هیچ آرگومانی دریافت نمی‌کنند، و برخی چندین آرگومان می‌پذیرند.

این مشخص‌کننده‌های طرح با یک خط تیره و یک الگوریتم هش معتبر دنبال می‌شوند؛ برای مثال: oaep-sha256.

•
oaep
•
ecdh
•
rsassa
•
rsapss
•
ecdsa
•
ecschnorr
•
sm2

این مشخص‌کنندهٔ طرح با یک شمارنده (حداکثر اندازهٔ UINT16) و سپس یک خط تیره (-) و یک الگوریتم هش معتبر دنبال می‌شود. * ecdaa برای مثال، ecdaa4-sha256. اگر شمارنده‌ای مشخص نشود، مقدار پیش‌فرض آن 4 خواهد بود.

این مشخص‌کنندهٔ طرح هیچ آرگومانی دریافت نمی‌کند. * rsaes

این فیلد اختیاری است و مقدار پیش‌فرض آن بر اساس type شیء در حال ایجاد و ویژگی‌های آن تعیین می‌شود. به‌طور کلی، هر مشخص‌کنندهٔ معتبر Symmetric از فهرست Type Specifiers باید کار کند. اگر مشخص نشود، جزئیات متقارن شیء نامتقارن به صورت پیش‌فرض aes128cfb خواهد بود.

tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv

/tpm2_create -C parent.ctx -G ecc256:ecdaa4-sha384 -u key.pub -r key.priv الگوریتم‌های رمزنگاری ALGORITHM.

این مجموعه از گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که بسیاری از کاربران انتظار دارند.

•
-h، --help=[man|no-man]: نمایش صفحهٔ راهنمای (manpage) ابزار. به‌طور پیش‌فرض، ابزار تلاش می‌کند صفحه‌بندی‌کنندهٔ راهنما (manpager) را فراخوانی کند؛ با این حال در صورت شکست، خلاصهٔ کوتاهی از ابزار را نمایش می‌دهد. اگر آرگومان گزینهٔ “man” مشخص شده باشد نیز همین رفتار اعمال می‌شود، اما اگر صریحاً “man” درخواست شده باشد، ابزار خطاهای man را در stderr ارائه می‌دهد. اگر گزینهٔ “no-man” مشخص شده باشد، یا فراخوانی manpager با شکست مواجه شود، گزینه‌های کوتاه در stdout نمایش داده می‌شوند.

استفادهٔ موفقیت‌آمیز از ویژگی manpage نیازمند نصب بودن صفحات راهنما یا قرار داشتن آن‌ها در MANPATH است؛ برای جزئیات بیشتر man(1) را ببینید.

•
-v، --version: نمایش اطلاعات نسخهٔ این ابزار، tctiهای پشتیبانی‌شده و خروج.
•
-V، --verbose: افزایش اطلاعاتی که ابزار در حین اجرا روی کنسول چاپ می‌کند. هنگام استفاده از این گزینه نام فایل و شمارهٔ خط نیز چاپ می‌شوند.
•
-Q، --quiet: بی‌صدا کردن خروجی عادی ابزار به stdout.
•
-Z، --enable-errata: فعال‌سازی اعمال اصلاحیه‌های خطاها (errata fixups). زمانی مفید است که اعمال اصلاحیهٔ خطاها روی دستورهای ارسالی به TPM مورد نیاز باشد. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز عملکردی معادل دارد.
•
-z، --pwd-session: استفاده از نشست رمز عبور به جای نشست HMAC برای احراز هویت. یک گذرواژهٔ متنیِ رمزنگاری‌نشده (clear text) برای صدور مجوز اقدام به TPM ارسال می‌شود. این گزینه می‌تواند برای جلوگیری از بروز مشکلات در هنگام استفاده از نشست‌های بدون نمک (unsalted) در حالت OpenSSL FIPS به کار رود. اگر از مقادیر auth استفاده می‌شود، باید یک نشست نمک‌دار (salted) برای احراز هویت استفاده شود.
•
-R، --autoflush: فعال‌سازی پاک‌سازی خودکار (autoflush) برای اشیاء موقتی ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه (context file) بارگذاری شود، شیء موقتی والد نیز پاک‌سازی خواهد شد. همچنین در صورتی که متغیر محیطی TPM2TOOLS_AUTOFLUSH روی yes یا true تنظیم شده باشد، autoflush فعال می‌شود. اطلاعاتی که بسیاری از کاربران ممکن است انتظار داشته باشند.

رابط TCTI یا “رابط انتقال” (Transmission Interface) سازوکار ارتباطی با TPM است. TCTIها را می‌توان برای ارتباط با TPM از طریق بسترهای مختلف تغییر داد.

برای کنترل TCTI، ابزارها اولویت‌های زیر را در نظر می‌گیرند:

1.
گزینهٔ خط فرمان -T یا --tcti
2.
متغیر محیطی: TPM2TOOLS_TCTI.

نکته: گزینهٔ خط فرمان همواره بر متغیر محیطی برتری داشته و آن را بازنویسی می‌کند.

TCTIهای شناخته‌شدهٔ فعلی عبارتند از:

•
tabrmd - مدیر منابع، تحت نام tabrmd. توجه داشته باشید که tabrmd و abrmd به عنوان نام tcti مترادف یکدیگرند.
•
mssim - معمولاً برای ارتباط با شبیه‌ساز نرم‌افزاری TPM استفاده می‌شود.
•
device - برای برقراری ارتباط مستقیم با فایل دستگاه TPM به کار می‌رود.
•
none - هیچ اتصالی با TPM برقرار نمی‌کند. برخی ابزارها امکان استفاده از گزینه‌های بدون نیاز به TPM (خارج از TPM) را فراهم می‌کنند و در نتیجه از عدم استفاده از TCTI پشتیبانی می‌نمایند. ابزارهایی که از این قابلیت پشتیبانی نمی‌کنند، در صورت تلاش برای استفاده بدون اتصال TCTI با خطا مواجه می‌شوند. از هیچ گزینه‌ای پشتیبانی نمی‌کند و باید دقیقاً به صورت متن “none” ارائه شود.

آرگومان‌های مربوط به گزینهٔ خط فرمان یا متغیر محیطی به فرم زیر هستند:

<tcti-name>:<tcti-option-config>

مشخص کردن یک رشتهٔ خالی برای هر یک از <tcti-name> یا <tcti-option-config> باعث می‌شود به ترتیب مقدار پیش‌فرض برای آن بخش استفاده شود..SS "پیش‌فرض‌های TCTI (TCTI Defaults)" هنگامی که یک TCTI مشخص نشده باشد، TCTI پیش‌فرض با استفاده از معناشناسی dlopen(3) جستجو می‌شود. ابزارها TCTIهای tabrmd، device و mssim را به همان ترتیب جستجو کرده و از نخستین موردِ یافت‌شده استفاده می‌کنند. می‌توانید با استفاده از گزینهٔ -v برای چاپ اطلاعات نسخه، بررسی کنید که کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” مشخص خواهد کرد که کدام‌یک از TCTIهای یادشده پیش‌فرض است.

هر TCTI که رابط پویای TCTI را پیاده‌سازی کند می‌تواند بارگذاری شود. ابزارها در داخل از dlopen(3) استفاده می‌کنند، و مقدار خام tcti-name برای جستجو به کار می‌رود. بنابراین، این مقدار می‌تواند مسیری به کتابخانهٔ اشتراکی یا نام کتابخانه‌ای باشد که بر اساس معناشناسی dlopen(3) قابل درک است.

این مجموعه از گزینه‌ها برای پیکربندی پودمان‌های مختلف و شناخته‌شدهٔ TCTI موجود استفاده می‌شوند:

•
device: برای TCTI دستگاه، فایل دستگاه نویسه‌ای TPM برای استفاده توسط TCTI دستگاه می‌تواند مشخص شود. پیش‌فرض /dev/tpm0 است.

مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0”

•
mssim: برای TCTI شبیه‌ساز mssim، نام دامنه یا نشانی IP و شمارهٔ درگاهی که توسط شبیه‌ساز استفاده می‌شود را می‌توان مشخص کرد. پیش‌فرض‌ها 127.0.0.1 و 2321 هستند.

مثال: -T mssim:host=localhost,port=2321 یا export TPM2TOOLS_TCTI=“mssim:host=localhost,port=2321”

•
abrmd: برای TCTI از نوع abrmd، قالب رشتهٔ پیکربندی به صورت مجموعه‌ای از جفت‌های سادهٔ کلید-مقدار است که با نویسهٔ «,» از هم جدا می‌شوند. هر رشتهٔ کلید و مقدار با نویسهٔ «=» از یکدیگر تفکیک می‌گردند.
•
پودمان TCTI abrmd از دو کلید پشتیبانی می‌کند:
1.
`bus_name' : نام سرویس tabrmd روی گذرگاه (یک رشته).
2.
`bus_type' : نوع نمونهٔ dbus (یک رشته) که به `session' و `system' محدود است.

مشخص کردن نام tcti مربوط به tabrmd و رشتهٔ پیکربندی bus_name=com.example.FooBar:

\--tcti=tabrmd:bus_name=com.example.FooBar

مشخص کردن tcti پیش‌فرض (abrmd) و رشتهٔ پیکربندی bus_type=session:

\--tcti:bus_type=session

نکته: نام‌های abrmd و tabrmd مترادف هستند. پودمان‌های گوناگون شناخته‌شدهٔ TCTI.

انتخاب قالب برای فایل خروجی امضا. tss (پیش‌فرض) یک حباب دادهٔ دودویی (binary blob) مطابق با مشخصات TPM 2.0 و هرگونه فاصله‌گذاری احتمالی کامپایلر تولید خواهد کرد. گزینهٔ plain داده‌های خام امضا را همان‌گونه که توسط الگوریتم رمزنگاری استفاده‌شده تعریف شده است خروجی می‌دهد.

tpm2_createprimary -C e -c primary.ctx
tpm2_create -G rsa -u rsa.pub -r rsa.priv -C primary.ctx
tpm2_load -C primary.ctx -u rsa.pub -r rsa.priv -c rsa.ctx
echo "my message" > message.dat
tpm2_sign -c rsa.ctx -g sha256 -o sig.rssa message.dat
tpm2_verifysignature -c rsa.ctx -g sha256 -s sig.rssa -m message.dat

openssl ecparam -name prime256v1 -genkey -noout -out private.ecc.pem
openssl ec -in private.ecc.pem -out public.ecc.pem -pubout
# Generate a hash to sign
echo "data to sign" > data.in.raw
sha256sum data.in.raw | awk '{ print "000000 " $1 }' | \
xxd -r -c 32 > data.in.digest
# Load the private key for signing
tpm2_loadexternal -Q -G ecc -r private.ecc.pem -c key.ctx
# Sign in the TPM and verify with OSSL
tpm2_sign -Q -c key.ctx -g sha256 -d -f plain -o data.out.signed data.in.digest
openssl dgst -verify public.ecc.pem -keyform pem -sha256 \
-signature data.out.signed data.in.raw

ابزارها می‌توانند هریک از کدهای زیر را بازگردانند:

•
0 - موفقیت‌آمیز.
•
1 - خطای عمومی نامشخص.
•
2 - خطای کار با گزینه‌ها.
•
3 - خطای احراز هویت.
•
4 - خطای مرتبط با TCTI.
•
5 - طرح‌وارهٔ (scheme) پشتیبانی‌نشده. مربوط به tpm2_testparams..SH "گزارش باگ‌ها (BUGS)" مشکلات گیت‌هاب (Github Issues)

مراجعه به فهرست پستی (Mailing List)

این اثر تحت مجوز Creative Commons Attribution 4.0 International License (CC BY 4.0) قرار دارد.

tpm2-tools