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 yeniOperationIddoner 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: Terror: string (hata durumunda dolar)
Enum: SignatureLevelForXadesV4
XAdES imza seviyeleri. StepOne'da hedef seviye belirtilir; StepThree sonunda otomatik upgrade edilir.
| Deger | Kod | Aciklama |
|---|---|---|
BES | 1 | Basic Electronic Signature |
EPES | 2 | Electronic Signature with Explicit Policy |
T | 3 | ES-T -- Zaman damgali |
XL | 6 | ES-XL -- Uzun vadeli dogrulama bilgileri dahil |
A | 7 | ES-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).
| Deger | Kod | Aciklama | Min. Seviye | Revocation |
|---|---|---|---|---|
None | 0 | Profil yok | BES | -- |
P1 | 1 | Profilsiz BES | BES | -- |
P2 | 2 | EPES + T, SIL (CRL) | T | CRL |
P3 | 3 | EPES + XL/A, SIL (CRL) | XL | CRL |
P4 | 4 | EPES + XL/A, CISDuP (OCSP) | XL | OCSP |
Enum: XadesSignatureModeV4
XAdES imza modlari. StepOne'da imza modu belirtilir.
| Deger | Kod | Aciklama |
|---|---|---|
Enveloped | 0 | Imza XML dokuman icine gomulur. Giris dosyasi XML olmalidir. |
Enveloping | 1 | Veri, imzanin ds:Object elemani icine yerlestirilir. |
Detached | 2 | Imza ayri dosyada, orijinal veri harici referans edilir. |
Enum: CadesHashAlgorithmV4
CAdES ile paylasilan hash algoritmasi enum'u.
| Deger | Kod |
|---|---|
SHA256 | 0 |
SHA384 | 1 |
SHA512 | 2 |
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).
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
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
}
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.
NoneveyaP1: 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) veyaDetached(2).
- Name
serialOrParallel- Type
- string?
- Description
(Opsiyonel)
SERIAL|PARALLEL. Bos gecilirsePARALLELkabul 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
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
}
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
signatureLevelbu adimda gonderilmez. Hedef seviye StepOne'da belirlenir ve StepThree'de otomatik uygulanir.
Request
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
}
UpgradeXadesCore
Mevcut XAdES imzasini istenen seviyeye yukseltir. Desteklenen hedef seviyeler: T, XL, A. Detached dosyalarda originalFileOperationId zorunludur.
Kisitlamalar:
BESseviyesine upgrade yapilamaz (en dusuk seviyedir).EPESseviyesine upgrade yapilamaz (sigPolicyIdsigned attribute'tur, imza atildiktan sonra degistirilemez).
Ipucu: Hangi seviyeye upgrade yapilabilecegini ogrenmek icin once
GetSignatureListCorecagirisi yapin. DonenupgradeOptionsveprofileRecommendedUpgradesalanlari 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
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)
- XML dosya yukleme:
CoreApiFile/UploadFileveya parca/parca:ChunkInit -> ChunkUpload -> ChunkComplete->uploadOpId SignStepOneXadesCoreile imzayi baslat:signatureLevel: 6(XL),profile: 4(P4),signatureMode: 0(Enveloped)- ->
state,keyId,keySecret, yenioperationId
- Istemci e-imza araciyla
state'i imzalar ->signedData SignStepThreeXadesCoreile imzayi tamamla- BES olarak imzalanir, ardindan otomatik XL'e upgrade edilir
- ->
isSuccess: true, finaloperationId
- (Opsiyonel)
GetSignatureListCoreile imzalari kontrol et - (Opsiyonel)
UpgradeXadesCoreile A seviyesine yukselt
Ornek akis (Enveloping, profilsiz BES + sonradan upgrade)
- Dosya yukleme ->
uploadOpId 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
- Istemci
signedDatauretir SignStepThreeXadesCore-> BES seviyesinde kalir -> finaloperationIdUpgradeXadesCoreiletargetLevel: 3(T) veyatargetLevel: 6(XL) olarak yukselt
Ornek akis (Detached, ikinci imza ekleme)
- Orijinal dosya zaten yuklenmis:
uploadOpId - Ilk detached imza atilmis:
baseOpId(detached XML imza dosyasi) - Ikinci imza icin
SignStepOneXadesCore:operationId: baseOpId,signatureMode: 2(Detached)originalFileOperationId: uploadOpId(orijinal dosya referansi)serialOrParallel: "SERIAL",signaturePath: "S0"
SignStepThreeXadesCore-> finaloperationId- Upgrade:
UpgradeXadesCoreileoriginalFileOperationId: uploadOpIdvererek upgrade
Ornek akis (Seri imza -- Enveloped)
- XML dosya yukleme ->
uploadOpId - Ilk imza:
SignStepOneXadesCore+SignStepThreeXadesCore->firstSignOpId - Ikinci imza (seri):
SignStepOneXadesCore:operationId: firstSignOpIdserialOrParallel: "SERIAL",signaturePath: "S0"(ilk imzanin uzerine)- ->
state,keyId,keySecret
SignStepThreeXadesCore-> finaloperationIdGetSignatureListCoreile kontrol: S0 ve S0:S0 gorunur
V2/V3'ten V4'e gecis
Endpoint degisiklik ozeti
| Amac | V2/V3 endpoint | V4 endpoint | Onemli farklar |
|---|---|---|---|
| Imzayi baslat | POST /v2/.../SignStepOneXadesCore | POST /v4/.../SignStepOneXadesCore | Yeni: signatureLevel, profile, hashAlgorithm, signatureMode, originalFileOperationId, detachedResourceUri, envelopedContentElementId. Kaldirilan: citizenshipNo, signatureTurkishProfile (yerine profile enum), envelopingOrEnveloped (yerine signatureMode enum). |
| Imzayi bitir | POST /v2/.../signStepThreeXadesCore | POST /v4/.../SignStepThreeXadesCore | signatureLevel artik StepOne'da verilir, StepThree'de yok. URL'de buyuk 'S' harfi. |
| Imzayi yukselt | POST /v2/.../UpgradeXadesCore | POST /v4/.../UpgradeXadesCore | signatureLevel -> targetLevel. BES/EPES hedef olarak kabul edilmez. Detached destegi (originalFileOperationId). |
| Imza listesi | POST /v3/.../GetSignatureListCore | POST /v4/.../GetSignatureListCore | Yeni: 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'tetargetLevel(farkli enum tipi, BES/EPES hedef olamaz). - V4'te yeni:
originalFileOperationId(detached dosya destegi).
Profil-seviye uyumluluk tablosu
| Profil | Izin verilen seviyeler | Onerilen minimum |
|---|---|---|
| None / P1 | BES, T, XL, A | BES |
| P2 | EPES, T | T |
| P3 | EPES, XL, A | XL |
| P4 | EPES, XL, A | XL |
Not: Uyumsuz profil-seviye kombinasyonu (or. P3 + T) API tarafindan reddedilir.
Imza modu -- V2 vs V4 karsilastirmasi
| V2 alani | V2 degerleri | V4 alani | V4 degerleri |
|---|---|---|---|
envelopingOrEnveloped | "ENVELOPED", "ENVELOPING" | signatureMode | 0 (Enveloped), 1 (Enveloping), 2 (Detached) |
Not: V2'de Detached mod yoktu. V4 ile Detached imza destegi eklenmistir.