Verify APIXAdES Doğrulama

XAdES (XML) İmza Doğrulama

XAdES (XML Advanced Electronic Signatures) formatındaki XML belgelerindeki dijital imzaları doğrulama.

Endpoint

POST /api/v1/verify/xades/simple

Request Parameters

ParametreTipZorunluVarsayılanAçıklama
signedDocumentMultipartFile-İmzalı XML belgesi
originalDocumentMultipartFile-Orijinal belge (detached signature için, opsiyonel)
levelStringSIMPLEDoğrulama seviyesi: SIMPLE veya COMPREHENSIVE

İmza Tipleri

DSS otomatik olarak imza tipini tespit eder:

  • Enveloped: İmza XML içinde gömülü (en yaygın)
  • Enveloping: İmza XML’i sarıyor
  • Detached: İmza ayrı bir dosyada, orijinal belge ayrı

Detached İmza

Detached imza tipi için originalDocument parametresi kullanılmalıdır. DSS bazı durumlarda otomatik tespit edebilir ancak orijinal belgenin sağlanması daha güvenilir sonuçlar verir.

curl -X POST http://localhost:8086/api/v1/verify/xades/simple \
  -F "signedDocument=@signature.xml" \
  -F "originalDocument=@original-document.xml" \
  -F "level=COMPREHENSIVE"

Response

Simple Level

{
  "valid": true,
  "status": "VALID",
  "signatureType": "XADES",
  "verificationTime": "2024-11-08T10:30:00Z",
  "signatures": [
    {
      "signatureId": "id-1234",
      "valid": true,
      "signatureFormat": "XAdES-BASELINE-B",
      "signingTime": "2024-11-07T14:20:00Z"
    }
  ]
}

Comprehensive Level

{
  "valid": true,
  "status": "VALID",
  "signatureType": "XADES",
  "verificationTime": "2024-11-08T10:30:00Z",
  "signatures": [
    {
      "signatureId": "id-1234",
      "valid": true,
      "signatureFormat": "XAdES-BASELINE-B",
      "signingTime": "2024-11-07T14:20:00Z",
      "indication": "TOTAL_PASSED",
      "subIndication": null,
      "certificate": {
        "subjectDN": "CN=Test User",
        "issuerDN": "CN=Test CA",
        "validFrom": "2024-01-01T00:00:00Z",
        "validTo": "2025-12-31T23:59:59Z"
      },
      "qualificationDetails": {
        "qualificationLevel": "QES"
      },
      "validationDetails": {
        "certificateChainValid": true,
        "revocationChecked": true,
        "timestampValid": true
      }
    }
  ]
}

Örnek Kullanım

cURL

# Enveloped/Enveloping imza (basit)
curl -X POST http://localhost:8086/api/v1/verify/xades/simple \
  -F "signedDocument=@signed-document.xml" \
  -F "level=SIMPLE"
 
# Detached imza (kapsamlı)
curl -X POST http://localhost:8086/api/v1/verify/xades/simple \
  -F "signedDocument=@signature.xml" \
  -F "originalDocument=@original-document.xml" \
  -F "level=COMPREHENSIVE"

JavaScript (Fetch)

const formData = new FormData();
formData.append('signedDocument', signedFile);
formData.append('originalDocument', originalFile); // Detached için (opsiyonel)
formData.append('level', 'COMPREHENSIVE');
 
const response = await fetch('http://localhost:8086/api/v1/verify/xades/simple', {
  method: 'POST',
  body: formData
});
 
const result = await response.json();
console.log(result);

Doğrulama Seviyeleri

SIMPLE

  • Hızlı doğrulama - Düşük latency, yüksek throughput
  • Temel bilgiler döndürür:
    • İmza geçerlilik durumu (valid/invalid)
    • İmza formatı (XAdES-BASELINE-B, XAdES-BASELINE-T, vb.)
    • İmzalama zamanı
    • İmza ID’leri
    • İmza tipi (enveloped, enveloping, detached)
  • Sertifika zinciri doğrulaması otomatik yapılır ancak detaylar response’a dahil edilmez
  • Kullanım senaryosu: e-Fatura toplu doğrulama, hızlı durum kontrolü

COMPREHENSIVE

  • Detaylı doğrulama - Tam analiz ve raporlama
  • Tüm bilgileri içerir:
    • Simple level bilgileri
    • Sertifika detayları (Subject DN, Issuer DN, geçerlilik tarihleri)
    • Doğrulama detayları (certificate chain valid, revocation checked, timestamp valid)
    • Qualification details (QES, AdES, AdESQC)
    • Indication ve SubIndication değerleri
    • Hatalar ve uyarılar
  • Sertifika zinciri tam olarak raporlanır
  • Kullanım senaryosu: Compliance kontrolü, audit trail, detaylı analiz

Not: Her iki seviyede de sertifika zinciri doğrulaması DSS tarafından otomatik yapılır. level parametresi sadece response içeriğini etkiler.