INOPAY
Retour aux développeurs

Spécification KYC portable Ed25519

Une attestation KYC Inopay est un objet JSON signé Ed25519. Elle est vérifiable hors-ligne par n'importe quel intégrateur, sans appel à un service tiers.

Schéma JSON

Champs requis et types. La canonisation suit RFC 8785 (JSON Canonicalization Scheme) avant signature.

{
  "$schema": "https://schemas.getinopay.com/kyc-attestation/v1.json",
  "type": "object",
  "required": ["sub", "iss", "iat", "exp", "level", "jurisdictions", "sig"],
  "properties": {
    "sub":           { "type": "string", "description": "Subject pseudonymous ID" },
    "iss":           { "type": "string", "const": "inopay.kyc.v1" },
    "iat":           { "type": "string", "format": "date-time" },
    "exp":           { "type": "string", "format": "date-time" },
    "level":         { "type": "string", "enum": ["tier_1", "tier_2", "tier_3"] },
    "jurisdictions": { "type": "array",  "items": { "enum": ["UEMOA", "CEMAC", "GHANA"] } },
    "sig":           { "type": "string", "description": "Ed25519 signature, base64url" }
  }
}

Exemple signé

Attestation tier_2 émise pour la zone UEMOA. La clé publique d'émission est exposée via l'endpoint .well-known.

{
  "sub":           "ino_4XK9RZ...",
  "iss":           "inopay.kyc.v1",
  "iat":           "2026-04-25T08:00:00Z",
  "exp":           "2027-04-25T08:00:00Z",
  "level":         "tier_2",
  "jurisdictions": ["UEMOA"],
  "sig":           "MEUCIQDk...base64url..."
}

# Public verification key (offline verifiable)
inopay_pubkey_ed25519 = "[À CONFIGURER]"  // base64-url Ed25519 public key

Vérification hors-ligne

Procédure standard côté SGI ou intégrateur. Aucun appel réseau requis après récupération de la clé publique.

# Offline verification — no network call required.
1. Fetch the Inopay attestation public key once
   from /.well-known/inopay (cache locally with rotation hints).
2. Canonicalise the attestation JSON (RFC 8785 / JCS).
3. Verify Ed25519 signature against canonical bytes.
4. Reject if exp < now or jurisdiction not in your scope.
5. Match attestation.sub against your local subject map.

Endpoint .well-known/inopay

Expose la clé publique courante, les capacités et les contacts. Mise à jour signalée par rotation explicite.

GET https://www.getinopay.com/.well-known/inopay

Politique de révocation

Une attestation est révocable à tout moment. La liste de révocation est publiée signée et synchronisable. La période de grâce post-révocation est de 24 h.