JOSE-JWS-SIG(1)   JOSE-JWS-SIG(1)

jose-jws-sig - امضا کردن داده‌ها با استفاده از یک یا چند کلید JWK در فرمت JWS

jose jws sig [-i JWS] [-I PAY] [-s SIG] -k JWK [-o JWS] [-O PAY] [-c]

دستور jose jws sig یک پی‌لود (بار داده) را با استفاده از یک یا چند کلید JWK امضا می‌کند. پی‌لود می‌تواند به صورت رمزگشایی‌شده (-I) یا تعبیه‌شده در یک JWS موجود (-i) ارائه شود.

با مشخص کردن گزینه -O می‌توان یک JWS جداشده (detached) ایجاد کرد. در این حالت، پی‌لود رمزگشایی‌شده در خروجی مشخص‌شده نوشته می‌شود و درون JWS گنجانده نخواهد شد.

اگر تنها از یک کلید استفاده شود (-k)، می‌توان JWS حاصل را با استفاده از گزینه -c در قالب سریال‌سازی فشرده JWS (JWS Compact Serialization) خروجی داد.

این دستور از یک رویکرد مبتنی بر الگو برای ساخت JWS استفاده می‌کند. شما می‌توانید الگوهایی برای خود JWS (-i) یا برای شیء امضای JWS (-s) مشخص کنید. ویژگی‌های مشخص‌شده در هر یک از این الگوها بدون تغییر در خروجی ظاهر می‌شوند. یک استثنا در این قاعده این است که هدر محافظت‌شده JWS (JWS Protected Header) باید به شکل رمزگشایی‌شده در الگوی شیء امضای JWS مشخص شود. این دستور به طور خودکار آن را به عنوان بخشی از فرایند امضا کدگذاری می‌کند.

اگر یک پارامتر هدر JOSE (از طریق گزینه‌های -i یا -s) مشخص کنید که بر ساخت تأثیر بگذارد، این دستور تلاش می‌کند بر اساس این پارامتر همانند یک پیکربندی رفتار کند. در حال حاضر، jose رفتار خود را برای پارامتر هدر JOSE با عنوان "alg" تغییر می‌دهد (به بخش 4.1.1 از RFC 7515 مراجعه کنید).

با این حال، نیازی به ارائه هیچ الگویی نیست: jose jws sig به طور خودکار پارامتر "alg" را با استنتاج الگوریتم مناسب از کلیدهای JWK ورودی پر می‌کند. بنابراین، گزینه‌های -i و -s معمولاً باید برای ارائه فراداده‌های توسعه‌یافته استفاده شوند.

امکان مشخص کردن یک JWS موجود به عنوان الگوی ورودی JWS (-i) وجود دارد. این کار امکان افزودن امضاهای جدید به یک JWS موجود را فراهم می‌کند.

•-i JSON, --input=JSON : تجزیه الگوی JWS از رشته JSON
•-i FILE, --input=FILE : خواندن الگوی JWS از FILE
•-i -, --input=- : خواندن الگوی JWS از ورودی استاندارد
•-I FILE, --detached=FILE : خواندن پی‌لود رمزگشایی‌شده از FILE
•-I -, --detached=- : خواندن پی‌لود رمزگشایی‌شده از ورودی استاندارد
•-s JSON, --signature=JSON : تجزیه الگوی امضای JWS از رشته JSON
•-s FILE, --signature=FILE : خواندن الگوی امضای JWS از FILE
•-s -, --signature=- : خواندن الگوی امضای JWS از ورودی استاندارد
•-k FILE, --key=FILE : خواندن JWK (یا مجموعه‌کلید JWKSet) از FILE
•-k -, --key=- : خواندن JWK (یا مجموعه‌کلید JWKSet) از ورودی استاندارد
•-o FILE, --output=FILE : نوشتن JWS در FILE
•-o -, --output=- : نوشتن JWS در خروجی استاندارد (پیش‌فرض)
•-O FILE, --detach=FILE : جدا کردن پی‌لود و رمزگشایی در FILE
•-O -, --detach=- : جدا کردن پی‌لود و رمزگشایی در خروجی استاندارد
•-c, --compact : خروجی دادن JWS با استفاده از سریال‌سازی فشرده

امضا کردن داده‌ها با یک کلید متقارن با استفاده از سریال‌سازی JSON در JWS:

$ jose jwk gen -i '{"alg":"HS256"}' -o key.jwk
$ jose jws sig -I msg.txt -k key.jwk -o msg.jws

امضا کردن داده‌ها با استفاده از سریال‌سازی فشرده JWS به صورت جداشده (detached):

$ jose jws sig -I msg.txt -k key.jwk -O /dev/null -c -o msg.jws

امضا کردن با دو کلید:

$ jose jwk gen -i '{"alg":"ES256"}' -o ec.jwk
$ jose jwk gen -i '{"alg":"RS256"}' -o rsa.jwk
$ jose jws sig -I msg.txt -k ec.jwk -k rsa.jwk -o msg.jws

Nathaniel McCallum <npmccallum@redhat.com>

jose-jws-sig(1), jose-jws-ver(1)

06/09/2026