lib1305: API

lib1305
Intro
Download
Install
Test
API
Security
Speed
Internals
People
License
lib1305: API

### NAME

lib1305 - C API for the lib1305 implementation of the Poly1305 one-time authenticator

### SYNOPSIS

Using lib1305:

    #include <lib1305.h>

Link with `-l1305`.

Authenticating a message:

    unsigned char a[poly1305_BYTES];
    const unsigned char m[mlen];
    const unsigned char k[poly1305_KEYBYTES];

    poly1305(a,m,mlen,k);

Verifying an authenticator:

    const unsigned char a[poly1305_BYTES];
    const unsigned char m[mlen];
    const unsigned char k[poly1305_KEYBYTES];
    int result;

    result = poly1305_verify(a,m,mlen,k);

### DESCRIPTION

lib1305 is an implementation of the Poly1305 one-time authenticator. The lib1305 functions follow the SUPERCOP `onetimeauth` API except that

- the function names are lib1305-specific instead of `crypto_onetimeauth_*`,
- message lengths are `long long` instead of `unsigned long long`, and
- the `poly1305` function returns `void` instead of `int`.

The `poly1305` function generates an authenticator `a[0]`, `a[1]`, ..., `a[poly1305_BYTES-1]` given a message `m[0]`, `m[1]`, ..., `m[mlen-1]` and a secret key `k[0]`, `k[1]`, ..., `k[poly1305_KEYBYTES-1]`. "One-time" means that the secret key must not be reused to generate an authenticator of another message.

The `poly1305_verify` function verifies an authenticator `a[0]`, `a[1]`, ..., `a[poly1305_BYTES-1]` given a message `m[0]`, `m[1]`, ..., `m[mlen-1]` and a secret key `k[0]`, `k[1]`, ..., `k[poly1305_KEYBYTES-1]`. It returns `0` if the authenticator is valid, otherwise nonzero.

### SEE ALSO

randombytes(3)

Version: This is version 2025.04.07 of the "API" web page.