APDU, bir akıllı kart ile POS, ATM vs arasında kullanılan, ISO 7816-4’te belirtilen bir uygulama seviyesi protokolüdür.
2 tip APDU vardır:
- Command APDU
- Response APDU
APDU’nun yapısı aşağıda verilmiştir:
- Command APDU
Mandatory Header | Mandatory Header | Mandatory Header | Mandatory Header | Optional body | Optional body | Optional body |
CLA | INS | P | P2 | Lc | Data Field | Le |
İlk dört bölüm, yani CLA , INS , P1 ve P2 tüm APDU komutlarında zorunludur ve her birinin uzunluğu bir byte’tır . Bu tek byte uzunlukta bölümler sırasıyla Sınıf, Talimat, Parametre1 ve Parametre2’yi temsil eder.
Son üç bölüm, yani Lc, CData ve Le isteğe bağlıdır.
- Command APDU (C-APDU): Bu komut, ana makine uygulaması tarafından karta komut göndermek için kullanılır.
- Başlık: 4 byte’tan oluşur:
- Sınıf (CLA)
- Talimat kodu (INS)
- Parametreler: P1 ve P2
- İsteğe bağlı gövde: uzunluk olarak değişir.
- Lc = isteğe bağlı gövdenin veya veri alanının (Byte) uzunluğunu belirtir.
- Le = veri uzunluğunu veya gönderilen komuta yanıt olarak ana bilgisayarın beklediği byte sayısını belirtir.
- Veri alanı, başlıkta belirtilen talimatı yürütmek için karta gönderilen verileri içerir.
- Başlık: 4 byte’tan oluşur:
- Response(Yanıt) APDU (R-APDU): Bu komut, ana makine uygulaması tarafından gönderilen komuta cevap vermek için kart tarafından kullanılır.
- İsteğe bağlı gövde: uzunluğu Le tarafından belirtilen veri alanından oluşur
- Art Bilgi: APDU komutunun çalıştırılmasından sonra karttaki işlem durumunu gösteren, durum kelimesi olarak adlandırılan iki kelime SW1 ve SW2’den oluşur.
2. Response APDU
Optional body | Mandatory Trailer | Mandatory Trailer |
Data Field | SW1 | SW1 |
- Bir komut her zaman APDU yanıtıyla eşleştirilir.
- Veri alanı(Data Field) APDU komutunda ve APDU yanıtında isteğe bağlıdır.
4 Tip APDU kategorisi vardır:
- Karttan ya da karta veri transferi yoktur
- C- APDU: sadece başlık içerir.
- R-APDU: sadece Trailer bilgisi içerir.
- Karta veri transferi yoktur ancak karttan veriler döner.
- C- APDU: Yalnızca karşılık gelen APDU yanıtındaki veri bytelarının sayısını belirten Le’yi içerir.
- Karta veri transferi yapılır ancak karttan veri dönmez.
- C- APDU: veri alanının uzunluğunu belirten Lc ve veri alanı Lc’yi içerir.
- R-APDU: trailer durum kelimesi SW1 ve SW2’yi içerir.
- Karta veri transferi yapılır ve karttan veriler döner.
- C- APDU: Lc ve veri alanı ve Le’yi içerir.
- R-APDU: isteğe bağlı gövde ve trailer durum kelimesi SW1 ve SW2’yi içerir.