Asymmetric Signature
Asymmetric Signature digunakan untuk melakukan verifikasi permintaan Access Token. Proses pembuatan signature dilakukan menggunakan private key. Sistem PakaiLink mendukung format PKCS#8 untuk private key, sehingga merchant akan diminta untuk membuat signature menggunakan file pkcs8_rsa_private_key.pem. Signature yang dihasilkan kemudian akan diverifikasi menggunakan public key yang disimpan dalam file rsa_public_key.pem. PakaiLink menggunakan algoritma SHA256withRSA, dengan tipe format yang diterapkan adalah Base64.
Pembuatan Asymmetric Key
- Gunakan perintah berikut untuk menghasilkan private key RSA:
openssl genrsa -out rsa_private_key.pem 2048
- Setelah private key dibuat, ekstrak public key dengan perintah ini:
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout
- Konversi private key ke format PKCS#8 untuk meningkatkan kompatibilitas:
openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
Setelah merchant berhasil memperoleh public key, langkah selanjutnya adalah membagikan key tersebut ke PakaiLink untuk melanjutkan proses pembuatan signature.
Pembuatan Signature
- Siapkan data yang diperlukan untuk menghasilkan signature digital. No Data Keterangan Contoh 1 X-CLIENT-KEY Identifier unik untuk mitra, yang dikenal sebagai clientId, dihasilkan secara otomatis oleh PakaiLink untuk memastikan setiap mitra memiliki identitas yang unik dan ter verifikasi. ac517edf8c7ca47b9b3a334dd8bacb59 2 X-TIMESTAMP Tanggal dan waktu transaksi harus mengikuti format YYYY-MM-DDTHH:mm:ss+07:00, dengan waktu yang disesuaikan dengan GMT+7 (Waktu Jakarta), untuk memastikan kesesuaian dengan zona waktu lokal. 2025-01-30T12:38:12+07:00
- Gabungkan nilai X-CLIENT-KEY dan X-TIMESTAMP menggunakan tanda pipe (|) untuk membentuk string yang siap untuk proses sign. Berikut contoh formatnya:
ac517edf8c7ca47b9b3a334dd8bacb59|2025-01-30T12:38:12+07:00
- String signature dibuat dengan mengenkripsi string yang telah disusun menggunakan algoritma SHA-256 dengan enkripsi RSA-2048 menggunakan private key dalam format PKCS#8 atau PKCS#1, lalu encode hasil enkripsi tersebut ke dalam format Base64 untuk menghasilkan signature yang dapat digunakan dalam proses verifikasi.
IzAqHsx6ygZV6sWW6ng9QtfHOsrNaxUo3brQz+1oZ26RJp6NGOTmPyipKvs2whoTURh9ZMx8ao6rUYRdsbN16rGuLqxbzD70IcWYIbitXbgVCRt5Dx0BogynF2pZBcS+BJNhdgRqlSJQXjI3YhuSzbmEE1O1wYycWDqSksP1VwGLIhj87Xl837GTqK8AT7dP/Bq4/pjGFfpl60BrKtkw58waHMY/S4leUbo+XWT92SzCtjjJmb9rwTDlSJbUPHjJCarQC+02+A7dnTedo0/ckSPrpqzOmRwlXPhAZF+E+Edj0TPXlvYkuLBc+Svag3PUMWy7+GAYRoupfC6mKydfgA==
- Letakkan string signature hasil encode ke dalam header HTTP X-SIGNATURE, seperti contoh berikut:
Format:X-SIGNATURE: <Base64_Encoded_Signature>
Contoh:X-SIGNATURE: IzAqHsx6ygZV6sWW6ng9QtfHOsrNaxUo3brQz+1oZ26RJp6NGOTmPyipKvs2whoTURh9ZMx8ao6rUYRdsbN16rGuLqxbzD70IcWYIbitXbgVCRt5Dx0BogynF2pZBcS+BJNhdgRqlSJQXjI3YhuSzbmEE1O1wYycWDqSksP1VwGLIhj87Xl837GTqK8AT7dP/Bq4/pjGFfpl60BrKtkw58waHMY/S4leUbo+XWT92SzCtjjJmb9rwTDlSJbUPHjJCarQC+02+A7dnTedo0/ckSPrpqzOmRwlXPhAZF+E+Edj0TPXlvYkuLBc+Svag3PUMWy7+GAYRoupfC6mKydfgA==