Uzak Kod İmzalama API Referansı
Bu makale, uzaktan imza yeteneklerini doğrudan entegre etmesi gereken geliştiricilere yöneliktir ve aşağıdaki iki API'yi açıklamaktadır:
POST /v1/codesign/sign:İmzalanacak hash özetini gönderin ve RSA PKCS#1 imza sonucunu alın.POST /v1/codesign/report-sign:İstemcinin nihai işlem sonucunu raporlayın (imza sayacını etkilemez).
Hizmet adresi
| Ortam | Adres |
|---|---|
| Üretim Ortamı (varsayılan) | https://ssl.face.racent.com |
| NICSRS Ortamı | https://ssl.face.nicsrs.com |
Diğer ortam adresleri gerekiyorsa, teslimat veya operasyon ekibinin sağladığı adres geçerli kabul edilir.
Genel Kurallar
İstek biçimi
- Protokol: HTTPS
- Metod:
POST - Gövde: JSON
- Başlıklar:
Content-Type: application/json
Accept: application/json
Authorization: Basic <base64(accessKey:accessSecret)>
Kimlik Doğrulama
Arayüz, HTTP Temel Kimlik Doğrulaması kullanır:
- Kullanıcı Adı: Access Key
- Şifre: Access Secret
Authorization başlığını oluşturun:
printf "%s:%s" "$ACCESS_KEY" "$ACCESS_SECRET" | base64
Genel yanıt yapısı
{
"code": 0,
"message": "ok",
"data": {}
}
| Alan | Tür | Anlam |
|---|---|---|
code | integer | İşlem durum kodu. 0 başarıyı, 0 dışındaki değerler işlem hatasını belirtir. |
message | string | İşlem durumu açıklaması; hata durumunda hata açıklaması. |
data | object | API işlem verileri. |
Çağrı yapan taraf, hem HTTP durum kodunu hem de iş durum kodunu aynı anda ele almalıdır:
- HTTP durumu 2xx değilse → HTTP hatası olarak işlenir.
- HTTP 2xx ve
code != 0→ işletme hatası olarak işlenir. - HTTP 2xx ve
code == 0→ ilgilidataalanı okunur.
İmzalama Arayüzü
Arayüz Açıklaması
POST /v1/codesign/sign
İmzalanacak hash ham baytlarını (Base64 kodlu) gönderin, uzak hizmet belirtilen sertifikayı kullanarak RSA PKCS#1 imzasını tamamlar ve sonucu döndürür.
/v1/codesign/sign imza içeriğini başarıyla döndürdüğünde imzalama başarılı sayılır ve imza sayısı 1 artar. Başarısız istekler imza hakkını tüketmez. report-sign çağrısının yapılıp yapılmaması sayımı etkilemez.
İstek Parametreleri
{
"code": "CERT_CODE",
"digest": "BASE64_ENCODED_HASH",
"algorithm": "SHA256",
"padding": "PKCS1",
"extra": {
"platform": "windows/amd64",
"version": "1.0.0",
"revision": "abcdef0",
"time": "2026-06-12T10:00:00+08:00",
"hostname": "build-host-01",
"signing_filename": "Example.exe",
"signing_filesize": 1048576
}
}
| Alan | Tür | Zorunlu | Anlam |
|---|---|---|---|
code | string | Evet | Sertifika numarası, uzaktan imza sertifikasını seçmek için kullanılır. |
digest | string | Evet | İmzalanacak karma (hash) orijinal baytlarının Base64 kodlaması. Çağıran taraf, hedef dosya ve imza aracı gereksinimlerine göre karmayı yerel olarak hesaplamalıdır. |
algorithm | string | Evet | Karma algoritması, SHA1, SHA256, SHA384, SHA512 destekler. |
padding | string | Evet | RSA dolgu modu, şu anda sabit olarak PKCS1 ayarlıdır. |
extra | object | Hayır | İstemci bağlam bilgisi, imza kaydı, denetim ve sorun giderme için kullanılır. |
extra alan açıklaması:
| Alan | Tür | Anlam |
|---|---|---|
platform | string | İstemci platformu; örneğin windows/amd64 veya linux/amd64. |
version | string | İstemci sürümü. |
revision | string | İstemci derlemesinin revizyonu. |
time | string | İstemci derleme zamanı veya istek zamanı. |
hostname | string | İmzalama isteğini gönderen ana makinenin adı. |
signing_filename | string | İmzalanan dosyanın adı veya yolu; güvenlik politikasına göre maskelenmesi önerilir. |
signing_filesize | integer | İmzalanan dosyanın boyutu (bayt). |
İstek Örneği
curl -u "$ACCESS_KEY:$ACCESS_SECRET" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"code": "CERT_CODE",
"digest": "BASE64_ENCODED_HASH",
"algorithm": "SHA256",
"padding": "PKCS1",
"extra": {
"platform": "windows/amd64",
"version": "1.0.0",
"hostname": "build-host-01",
"signing_filename": "Example.exe",
"signing_filesize": 1048576
}
}' \
https://ssl.face.racent.com/v1/codesign/sign
Başarılı yanıt
{
"code": 0,
"message": "ok",
"data": {
"id": "735985894427246592",
"signature": "BASE64_ENCODED_SIGNATURE"
}
}
| Alan | Tür | Anlam |
|---|---|---|
id | string | report-sign çağrılırken kullanılan imza kaydı kimliği. |
signature | string | RSA imza sonucunun Base64 kodlaması. |
İmza Sonucunu Raporlama
Arayüz Açıklaması
POST /v1/codesign/report-sign
İstemci, uzak imza sonucunu aldıktan sonra, sonucu yerel olarak işlerken, yazarken veya çağıran tarafa geri iletirken başarısız olabilir.Bu arayüz, istemcinin nihai işlem durumunu sunucuya geri iletmek için kullanılır; böylece imza kayıtlarının görüntülenmesi ve denetim/inceleme kolaylaşır.
Bu API yalnızca istemcideki işlem sonucunu kaydeder ve /v1/codesign/sign çağrısının sayım sonucunu değiştirmez. Bu API'nin çağrılmaması başarılı imza sayısını etkilemez.
İstek Parametreleri
{
"id": "735985894427246592",
"status": 1
}
| Alan | Tip | Zorunlu | Anlam |
|---|---|---|---|
id | string | Evet | /v1/codesign/sign tarafından döndürülen data.id. |
status | integer | Evet | İstemci son işlem durumu: 1 başarılı, 2 başarısız. |
İstek Örneği
curl -u "$ACCESS_KEY:$ACCESS_SECRET" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": "735985894427246592",
"status": 1
}' \
https://ssl.face.racent.com/v1/codesign/report-sign
Başarılı yanıt
{
"code": 0,
"message": "ok",
"data": null
}
Hata Yanıtı Örneği
Kimlik doğrulama hatası:
{
"code": 401,
"message": "unauthorized",
"data": null
}
Parametre hatası:
{
"code": 400,
"message": "invalid request",
"data": null
}
Kesin hata kodları ve iletileri sunucunun gerçek yanıtına bağlıdır. Entegrasyonu yapan taraf, işlem dallarını belirlemek için sabit hata metinlerine güvenmemelidir.
Entegrasyon Önerisi
- Access Secret'i özenle koruyun; günlüklere, hata raporlarına veya ön yüz sayfalarına yazmayın.
digest, hash ham baytlarının Base64 kodlaması olmalıdır; onaltılık (hex) bir dize veya tam dosya içeriği değildir.algorithm,digestile aynı gerçek hash algoritmasıyla tutarlı olmalıdır.- Mevcut doldurma (padding) modu sabit olarak
PKCS1kullanılır; başka bir değer iletmeyin. digestvesignaturealanları uzun olabilir; günlüklerde yalnızca uzunluğun veya ön/son eklerin maskelenmiş sonuçlarının kaydedilmesi önerilir.- İstemci tarafında son işlem tamamlandıktan sonra sonuçların
report-signile raporlanması önerilir; bu, sonraki denetim ve sorun giderme için kolaylık sağlar. - Ağ hatalarını, HTTP hatalarını ve iş hatalarını ayrı ayrı ele alın; imza istekleri için makul zaman aşımı ve yeniden deneme stratejileri belirleyin.