الطريقة: Privatekeysign
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تتم إزالة تغليف المفتاح الخاص المغلَّف ثم يتم توقيع الملخّص الذي يقدّمه العميل.
طلب HTTP
POST https://KACLS_URL/privatekeysign
استبدِل KACLS_URL
بعنوان URL الخاص بخدمة قائمة التحكّم بالوصول إلى مفاتيح التشفير (KACLS).
مَعلمات المسار
بلا عُري
نص الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
تمثيل JSON |
{
"authentication": string,
"authorization": string,
"algorithm": string,
"digest": string,
"rsa_pss_salt_length": integer,
"reason": string,
"wrapped_private_key": string
}
|
الحقول |
authentication |
string
رمز JWT صادر عن موفِّر الهوية (IdP) يؤكّد هوية المستخدم. يمكنك الاطّلاع على رموز المصادقة.
|
authorization |
string
ملف JWT يؤكّد أنّ المستخدم مسموح له بفك تشفير مفتاح resource_name . اطّلِع على رموز التفويض.
|
algorithm |
string
الخوارزمية التي تم استخدامها لتشفير مفتاح تشفير البيانات (DEK) في التشفير المغلّف.
|
digest |
string
ملخّص الرسالة المشفّر باستخدام Base64 ملخّص SignedAttributes بترميز DER هذه القيمة غير مبطّنة. الحدّ الأقصى للحجم: 128 بايت
|
rsa_pss_salt_length |
integer
(اختياري) طول القيمة العشوائية التي سيتم استخدامها، إذا كانت خوارزمية التوقيع هي RSASSA-PSS. إذا لم تكن خوارزمية التوقيع RSASSA-PSS، سيتم تجاهل هذا الحقل.
|
reason |
string (UTF-8)
سلسلة JSON تمريرية توفّر سياقًا إضافيًا حول العملية. يجب تنظيف ملف JSON المقدَّم قبل عرضه. الحد الأقصى للحجم: 1 كيلوبايت
|
wrapped_private_key |
string
المفتاح الخاص المشفَّر بترميز base64 الحد الأقصى للحجم: 8 كيلوبايت
يعود تحديد تنسيق المفتاح الخاص أو المفتاح الخاص المغلف إلى عملية تنفيذ خدمة قائمة التحكّم بالوصول إلى مفاتيح التشفير (KACLS). ويتم التعامل مع هذا المحتوى على أنّه كائن ثنائي كبير غير شفاف من جهة العميل ومن جهة Gmail.
|
نص الاستجابة
في حال نجاح العملية، تعرض هذه الطريقة توقيعًا بترميز base64.
في حال تعذُّر إتمام العملية، سيتم عرض
ردّ خطأ منظَّم.
تمثيل JSON |
{
"signature": string
}
|
الحقول |
signature |
string
توقيع بترميز base64
|
مثال
يقدّم هذا المثال نموذجًا لطلب وردّ خاصين بطريقة privatekeysign
.
طلب
{
"wrapped_private_key": "wHrlNOTI9mU6PBdqiq7EQA...",
"digest": "EOBc7nc+7JdIDeb0DVTHriBAbo/dfHFZJgeUhOyo67o=",
"authorization": "eyJhbGciOi...",
"authentication": "eyJhbGciOi...",
"algorithm": "SHA256withRSA",
"reason": "sign"
}
الردّ
{
"signature": "LpyCSy5ddy82PIp/87JKaMF4Jmt1KdrbfT1iqpB7uhVd3OwZiu+oq8kxIzB7Lr0iX4aOcxM6HiUyMrGP2PG8x0HkpykbUKQxBVcfm6SLdsqigT9ho5RYw20M6ZXNWVRetFSleKex4SRilTRny38e2ju/lUy0KDaCt1hDUT89nLZ1wsO3D1F3xk8J7clXv5fe7GPRd1ojo82Ny0iyVO7y7h1lh2PACHUFXOMzsdURYFCnxhKAsadccCxpCxKh5x8p78PdoenwY1tnT3/X4O/4LAGfT4fo98Frxy/xtI49WDRNZi6fsL6BQT4vS/WFkybBX9tXaenCqlRBDyZSFhatPQ=="
}
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-04 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-04 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eUnwraps a wrapped private key and uses it to sign a provided digest.\u003c/p\u003e\n"],["\u003cp\u003eRequires authentication and authorization tokens for security.\u003c/p\u003e\n"],["\u003cp\u003eAccepts the signing algorithm, digest, salt length (for RSASSA-PSS), reason, and the wrapped private key in the request body.\u003c/p\u003e\n"],["\u003cp\u003eReturns a base64-encoded signature upon successful operation.\u003c/p\u003e\n"],["\u003cp\u003eProvides a structured error reply if the operation fails.\u003c/p\u003e\n"]]],["The `privatekeysign` method unwraps a private key and signs a client-provided digest. It requires a POST request to the `/privatekeysign` endpoint with a JSON body. The body includes `authentication`, `authorization`, `algorithm`, `digest`, `rsa_pss_salt_length` (optional), `reason`, and the `wrapped_private_key`. Upon success, a JSON response containing a base64-encoded `signature` is returned; otherwise, a structured error reply is returned.\n"],null,["# Method: privatekeysign\n\nUnwraps a wrapped private key and then signs the digest provided by the client.\n\n### HTTP request\n\n`POST https://`\u003cvar translate=\"no\"\u003eKACLS_URL\u003c/var\u003e`/privatekeysign`\n\nReplace \u003cvar translate=\"no\"\u003eKACLS_URL\u003c/var\u003e with the Key Access Control List\nService (KACLS) URL.\n\n### Path parameters\n\nNone.\n\n### Request body\n\nThe request body contains data with the following structure:\n\n| JSON representation ||\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|\n| ``` { \"authentication\": string, \"authorization\": string, \"algorithm\": string, \"digest\": string, \"rsa_pss_salt_length\": integer, \"reason\": string, \"wrapped_private_key\": string } ``` |\n\n| Fields ||\n|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `authentication` | `string` A JWT issued by the identity provider (IdP) asserting who the user is. See [authentication tokens](/workspace/cse/reference/authentication-tokens). |\n| `authorization` | `string` A JWT asserting that the user is allowed to unwrap a key for `resource_name`. See [authorization tokens](/workspace/cse/reference/authorization-tokens). |\n| `algorithm` | `string` The algorithm that was used to encrypt the Data Encryption Key (DEK) in envelope encryption. |\n| `digest` | `string` Base64-encoded message digest. The digest of the DER encoded `SignedAttributes`. This value is unpadded. Max size: 128B |\n| `rsa_pss_salt_length` | `integer` (Optional) The salt length to use, if the signature algorithm is RSASSA-PSS. If the signature algorithm is not RSASSA-PSS, this field is ignored. |\n| `reason` | `string (UTF-8)` A passthrough JSON string providing additional context about the operation. The JSON provided should be sanitized before being displayed. Max size: 1 KB. |\n| `wrapped_private_key` | `string` The base64-encoded wrapped private key. Max size: 8 KB. The format of the private key or the wrapped private key is up to the Key Access Control List Service (KACLS) implementation. On the client and on the Gmail side, this is treated as an opaque blob. |\n\n### Response body\n\nIf successful, this method returns a base64-encoded signature.\n\nIf the operation fails, a\n[structured error reply](/workspace/cse/reference/structured-errors)\nis returned.\n\n| JSON representation ||\n|---------------------------------|---|\n| ``` { \"signature\": string } ``` |\n\n| Fields ||\n|-------------|--------------------------------------|\n| `signature` | `string` A base64-encoded signature. |\n\n### Example\n\nThis example provides a sample request and response for the `privatekeysign`\nmethod.\n\n#### Request\n\n {\n \"wrapped_private_key\": \"wHrlNOTI9mU6PBdqiq7EQA...\",\n \"digest\": \"EOBc7nc+7JdIDeb0DVTHriBAbo/dfHFZJgeUhOyo67o=\",\n \"authorization\": \"eyJhbGciOi...\",\n \"authentication\": \"eyJhbGciOi...\",\n \"algorithm\": \"SHA256withRSA\",\n \"reason\": \"sign\"\n }\n\n#### Response\n\n {\n \"signature\": \"LpyCSy5ddy82PIp/87JKaMF4Jmt1KdrbfT1iqpB7uhVd3OwZiu+oq8kxIzB7Lr0iX4aOcxM6HiUyMrGP2PG8x0HkpykbUKQxBVcfm6SLdsqigT9ho5RYw20M6ZXNWVRetFSleKex4SRilTRny38e2ju/lUy0KDaCt1hDUT89nLZ1wsO3D1F3xk8J7clXv5fe7GPRd1ojo82Ny0iyVO7y7h1lh2PACHUFXOMzsdURYFCnxhKAsadccCxpCxKh5x8p78PdoenwY1tnT3/X4O/4LAGfT4fo98Frxy/xtI49WDRNZi6fsL6BQT4vS/WFkybBX9tXaenCqlRBDyZSFhatPQ==\"\n }"]]