API public

API JSON pentru suita NIST SP 800-22. Acelasi contract pentru orice test: alegi testul prin slug-ul din cale. Baza: https://rngtests.danielwagner.ro/api (local: http://localhost:3000/api).

Limite de rata

  • pana la 60 de cereri / minut / IP (bursturile sunt permise);
  • pana la 2000 de cereri / saptamana / IP;
  • pana la 100000 de cereri / saptamana global.
  • IP-urile din RL_ALLOWLIST si cele locale sunt scutite complet.

Fiecare raspuns include X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. La depasire se intoarce 429 cu Retry-After.

POST/api/run/{test}

Ruleaza un test pe o secventa de biti. Teste rulabile acum: monobit, block-frequency, runs, longest-run, dft, serial, approx-entropy, cusum. Celelalte intorc 501 (planificate).

Cerere

{
  "bits": "1100100100...",   // doar 0/1 sunt pastrate; max 2.000.000 biti
  "alpha": 0.01,             // 0.0001 .. 0.5 (implicit 0.01)
  "block": 10,               // M/m pentru testele pe blocuri (optional)
  "method": "auto"           // "auto" | "fft" | "direct" (doar dft)
}

Raspuns 200 (plic uniform)

{
  "test": "monobit", "n": 100,
  "p_value": 0.109599, "passed": true,
  "stats": { "S_n": -16, "s_obs": 1.6 }
}

Exemplu

curl -s https://rngtests.danielwagner.ro/api/run/monobit \
  -H 'Content-Type: application/json' \
  -d '{"bits":"1100100100..."}'

stats contine cantitatile testului; dft adauga si un spectru (cel mult 4000 de puncte). Coduri: 400 (cerere invalida / biti), 404 (test necunoscut), 501 (planificat), 429 (limita), 500/504.

POST/api/assess/{test}

Analiza pe multe fluxuri (proportie + uniformitate) peste fisierele NIST, pentru testul ales.

{
  "files": ["data.pi", "data.e"],  // doar fisierele din lista permisa
  "length": 10000,                 // biti / flux (1000 .. 1.000.000)
  "maxStreams": 0,                 // 0 = toate
  "alpha": 0.01, "block": 10       // block optional
}
GET/api/sequence?file=&offset=&len=

O felie marginita dintr-un fisier NIST (max 65536 biti). Doar fisiere din lista permisa: data.e, data.pi, data.sqrt2, data.sqrt3, data.sha1, bits_nist_example.txt.

curl -s 'https://rngtests.danielwagner.ro/api/sequence?file=data.pi&offset=0&len=256'
GET/api/health

Stare + capabilitati: binare prezente, configuratia limitelor si catalogul de teste (toate cele 15, cu starea fiecaruia). Fara limita de rata.