linux/include/crypto/poly1305.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Common values for the Poly1305 algorithm
   4 */
   5
   6#ifndef _CRYPTO_POLY1305_H
   7#define _CRYPTO_POLY1305_H
   8
   9#include <linux/types.h>
  10#include <linux/crypto.h>
  11
  12#define POLY1305_BLOCK_SIZE     16
  13#define POLY1305_KEY_SIZE       32
  14#define POLY1305_DIGEST_SIZE    16
  15
  16struct poly1305_desc_ctx {
  17        /* key */
  18        u32 r[5];
  19        /* finalize key */
  20        u32 s[4];
  21        /* accumulator */
  22        u32 h[5];
  23        /* partial buffer */
  24        u8 buf[POLY1305_BLOCK_SIZE];
  25        /* bytes used in partial buffer */
  26        unsigned int buflen;
  27        /* r key has been set */
  28        bool rset;
  29        /* s key has been set */
  30        bool sset;
  31};
  32
  33int crypto_poly1305_init(struct shash_desc *desc);
  34int crypto_poly1305_setkey(struct crypto_shash *tfm,
  35                           const u8 *key, unsigned int keylen);
  36unsigned int crypto_poly1305_setdesckey(struct poly1305_desc_ctx *dctx,
  37                                        const u8 *src, unsigned int srclen);
  38int crypto_poly1305_update(struct shash_desc *desc,
  39                           const u8 *src, unsigned int srclen);
  40int crypto_poly1305_final(struct shash_desc *desc, u8 *dst);
  41
  42#endif
  43