Skip to content

Signature Generation

Referensi ini menjelaskan langkah inti pembuatan signature HMAC-SHA256.

Langkah utama

  1. Build canonical request.
  2. Hash canonical request (SHA-256).
  3. Build string to sign.
  4. Hitung HMAC-SHA256 menggunakan secret key.

Canonical request format

text
<HTTP_METHOD>
<REQUEST_PATH>
<QUERY_STRING>
<CANONICAL_HEADERS>
<SIGNED_HEADERS>
<BODY_HASH>

Signed headers order

  • service: x-date;x-request-id;x-client-type
  • user: x-date;x-tenant-id;x-request-id;x-client-type

String to sign

text
HMAC-SHA256
<X-Date>
<SHA256(canonical-request)>

Common mistakes

  • Header order salah.
  • Canonical headers tidak diakhiri newline \n.
  • Query string tidak ikut canonical request.
  • Body hash tidak sesuai body yang dikirim.

Example (TypeScript)

ts
import { createHash, createHmac } from "node:crypto";

const canonicalHash = createHash("sha256").update(canonicalRequest).digest("hex");
const stringToSign = ["HMAC-SHA256", xDate, canonicalHash].join("\n");
const signature = createHmac("sha256", secretKey).update(stringToSign).digest("hex");

Untuk contoh lengkap, lihat versi English yang lebih detail:

  • /api-reference/signature-generation