forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
crypto: poly1305 - Export common Poly1305 helpers
As architecture specific drivers need a software fallback, export Poly1305 init/update/final functions together with some helpers in a header file. Signed-off-by: Martin Willi <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
- Loading branch information
1 parent
6692cbc
commit 2546f81
Showing
3 changed files
with
77 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* | ||
* Common values for the Poly1305 algorithm | ||
*/ | ||
|
||
#ifndef _CRYPTO_POLY1305_H | ||
#define _CRYPTO_POLY1305_H | ||
|
||
#include <linux/types.h> | ||
#include <linux/crypto.h> | ||
|
||
#define POLY1305_BLOCK_SIZE 16 | ||
#define POLY1305_KEY_SIZE 32 | ||
#define POLY1305_DIGEST_SIZE 16 | ||
|
||
struct poly1305_desc_ctx { | ||
/* key */ | ||
u32 r[5]; | ||
/* finalize key */ | ||
u32 s[4]; | ||
/* accumulator */ | ||
u32 h[5]; | ||
/* partial buffer */ | ||
u8 buf[POLY1305_BLOCK_SIZE]; | ||
/* bytes used in partial buffer */ | ||
unsigned int buflen; | ||
/* r key has been set */ | ||
bool rset; | ||
/* s key has been set */ | ||
bool sset; | ||
}; | ||
|
||
int crypto_poly1305_init(struct shash_desc *desc); | ||
int crypto_poly1305_setkey(struct crypto_shash *tfm, | ||
const u8 *key, unsigned int keylen); | ||
unsigned int crypto_poly1305_setdesckey(struct poly1305_desc_ctx *dctx, | ||
const u8 *src, unsigned int srclen); | ||
int crypto_poly1305_update(struct shash_desc *desc, | ||
const u8 *src, unsigned int srclen); | ||
int crypto_poly1305_final(struct shash_desc *desc, u8 *dst); | ||
|
||
#endif |