SequentSecurity API Documentation

SequentSecurity a Full API made for Andriod clients to validate there session and APK.

System Overview

The SequentSecurity system provides device-bound, single-use authentication tokens with a challenge-response mechanism. It protects against unauthorized clients, emulators, and replay attacks. Rate limiting and blacklisting prevent abuse.

API Endpoints

POST /auth
Request a challenge for a new token.
Request Body: JSON with fields: Response: JSON containing a status and a challenge string.
POST /challenge
Submit the cryptographic response to the issued challenge.
Request Body: JSON with fields: Response: JSON indicating success or failure.

Authentication Flow

  1. Client generates a device-specific token.
  2. Client sends token to /auth endpoint.
  3. Server validates token, device, and fingerprint, then returns a challenge.
  4. Client computes a hash of the token, challenge, and fingerprint.
  5. Client sends the hash to /challenge endpoint.
  6. Server verifies the response and returns a success or failure status.

Rate Limiting & Security

Token Rules

Sample Client Interaction (C#)

This simplified sample demonstrates the flow of generating a token, requesting a challenge, and sending the response.


// 1. Generate device token and fingerprint
string token = GenerateToken();
string fingerprint = GetDeviceFingerprint();
bool xrActive = IsXrActive();
long clientTime = GetUnixTime();

// 2. Send to /auth endpoint
var authPayload = new {
    token,
    device = GetDevice(),
    fingerprint,
    xr_active = xrActive,
    client_time = clientTime
};
var authResponse = PostJson("/auth", authPayload);
string challenge = authResponse.challenge;

// 3. Compute challenge response
string responseHash = ComputeHash(token + challenge + fingerprint);

// 4. Send to /challenge endpoint
var challengePayload = new {
    token,
    device = GetDevice(),
    fingerprint,
    xr_active = xrActive,
    response = responseHash,
    client_time = clientTime
};
var finalResponse = PostJson("/challenge", challengePayload);

// 5. Server replies with "success" or failure status

Key Notes