شرح حالة التوقيع الرقمي في PDF ومدى موثوقيته
قد تبدو نتيجة توقيع PDF متناقضة؛ فقد يكون التوقيع صحيحاً من الناحية التشفيرية مع بقاء هوية الموقّع مجهولة، أو قد تكون الشهادة منتهية رغم عدم تغيير المستند.
شغّل الأداة مجانًا
تحوّل هذه الإمكانية أربع علامات تحقق شائعة إلى تقييم واضح للثقة ونتائج منفصلة وخطوة عملية تالية. وهي لا تعيد فحص ملف PDF أو الشهادة، بل تشرح الأدلة التي أصدرها برنامج التحقق لديكم بالفعل، كي تميّزوا بين سلامة المستند وهوية الموقّع والفترة الزمنية لصلاحية الشهادة قبل الاعتماد على الملف الموقّع.
افصلوا بين صلاحية التوقيع وسلامة المستند
تبيّن علامة الصلاحية ما إذا اجتاز التوقيع الفحص التشفيري، لكنها لا تقدّم وحدها حكماً كاملاً على الثقة. أما علامة التعديل بعد التوقيع فتجيب عن سؤال آخر: هل يختلف المستند الحالي عن الحالة التي شملها التوقيع أصلاً؟ إذا أُبلغ عن تعديل، فلا ينبغي اعتبار ملف PDF الحالي هو النسخة الموقّعة، حتى إن أمكن التحقق رياضياً من كائن التوقيع. كما أن كون علامة الصلاحية خاطئة أمر حاسم، إذ لا يعود التوقيع دليلاً يعتمد عليه لسلامة المحتوى. وإذا كانت الصلاحية صحيحة ولم يظهر تعديل، فإن الأدلة تؤيد السلامة، لكن هوية الموقّع وتوقيت الشهادة قد يحتاجان إلى مراجعة. لذلك تمنح النتيجة الأولوية لفشل التشفير أو للتعديل، ثم تشرح كل علامة مقدمة على حدة بدلاً من اختزال حالات مختلفة في إشارة خضراء أو حمراء مبهمة.
ميّزوا الموقّع المجهول من التوقيع التالف
الموقّع المجهول تحذير يتعلق بالهوية وسلسلة الثقة، وليس بالضرورة دليلاً على تغيير ملف PDF. قد يؤكد برنامج التحقق صحة التشفير، لكنه لا يملك شهادة الجذر أو الشهادة الوسيطة أو سياسة المؤسسة أو قرار الثقة المحلي اللازم للتعرف إلى الموقّع. عندئذ قد يكون المستند سليماً بينما تظل هوية الشخص أو المؤسسة غير مؤكدة. تحققوا من سلسلة الشهادات بصورة مستقلة، وقارنوا بيانات الموقّع بمصدر موثوق، واحصلوا على المستند عبر قناة موثقة. لا يكفي الاسم الظاهر لإثبات الهوية. وفي المقابل، لا يثبت هذا التحذير وحده وجود عبث متعمد. تصنّف الإمكانية الحالة على أنها تحتاج إلى مراجعة ما لم يوجد خلل أشد في السلامة. وإذا كانت العلامة خاطئة صراحة، فالنتيجة تسجل فقط أن برنامج التحقق لم يصف الموقّع بالمجهول، ولا تفترض معلومات غير مقدمة عن جهة التصديق أو الإلغاء أو السياسة.
فسّروا انتهاء الشهادة ضمن التسلسل الزمني
تحتاج الشهادة المنتهية إلى دليل زمني. فانتهاؤها اليوم لا يثبت تلقائياً أن التوقيع كان غير صالح عند إنشائه. يمكن لختم زمني موثوق أن يثبت أن التوقيع تم خلال فترة الصلاحية، كما قد تحفظ بيانات التحقق طويل الأمد أدلة سلسلة الشهادات وحالة الإلغاء. ومن دون ذلك يبقى سؤال مهم بلا جواب. لذلك توصي النتيجة بفحص الختم الزمني وتواريخ الشهادة ومعلومات الإلغاء، بدلاً من وصف كل شهادة منتهية بالاحتيال. ولتركيب العلامات أهمية: اجتماع انتهاء الشهادة مع مجهولية الموقّع يثير مسألتي الهوية والتوقيت، أما وجود تعديل في المستند فيجعل خلل السلامة هو الأهم لأن الملف الحالي ليس الحالة الموقّعة. تعاملوا مع النتيجة بوصفها إرشاداً بشأن العلامات المدخلة، لا بديلاً من برنامج تحقق أو استشارة قانونية. وفي العقود الحساسة والسجلات المنظمة، احتفظوا بالأصل والتقرير الكامل وراجعوا الفريق المختص قبل قبول المستند.
حالات الاستخدام
توضيح إشارة تحقق مربكة
حوّلوا عدة تحذيرات تقنية إلى تقييم مقروء من دون الادعاء بإعادة التحقق من ملف PDF.
فرز المستندات الموقّعة
حدّدوا الملفات التي ينبغي رفضها وتلك التي تتطلب مراجعة الموقّع أو الختم الزمني.
إضافة سياق إلى سجل التدقيق
احفظوا شرحاً حتمياً بجانب العلامات الخام كي يفهم المراجعون لاحقاً سبب القرار.
الأسئلة الشائعة
هل تتحقق هذه الإمكانية من ملف PDF نفسه؟
لا. إنها تشرح علامات صادرة عن برنامج تحقق، ولا تفحص الملف أو الشهادة أو الختم الزمني أو خدمة الإلغاء.
هل يصح التوقيع إذا كان الموقّع مجهولاً؟
نعم. قد تنجح سلامة التشفير رغم عجز البرنامج عن بناء سلسلة هوية موثوقة للموقّع.
هل تجعل الشهادة المنتهية التوقيع باطلاً دائماً؟
لا. قد يثبت ختم زمني موثوق أن الشهادة كانت صالحة عند التوقيع، لكن يجب فحص هذا الدليل.
ماذا يحدث إذا عُدّل PDF بعد التوقيع؟
لا تعتمدوا على المستند الحالي بوصفه الحالة المشمولة بالتوقيع. احصلوا على الأصل وتحققوا منه مجدداً.
ما كلفة طلب API؟
تبلغ كلفة كل طلب API $0.002. تكون النتيجة حتمية عند تقديم العلامات نفسها.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/signature-verify-status-explain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"valid":true,"modified_since_signing":false}'const res = await fetch("https://api.kit.forhosting.com/pdf/signature-verify-status-explain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"valid": true,
"modified_since_signing": false
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/signature-verify-status-explain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"valid": true,
"modified_since_signing": false
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/signature-verify-status-explain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"valid":true,"modified_since_signing":false}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"valid":true,"modified_since_signing":false}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/signature-verify-status-explain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"valid": true,
"modified_since_signing": false
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.signature_verify_status_explain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
max_pages | 200 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |