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