File: randommod.c

package info (click to toggle)
tinyssh 20250501-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,388 kB
  • sloc: ansic: 20,245; sh: 1,582; python: 1,449; makefile: 913
file content (19 lines) | stat: -rw-r--r-- 462 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
taken from nacl-20110221, from curvecp/randommod.c
- reformated using clang-format
*/
#include "randombytes.h"
#include "randommod.h"

/* XXX: current implementation is limited to n<2^55 */

long long randommod(long long n) {
    long long result = 0;
    long long j;
    unsigned char r[32];
    if (n <= 1) return 0;
    randombytes(r, 32);
    for (j = 0; j < 32; ++j)
        result = (result * 256 + (unsigned long long) r[j]) % n;
    return result;
}