Skip to content

Commit

Permalink
crypto: chacha20poly1305 - Add an IPsec variant for RFC7539 AEAD
Browse files Browse the repository at this point in the history
draft-ietf-ipsecme-chacha20-poly1305 defines the use of ChaCha20/Poly1305 in
ESP. It uses additional four byte key material as a salt, which is then used
with an 8 byte IV to form the ChaCha20 nonce as defined in the RFC7539.

Signed-off-by: Martin Willi <[email protected]>
Acked-by: Steffen Klassert <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
martinwilli authored and herbertx committed Jun 4, 2015
1 parent af2b76b commit 4db4ad2
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion crypto/chacha20poly1305.c
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,11 @@ static struct crypto_instance *rfc7539_alloc(struct rtattr **tb)
return chachapoly_alloc(tb, "rfc7539", 12);
}

static struct crypto_instance *rfc7539esp_alloc(struct rtattr **tb)
{
return chachapoly_alloc(tb, "rfc7539esp", 8);
}

static void chachapoly_free(struct crypto_instance *inst)
{
struct chachapoly_instance_ctx *ctx = crypto_instance_ctx(inst);
Expand All @@ -643,13 +648,31 @@ static struct crypto_template rfc7539_tmpl = {
.module = THIS_MODULE,
};

static struct crypto_template rfc7539esp_tmpl = {
.name = "rfc7539esp",
.alloc = rfc7539esp_alloc,
.free = chachapoly_free,
.module = THIS_MODULE,
};

static int __init chacha20poly1305_module_init(void)
{
return crypto_register_template(&rfc7539_tmpl);
int err;

err = crypto_register_template(&rfc7539_tmpl);
if (err)
return err;

err = crypto_register_template(&rfc7539esp_tmpl);
if (err)
crypto_unregister_template(&rfc7539_tmpl);

return err;
}

static void __exit chacha20poly1305_module_exit(void)
{
crypto_unregister_template(&rfc7539esp_tmpl);
crypto_unregister_template(&rfc7539_tmpl);
}

Expand All @@ -661,3 +684,4 @@ MODULE_AUTHOR("Martin Willi <[email protected]>");
MODULE_DESCRIPTION("ChaCha20-Poly1305 AEAD");
MODULE_ALIAS_CRYPTO("chacha20poly1305");
MODULE_ALIAS_CRYPTO("rfc7539");
MODULE_ALIAS_CRYPTO("rfc7539esp");

0 comments on commit 4db4ad2

Please sign in to comment.