tpm2_print(1) General Commands Manual tpm2_print(1)

tpm2_print - چاپ ساختارهای داده TPM

tpm2_print [گزینه‌ها] [آرگومان یا STDIN]

دستور tpm2_print(1) یک ساختار داده TPM را رمزگشایی کرده و عناصر درون آن را به صورت YAML در خروجی استاندارد (stdout) چاپ می‌کند. می‌توان یک مسیر فایل شامل یک شیء TPM یا یک کلید خصوصی TSS2 در قالب PEM را به عنوان آرگومان مسیر تعیین کرد. در صورت عدم تعیین، داده‌ها از stdin خوانده می‌شوند.

•
-t، --type:

الزامی است. نوع ساختار داده. این گزینه از آرگومان‌های زیر پشتیبانی می‌کند:

•
TPMS_ATTEST
•
TPMS_CONTEXT
•
TPM2B_PUBLIC
•
TPMT_PUBLIC
•
TSSPRIVKEY_OBJ
•
ESYS_TR
•
ARGUMENT: آرگومان خط فرمان، مسیر داده TPM را مشخص می‌کند.
•
-f، --format:

انتخاب قالب برای فایل خروجی کلید عمومی. مقدار «tss» (پیش‌فرض) یک حباب دودویی (binary blob) را مطابق با مشخصات TPM 2.0 در خروجی تولید می‌کند. مقدار «pem» یک کلید عمومی کدگذاری‌شده PEM سازگار با OpenSSL تولید می‌کند. مقدار «der» یک کلید عمومی کدگذاری‌شده DER سازگار با OpenSSL تولید می‌کند. مقدار «tpmt» یک حباب دودویی از ساختار TPMT_PUBLIC ارجاع‌شده در مشخصات TPM 2.0 تولید می‌کند.

قالب کلید عمومی. این گزینه تنها زمانی کار می‌کند که گزینه --type/-t روی TPM2B_PUBLIC یا TPMT_PUBLIC تنظیم شده باشد.

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

•
اگر آرگومان مسیر یک فایل باشد، فایل به عنوان یک شیء گذرا (transient object) بازیابی‌شدهٔ TPM بارگذاری می‌شود.
•
اگر آرگومان تطابق پیشوندی با یکی از موارد زیر باشد:
•
owner: سلسله‌مراتب مالک (owner hierarchy)
•
platform: سلسله‌مراتب پلتفرم (platform hierarchy)
•
endorsement: سلسله‌مراتب تایید (endorsement hierarchy)
•
lockout: شیء پایدار کنترل قفل (lockout control persistent object)
•
اگر آرگومان بتواند به‌صورت یک عدد بارگذاری شود، به عنوان یک دستگیره در نظر گرفته خواهد شد (مانند 0x81010013) و مستقیماً استفاده می‌شود._OBJECT_.

مجوز برای استفاده از یک شیء در TPM 2.0 می‌تواند به ۳ شکل مختلف ارائه شود: 1. گذرواژه (Password) 2. کد HMAC 3. نشست‌ها (Sessions)

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

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

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

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

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

foobar
str:foobar

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

hex:1122334455667788

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

# برای استفاده از stdin و درخواست اعلان ورود:
file:-
# برای استفاده از یک فایل از یک مسیر:
file:path/to/password/file
# برای ارسال گذرواژه از طریق stdin با echo:
echo foobar | tpm2_tool -p file:-
# برای استفاده از here-string بش از طریق stdin:
tpm2_tool -p file:- <<< foobar

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

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

session:session.ctx

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

session:session.ctx+mypassword

برای استفاده از یک فایل بافتار نشست به نام session.ctx و ارسال مقدار auth از نوع 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 با sha256 روی بانک‌های 0، 1، 2 و 3 از یک مشخص‌کننده به صورت زیر استفاده کنید:

pcr:sha256:0,1,2,3

مشخص کردن AUTH.

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

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

استفاده موفقیت‌آمیز از ویژگی صفحات راهنما نیازمند آن است که این صفحات نصب شده باشند یا در 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) برای اشیاء گذرای ایجادشده توسط دستور. اگر یک شیء والد از یک فایل بافتار بارگذاری شود، شیء والد گذرا نیز تخلیه خواهد شد. تخلیه خودکار همچنین می‌تواند با تنظیم متغیر محیطی TPM2TOOLS_AUTOFLUSH بر روی yes یا true فعال شود. اطلاعاتی که بسیاری از کاربران ممکن است انتظار داشته باشند.

رابط 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 را دارند و بنابراین از عدم استفاده از TCTI پشتیبانی می‌کنند. ابزارهایی که از آن پشتیبانی نمی‌کنند، در صورت تلاش برای استفاده بدون اتصال TCTI با خطا مواجه می‌شوند. این حالت از هیچ گزینه‌ای پشتیبانی نمی‌کند و باید حتماً دقیقاً به صورت عبارت “none” ارائه شود.

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

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

مشخص کردن یک رشته خالی برای هر یک از بخش‌های <tcti-name> یا <tcti-option-config> باعث می‌شود که برای آن بخش به ترتیب مقدار پیش‌فرض استفاده شود.

هنگامی که TCTI مشخص نشده باشد، TCTI پیش‌فرض با استفاده از قواعد معنایی dlopen(3) جستجو می‌شود. ابزارها TCTIهای tabrmd، device و mssim را به همین ترتیب جستجو کرده و از اولین موردی که یافت شود استفاده می‌کنند. می‌توانید با استفاده از گزینه -v برای چاپ اطلاعات نسخه، بررسی کنید که کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان می‌دهد که کدام یک از TCTIهای یادشده پیش‌فرض است.

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

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

•
device: برای رابط TCTI از نوع device، می‌توان فایل دستگاه نویسه‌ای TPM را برای استفاده توسط این رابط تعیین کرد. مقدار پیش‌فرض /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، قالب رشته پیکربندی مجموعه‌ای از جفت‌های کلید-مقدار ساده است که با نویسه «,» از هم جدا شده‌اند. رشته‌های کلید و مقدار با نویسه «=» از یکدیگر تفکیک می‌شوند.
•
رابط abrmd TCTI از دو کلید پشتیبانی می‌کند:
1.
«bus_name» : نام سرویس tabrmd بر روی گذرگاه (یک رشته).
2.
«bus_type» : نوع نمونه dbus (یک رشته) محدود به «session» و «system».

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

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

تعیین tcti پیش‌فرض (abrmd) و یک رشته پیکربندی با bus_type=session:

\--tcti:bus_type=session

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

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

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

استفاده موفقیت‌آمیز از ویژگی صفحات راهنما نیازمند آن است که این صفحات نصب شده باشند یا در 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) برای اشیاء گذرای ایجادشده توسط دستور. اگر یک شیء والد از یک فایل بافتار بارگذاری شود، شیء والد گذرا نیز تخلیه خواهد شد. تخلیه خودکار همچنین می‌تواند با تنظیم متغیر محیطی TPM2TOOLS_AUTOFLUSH بر روی yes یا true فعال شود. اطلاعاتی که بسیاری از کاربران ممکن است انتظار داشته باشند.

رابط 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 را دارند و بنابراین از عدم استفاده از TCTI پشتیبانی می‌کنند. ابزارهایی که از آن پشتیبانی نمی‌کنند، در صورت تلاش برای استفاده بدون اتصال TCTI با خطا مواجه می‌شوند. این حالت از هیچ گزینه‌ای پشتیبانی نمی‌کند و باید حتماً دقیقاً به صورت عبارت “none” ارائه شود.

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

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

مشخص کردن یک رشته خالی برای هر یک از بخش‌های <tcti-name> یا <tcti-option-config> باعث می‌شود که برای آن بخش به ترتیب مقدار پیش‌فرض استفاده شود.

هنگامی که TCTI مشخص نشده باشد، TCTI پیش‌فرض با استفاده از قواعد معنایی dlopen(3) جستجو می‌شود. ابزارها TCTIهای tabrmd، device و mssim را به همین ترتیب جستجو کرده و از اولین موردی که یافت شود استفاده می‌کنند. می‌توانید با استفاده از گزینه -v برای چاپ اطلاعات نسخه، بررسی کنید که کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان می‌دهد که کدام یک از TCTIهای یادشده پیش‌فرض است.

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

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

•
device: برای رابط TCTI از نوع device، می‌توان فایل دستگاه نویسه‌ای TPM را برای استفاده توسط این رابط تعیین کرد. مقدار پیش‌فرض /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، قالب رشته پیکربندی مجموعه‌ای از جفت‌های کلید-مقدار ساده است که با نویسه «,» از هم جدا شده‌اند. رشته‌های کلید و مقدار با نویسه «=» از یکدیگر تفکیک می‌شوند.
•
رابط abrmd TCTI از دو کلید پشتیبانی می‌کند:
1.
«bus_name» : نام سرویس tabrmd بر روی گذرگاه (یک رشته).
2.
«bus_type» : نوع نمونه dbus (یک رشته) محدود به «session» و «system».

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

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

تعیین tcti پیش‌فرض (abrmd) و یک رشته پیکربندی با bus_type=session:

\--tcti:bus_type=session

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

tpm2_createprimary -C e -c primary.ctx
tpm2_create -C primary.ctx -u key.pub -r key.priv
tpm2_load -C primary.ctx -u key.pub -r key.priv -c key.ctx
tpm2_quote -c key.ctx -l 0x0004:16,17,18+0x000b:16,17,18 -g sha256 -m msg.dat

tpm2_print -t TPMS_ATTEST msg.dat

tpm2_print -t TPM2B_PUBLIC key.pub

tpm2_readpublic -c key.ctx -f tpmt -o key.tpmt
tpm2_print -t TPMT_PUBLIC key.tpmt

tpm2 print -t TPM2B_PUBLIC -f pem key.pub

tpm2 print -t TSSPRIVKEY_OBJ tssprivkey.pem
tpm2 print -t TSSPRIVKEY_OBJ tssprivkey.pem -f pem > publickey.pem

دستگیره‌های سریالی‌شدهٔ ESYS_TR توسط ابزارهایی مانند گزینهٔ -o در tpm2_evictcontrol و گزینهٔ -t در tpm2_readpublic برگردانده می‌شوند.

tpm2_createprimary -c primary.ctx
tpm2_evictcontrol -c primary.ctx -o primary.tr
tpm2 print -t ESYS_TR primary.tr

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

•
0 - موفقیت.
•
1 - خطای کلی و نامشخص.
•
2 - خطای مدیریت گزینه‌ها.
•
3 - خطای احراز اصالت.
•
4 - خطای مربوط به TCTI.
•
5 - طرح پشتیبانی‌نشده. قابل اعمال بر tpm2_testparams.

tpm2_readpublic(1)، tpm2_quote(1)، tpm2_evictcontrol(1)، tpm2_startauthsession(1)

گزارش اشکالات در گیت‌هاب (Github Issues)

مشاهده فهرست پستی (Mailing List)

این اثر تحت مجوز بین‌المللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0).

tpm2-tools