CoreApiXades (v4.0)

CoreApiXades V4, XML tabanli XAdES imzalama islemlerinin en guncel versiyonudur. V2/V3'teki tum ozelliklere ek olarak imza profilleri (P1-P4), uc farkli imza modu (Enveloped, Enveloping, Detached), tum XAdES seviyeleri (BES, EPES, T, XL, A) ve akilli upgrade onerileri sunar. Imzalama iki adimda gerceklesir: SignStepOne (baslat) ve SignStepThree (bitir).

Temel kavramlar

  • OperationId: Islem kimligi. Bir adim yeni cikti uretiyorsa yanit icinde yeni OperationId doner ve takip eden adimlarda bu yeni deger kullanilmalidir.
  • Imza Modlari: Enveloped (imza XML icine gomulur), Enveloping (veri imza icine gomulur), Detached (imza ayri dosyada, veri referans edilir).
  • Profiller: Turk Elektronik Imza Kullanim Profilleri (P1-P4). Profil secimi, imza seviyesi ve revocation check davranisini belirler.
  • Auth: Tum uc noktalar ApiKey gerektirir.
  • Zarf: Tum yanitlar ApiResult<T> tipindedir:
    • result: T
    • error: string (hata durumunda dolar)

Enum: SignatureLevelForXadesV4

XAdES imza seviyeleri. StepOne'da hedef seviye belirtilir; StepThree sonunda otomatik upgrade edilir.

DegerKodAciklama
BES1Basic Electronic Signature
EPES2Electronic Signature with Explicit Policy
T3ES-T -- Zaman damgali
XL6ES-XL -- Uzun vadeli dogrulama bilgileri dahil
A7ES-A -- Arsiv zaman damgali

Not: CAdES'ten farkli olarak XAdES V4'te C (4) ve X (5) seviyeleri desteklenmez. Numara siralamasi CAdES ile uyumlu tutulmustur.


Enum: XadesProfileV4

Turk Elektronik Imza Kullanim Profilleri (Rehber v1.0).

DegerKodAciklamaMin. SeviyeRevocation
None0Profil yokBES--
P11Profilsiz BESBES--
P22EPES + T, SIL (CRL)TCRL
P33EPES + XL/A, SIL (CRL)XLCRL
P44EPES + XL/A, CISDuP (OCSP)XLOCSP

Enum: XadesSignatureModeV4

XAdES imza modlari. StepOne'da imza modu belirtilir.

DegerKodAciklama
Enveloped0Imza XML dokuman icine gomulur. Giris dosyasi XML olmalidir.
Enveloping1Veri, imzanin ds:Object elemani icine yerlestirilir.
Detached2Imza ayri dosyada, orijinal veri harici referans edilir.

Enum: CadesHashAlgorithmV4

CAdES ile paylasilan hash algoritmasi enum'u.

DegerKod
SHA2560
SHA3841
SHA5122

Imza bilgisi modeli (XadesSignatureInfoV4)

V4 imza listesinde donen her imza asagidaki alanlardan olusur. V2/V3'e gore profil, hash algoritmasi, upgrade onerileri, imza modu ve detached bilgisi eklenmistir.

Properties

  • Name
    entityLabel
    Type
    string
    Description

    Imzanin hiyerarsik etiketi (or. S0, S0:S0, S1).

  • Name
    level
    Type
    string
    Description

    Imza seviyesi kisa kodu (or. BES, T, XL, A).

  • Name
    levelString
    Type
    string
    Description

    Imza seviyesinin tam adi.

  • Name
    subjectRDN
    Type
    string
    Description

    Imzalayanin sertifika subject bilgisi.

  • Name
    citizenshipNo
    Type
    string?
    Description

    (Varsa) TCKN.

  • Name
    timestamped
    Type
    boolean
    Description

    Zaman damgasina sahip olup olmadigi.

  • Name
    claimedSigningTime
    Type
    string?
    Description

    Beyan edilen imza zamani (string).

  • Name
    claimedSigningTimeAsTime
    Type
    datetime?
    Description

    Beyan edilen imza zamani (DateTime).

  • Name
    parentEntity
    Type
    string?
    Description

    Ust imza (seri imzada).

  • Name
    signatureMode
    Type
    string
    Description

    Imza modu: Enveloped, Enveloping veya Detached.

  • Name
    profileName
    Type
    string?
    Description

    Profil adi (P1, P2, P3, P4 veya null).

  • Name
    policyOID
    Type
    string?
    Description

    Imzadaki Policy OID.

  • Name
    hashAlgorithm
    Type
    string?
    Description

    Kullanilan hash algoritmasi.

  • Name
    containsLongTermInfo
    Type
    boolean
    Description

    Uzun vadeli dogrulama bilgisi iceriyor mu.

  • Name
    lastArchivalTime
    Type
    string?
    Description

    Son arsivleme zamani (A seviyesinde).

  • Name
    timestamp
    Type
    TimestampInfoItemV4?
    Description

    Zaman damgasi bilgisi.

  • Name
    upgradeOptions
    Type
    string[]
    Description

    Mevcut seviyeden yapilabilecek tum upgrade secenekleri (or. ["T","XL","A"]). En ust seviyede bos doner.

  • Name
    profileRecommendedUpgrades
    Type
    string[]?
    Description

    Profil uyumlu upgrade secenekleri. Profil yoksa null.

  • Name
    profileIncompatibleUpgrades
    Type
    string[]?
    Description

    Profil disi (teknik olarak mumkun ama uyumsuz) upgrade secenekleri. Profil yoksa null.

Ornek imza (XL, P4 profilli, Enveloped)

{
  "entityLabel": "S0",
  "level": "XL",
  "levelString": "Extended-XL-Type-2",
  "subjectRDN": "CN=AHMET YILMAZ/SN=12345678901",
  "citizenshipNo": "12345678901",
  "timestamped": true,
  "claimedSigningTime": "2026-02-24 10:30:00.000",
  "claimedSigningTimeAsTime": "2026-02-24T10:30:00",
  "parentEntity": null,
  "signatureMode": "Enveloped",
  "profileName": "P4",
  "policyOID": "2.16.792.1.61.0.1.5070.3.3.1",
  "hashAlgorithm": "SHA256",
  "containsLongTermInfo": true,
  "lastArchivalTime": null,
  "timestamp": {
    "entityLabel": "S0:T0",
    "time": "2026-02-24 10:30:05.123",
    "timeAsTime": "2026-02-24T10:30:05.123",
    "tsaName": "CN=TUBITAK KAMU SM TSA",
    "hashAlgorithm": "SHA512",
    "timestampType": 1,
    "timestampTypeStr": "Signature"
  },
  "upgradeOptions": ["A"],
  "profileRecommendedUpgrades": ["A"],
  "profileIncompatibleUpgrades": []
}

TimestampInfoItemV4

  • Name
    entityLabel
    Type
    string
    Description

    Zaman damgasinin etiketi (or. S0:T0).

  • Name
    time
    Type
    string?
    Description

    Zaman damgasi zamani (string).

  • Name
    timeAsTime
    Type
    datetime?
    Description

    Zaman damgasi zamani (DateTime).

  • Name
    tsaName
    Type
    string?
    Description

    Zaman damgasi otoritesi adi.

  • Name
    hashAlgorithm
    Type
    string?
    Description

    Hash algoritmasi.

  • Name
    timestampType
    Type
    integer
    Description

    Zaman damgasi turu (sayisal).

  • Name
    timestampTypeStr
    Type
    string?
    Description

    Zaman damgasi turu (metinsel).


POST/v4/CoreApiXades/GetSignatureListCore

GetSignatureListCore

Verilen operationId ile iliskili XML dosyasindaki tum imzalari doner. Dosyanin detached olup olmadigini, imza modunu, her imzanin profilini, upgrade seceneklerini ve zaman damgasi detaylarini icerir.

Gerekli/opsiyonel alanlar

  • Name
    operationId
    Type
    uuid
    Description

    Imzalari listelenecek dosyanin islem kimligi.

  • Name
    originalFileOperationId
    Type
    uuid?
    Description

    (Detached imzalarda) Orijinal dosyanin operasyon ID'si. Enveloped/Enveloping imzalarda null/bos birakilir.

  • Name
    requestId
    Type
    string
    Description

    21 karakter uzunlugunda benzersiz bir string.

  • Name
    displayLanguage
    Type
    string
    Description

    Dil tercihi.

Request

POST
/v4/CoreApiXades/GetSignatureListCore
curl -X POST "https://apitest.onaylarim.com/v4/CoreApiXades/GetSignatureListCore" \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
        "operationId": "11111111-1111-1111-1111-111111111111",
        "originalFileOperationId": null,
        "requestId": "aaaaaaaaaaaaaaaaaaaaa",
        "displayLanguage": "tr"
      }'

Response

{
  "result": {
    "signatures": [
      {
        "entityLabel": "S0",
        "level": "XL",
        "levelString": "Extended-XL-Type-2",
        "subjectRDN": "CN=AHMET YILMAZ/SN=12345678901",
        "citizenshipNo": "12345678901",
        "timestamped": true,
        "claimedSigningTime": "2026-02-24 10:30:00.000",
        "claimedSigningTimeAsTime": "2026-02-24T10:30:00",
        "parentEntity": null,
        "signatureMode": "Enveloped",
        "profileName": "P4",
        "policyOID": "2.16.792.1.61.0.1.5070.3.3.1",
        "hashAlgorithm": "SHA256",
        "containsLongTermInfo": true,
        "lastArchivalTime": null,
        "timestamp": {
          "entityLabel": "S0:T0",
          "time": "2026-02-24 10:30:05.123",
          "timeAsTime": "2026-02-24T10:30:05.123",
          "tsaName": "CN=TUBITAK KAMU SM TSA",
          "hashAlgorithm": "SHA512",
          "timestampType": 1,
          "timestampTypeStr": "Signature"
        },
        "upgradeOptions": ["A"],
        "profileRecommendedUpgrades": ["A"],
        "profileIncompatibleUpgrades": []
      }
    ],
    "isDetached": false,
    "signatureMode": "Enveloped",
    "operationId": "11111111-1111-1111-1111-111111111111"
  },
  "error": null
}

POST/v4/CoreApiXades/SignStepOneXadesCore

SignStepOneXadesCore -- Imzayi baslat

XAdES imzalama surecini baslatir. Hedef seviye, profil, hash algoritmasi ve imza modu burada belirlenir. Istemci tarafindaki e-imza aracina iletilecek state, keyId, keySecret degerlerini doner.

Gerekli/opsiyonel alanlar

  • Name
    operationId
    Type
    uuid
    Description

    Imzalanacak dosyanin islem kimligi.

  • Name
    cerBytes
    Type
    string
    Description

    Imzalayan sertifikanin Base64 metni (DER veya PEM).

  • Name
    signatureLevel
    Type
    SignatureLevelForXadesV4
    Description

    Hedef imza seviyesi. StepThree'de bu seviyeye otomatik upgrade edilir.

  • Name
    profile
    Type
    XadesProfileV4
    Description

    Turk imza profili. None veya P1: profilsiz BES. P2/P3/P4: EPES tabanli (policy dahil).

  • Name
    hashAlgorithm
    Type
    CadesHashAlgorithmV4
    Description

    Hash algoritmasi. Varsayilan: SHA256 (0).

  • Name
    signatureMode
    Type
    XadesSignatureModeV4
    Description

    Imza modu. Enveloped (0), Enveloping (1) veya Detached (2).

  • Name
    serialOrParallel
    Type
    string?
    Description

    (Opsiyonel) SERIAL | PARALLEL. Bos gecilirse PARALLEL kabul edilir.

  • Name
    signaturePath
    Type
    string?
    Description

    (Opsiyonel) Seri imzada, uzerine imza atilacak imzanin EntityLabel'i (or. S0).

  • Name
    originalFileOperationId
    Type
    uuid?
    Description

    (Detached) Mevcut bir detached imza dosyasina yeni imza eklerken orijinal dosyanin operasyon ID'si. Ilk detached imzada gerekli degildir.

  • Name
    detachedResourceUri
    Type
    string?
    Description

    (Detached, opsiyonel) Detached imzadaki Reference URI degeri.

  • Name
    envelopedContentElementId
    Type
    string?
    Description

    (Enveloped, opsiyonel) Imzalanacak XML elemaninin ID'si.

  • Name
    envelopingObjectMimeType
    Type
    string?
    Description

    (Enveloping, opsiyonel) Zarf icindeki nesnenin MIME turu. Varsayilan: text/xml.

  • Name
    envelopingObjectEncoding
    Type
    string?
    Description

    (Enveloping, opsiyonel) Encoding degeri (or. http://www.w3.org/2000/09/xmldsig#base64).

Request

POST
/v4/CoreApiXades/SignStepOneXadesCore
curl -X POST "https://apitest.onaylarim.com/v4/CoreApiXades/SignStepOneXadesCore" \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
        "operationId": "11111111-1111-1111-1111-111111111111",
        "cerBytes": "MIIC...",
        "signatureLevel": 6,
        "profile": 4,
        "hashAlgorithm": 0,
        "signatureMode": 0,
        "requestId": "aaaaaaaaaaaaaaaaaaaaa",
        "displayLanguage": "tr"
      }'

Response

{
  "result": {
    "state": "BASE64_STATE",
    "keyID": "abcd1234",
    "keySecret": "wxyz5678",
    "operationId": "22222222-2222-2222-2222-222222222222"
  },
  "error": null
}

POST/v4/CoreApiXades/SignStepThreeXadesCore

SignStepThreeXadesCore -- Imzayi bitir

Istemcide olusturulan imzali veriyi (signedData) gondererek imzalama surecini tamamlar. StepOne'da belirtilen hedef seviye BES/EPES'den yuksekse, imza otomatik olarak o seviyeye upgrade edilir.

Gerekli alanlar

  • Name
    operationId
    Type
    uuid
    Description

    StepOne'dan donen islem kimligi.

  • Name
    signedData
    Type
    string
    Description

    E-imza aracindan donen imzali veri (Base64).

  • Name
    keyId
    Type
    string
    Description

    StepOne yanitindaki KeyId.

  • Name
    keySecret
    Type
    string
    Description

    StepOne yanitindaki KeySecret.

Not: V2'den farkli olarak V4'te signatureLevel bu adimda gonderilmez. Hedef seviye StepOne'da belirlenir ve StepThree'de otomatik uygulanir.

Request

POST
/v4/CoreApiXades/SignStepThreeXadesCore
curl -X POST "https://apitest.onaylarim.com/v4/CoreApiXades/SignStepThreeXadesCore" \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
        "operationId": "22222222-2222-2222-2222-222222222222",
        "signedData": "BASE64_SIGNED_DATA",
        "keyId": "abcd1234",
        "keySecret": "wxyz5678",
        "requestId": "aaaaaaaaaaaaaaaaaaaaa",
        "displayLanguage": "tr"
      }'

Response

{
  "result": {
    "isSuccess": true,
    "operationId": "33333333-3333-3333-3333-333333333333"
  },
  "error": null
}

POST/v4/CoreApiXades/UpgradeXadesCore

UpgradeXadesCore

Mevcut XAdES imzasini istenen seviyeye yukseltir. Desteklenen hedef seviyeler: T, XL, A. Detached dosyalarda originalFileOperationId zorunludur.

Kisitlamalar:

  • BES seviyesine upgrade yapilamaz (en dusuk seviyedir).
  • EPES seviyesine upgrade yapilamaz (sigPolicyId signed attribute'tur, imza atildiktan sonra degistirilemez).

Ipucu: Hangi seviyeye upgrade yapilabilecegini ogrenmek icin once GetSignatureListCore cagirisi yapin. Donen upgradeOptions ve profileRecommendedUpgrades alanlari yol gosterir.

Gerekli/opsiyonel alanlar

  • Name
    operationId
    Type
    uuid
    Description

    Upgrade edilecek dosyanin islem kimligi.

  • Name
    targetLevel
    Type
    SignatureLevelForXadesV4
    Description

    Hedef seviye (mevcut seviyeden yuksek olmali). T (3), XL (6) veya A (7).

  • Name
    signaturePath
    Type
    string?
    Description

    (Opsiyonel) Upgrade edilecek imzanin EntityLabel'i (or. S0). Bos birakilirsa ilk imza (S0) upgrade edilir.

  • Name
    originalFileOperationId
    Type
    uuid?
    Description

    (Detached imzalarda zorunlu) Orijinal dosyanin operasyon ID'si.

Request

POST
/v4/CoreApiXades/UpgradeXadesCore
curl -X POST "https://apitest.onaylarim.com/v4/CoreApiXades/UpgradeXadesCore" \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
        "operationId": "33333333-3333-3333-3333-333333333333",
        "targetLevel": 7,
        "signaturePath": "S0",
        "originalFileOperationId": null,
        "requestId": "aaaaaaaaaaaaaaaaaaaaa",
        "displayLanguage": "tr"
      }'

Response

{
  "result": {
    "isSuccess": true,
    "operationId": "44444444-4444-4444-4444-444444444444"
  },
  "error": null
}

Ornek akis (Enveloped, P4 profilli XL imza)

  1. XML dosya yukleme: CoreApiFile/UploadFile veya parca/parca: ChunkInit -> ChunkUpload -> ChunkComplete -> uploadOpId
  2. SignStepOneXadesCore ile imzayi baslat:
    • signatureLevel: 6 (XL), profile: 4 (P4), signatureMode: 0 (Enveloped)
    • -> state, keyId, keySecret, yeni operationId
  3. Istemci e-imza araciyla state'i imzalar -> signedData
  4. SignStepThreeXadesCore ile imzayi tamamla
    • BES olarak imzalanir, ardindan otomatik XL'e upgrade edilir
    • -> isSuccess: true, final operationId
  5. (Opsiyonel) GetSignatureListCore ile imzalari kontrol et
  6. (Opsiyonel) UpgradeXadesCore ile A seviyesine yukselt

Ornek akis (Enveloping, profilsiz BES + sonradan upgrade)

  1. Dosya yukleme -> uploadOpId
  2. SignStepOneXadesCore:
    • signatureLevel: 1 (BES), profile: 0 (None), signatureMode: 1 (Enveloping)
    • envelopingObjectMimeType: "application/pdf", envelopingObjectEncoding: "http://www.w3.org/2000/09/xmldsig#base64"
    • -> state, keyId, keySecret
  3. Istemci signedData uretir
  4. SignStepThreeXadesCore -> BES seviyesinde kalir -> final operationId
  5. UpgradeXadesCore ile targetLevel: 3 (T) veya targetLevel: 6 (XL) olarak yukselt

Ornek akis (Detached, ikinci imza ekleme)

  1. Orijinal dosya zaten yuklenmis: uploadOpId
  2. Ilk detached imza atilmis: baseOpId (detached XML imza dosyasi)
  3. Ikinci imza icin SignStepOneXadesCore:
    • operationId: baseOpId, signatureMode: 2 (Detached)
    • originalFileOperationId: uploadOpId (orijinal dosya referansi)
    • serialOrParallel: "SERIAL", signaturePath: "S0"
  4. SignStepThreeXadesCore -> final operationId
  5. Upgrade: UpgradeXadesCore ile originalFileOperationId: uploadOpId vererek upgrade

Ornek akis (Seri imza -- Enveloped)

  1. XML dosya yukleme -> uploadOpId
  2. Ilk imza: SignStepOneXadesCore + SignStepThreeXadesCore -> firstSignOpId
  3. Ikinci imza (seri): SignStepOneXadesCore:
    • operationId: firstSignOpId
    • serialOrParallel: "SERIAL", signaturePath: "S0" (ilk imzanin uzerine)
    • -> state, keyId, keySecret
  4. SignStepThreeXadesCore -> final operationId
  5. GetSignatureListCore ile kontrol: S0 ve S0:S0 gorunur

V2/V3'ten V4'e gecis

Endpoint degisiklik ozeti

AmacV2/V3 endpointV4 endpointOnemli farklar
Imzayi baslatPOST /v2/.../SignStepOneXadesCorePOST /v4/.../SignStepOneXadesCoreYeni: signatureLevel, profile, hashAlgorithm, signatureMode, originalFileOperationId, detachedResourceUri, envelopedContentElementId. Kaldirilan: citizenshipNo, signatureTurkishProfile (yerine profile enum), envelopingOrEnveloped (yerine signatureMode enum).
Imzayi bitirPOST /v2/.../signStepThreeXadesCorePOST /v4/.../SignStepThreeXadesCoresignatureLevel artik StepOne'da verilir, StepThree'de yok. URL'de buyuk 'S' harfi.
Imzayi yukseltPOST /v2/.../UpgradeXadesCorePOST /v4/.../UpgradeXadesCoresignatureLevel -> targetLevel. BES/EPES hedef olarak kabul edilmez. Detached destegi (originalFileOperationId).
Imza listesiPOST /v3/.../GetSignatureListCorePOST /v4/.../GetSignatureListCoreYeni: isDetached, signatureMode, profileName, policyOID, hashAlgorithm, upgradeOptions, profileRecommendedUpgrades, profileIncompatibleUpgrades, originalFileOperationId.

V2 -> V4 request alani donusumleri

SignStepOneXadesCore

  • V2'de vardi, V4'te degisti
    • signatureTurkishProfile (string) -> profile (XadesProfileV4 enum: 0-4)
    • envelopingOrEnveloped (string) -> signatureMode (XadesSignatureModeV4 enum: 0-2). V4'te Detached mod da eklenmistir.
  • V4'te yeni
    • signatureLevel: Hedef seviye (BES-A). V2'de bu StepThree'de veriliyordu.
    • profile: Turk imza profili (enum).
    • hashAlgorithm: Hash algoritmasi secimi.
    • signatureMode: Enveloped/Enveloping/Detached (enum).
    • originalFileOperationId: Detached dosyalarda orijinal dosya referansi.
    • detachedResourceUri: Detached imzadaki Reference URI.
    • envelopedContentElementId: Enveloped modda hedef eleman ID'si.
  • V2'de vardi, V4'te kaldirildi
    • citizenshipNo: V4'te bu alan StepOne'da yoktur.
    • coordinates: Kaldirildi.

signStepThreeXadesCore -> SignStepThreeXadesCore

  • V2'de vardi, V4'te kaldirildi
    • signatureLevel: Artik StepOne'da verilir, StepThree'de otomatik uygulanir.
  • URL farki: V2'de kucuk 's' (signStepThreeXadesCore), V4'te buyuk 'S' (SignStepThreeXadesCore).

UpgradeXadesCore

  • V2'de signatureLevel -> V4'te targetLevel (farkli enum tipi, BES/EPES hedef olamaz).
  • V4'te yeni: originalFileOperationId (detached dosya destegi).

Profil-seviye uyumluluk tablosu

ProfilIzin verilen seviyelerOnerilen minimum
None / P1BES, T, XL, ABES
P2EPES, TT
P3EPES, XL, AXL
P4EPES, XL, AXL

Not: Uyumsuz profil-seviye kombinasyonu (or. P3 + T) API tarafindan reddedilir.

Imza modu -- V2 vs V4 karsilastirmasi

V2 alaniV2 degerleriV4 alaniV4 degerleri
envelopingOrEnveloped"ENVELOPED", "ENVELOPING"signatureMode0 (Enveloped), 1 (Enveloping), 2 (Detached)

Not: V2'de Detached mod yoktu. V4 ile Detached imza destegi eklenmistir.

Was this page helpful?