12ea20f616
Precise and non-ambiguous license information is important. The recently added morus header files have a SPDX license identifier, which is nice, but at the same time they have a contradictionary license boiler plate text. SPDX-License-Identifier: GPL-2.0 versus * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version Oh well. As the other morus related files are licensed under the GPL v2 or later, it's assumed that the boiler plate code is correct, but the SPDX license identifier is wrong. Fix the SPDX identifier and remove the boiler plate as it is redundant. Fixes:56e8e57fc3
("crypto: morus - Add common SIMD glue code for MORUS") Fixes:396be41f16
("crypto: morus - Add generic MORUS AEAD implementations") Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Ondrej Mosnacek <omosnacek@gmail.com> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: "David S. Miller" <davem@davemloft.net> Cc: linux-crypto@vger.kernel.org Acked-by: Ondrej Mosnacek <omosnacek@gmail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
133 lines
4.3 KiB
C
133 lines
4.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* The MORUS-1280 Authenticated-Encryption Algorithm
|
|
* Common glue skeleton -- header file
|
|
*
|
|
* Copyright (c) 2016-2018 Ondrej Mosnacek <omosnacek@gmail.com>
|
|
* Copyright (C) 2017-2018 Red Hat, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _CRYPTO_MORUS1280_GLUE_H
|
|
#define _CRYPTO_MORUS1280_GLUE_H
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/types.h>
|
|
#include <crypto/algapi.h>
|
|
#include <crypto/aead.h>
|
|
#include <crypto/morus_common.h>
|
|
|
|
#define MORUS1280_WORD_SIZE 8
|
|
#define MORUS1280_BLOCK_SIZE (MORUS_BLOCK_WORDS * MORUS1280_WORD_SIZE)
|
|
|
|
struct morus1280_block {
|
|
u8 bytes[MORUS1280_BLOCK_SIZE];
|
|
};
|
|
|
|
struct morus1280_glue_ops {
|
|
void (*init)(void *state, const void *key, const void *iv);
|
|
void (*ad)(void *state, const void *data, unsigned int length);
|
|
void (*enc)(void *state, const void *src, void *dst, unsigned int length);
|
|
void (*dec)(void *state, const void *src, void *dst, unsigned int length);
|
|
void (*enc_tail)(void *state, const void *src, void *dst, unsigned int length);
|
|
void (*dec_tail)(void *state, const void *src, void *dst, unsigned int length);
|
|
void (*final)(void *state, void *tag_xor, u64 assoclen, u64 cryptlen);
|
|
};
|
|
|
|
struct morus1280_ctx {
|
|
const struct morus1280_glue_ops *ops;
|
|
struct morus1280_block key;
|
|
};
|
|
|
|
void crypto_morus1280_glue_init_ops(struct crypto_aead *aead,
|
|
const struct morus1280_glue_ops *ops);
|
|
int crypto_morus1280_glue_setkey(struct crypto_aead *aead, const u8 *key,
|
|
unsigned int keylen);
|
|
int crypto_morus1280_glue_setauthsize(struct crypto_aead *tfm,
|
|
unsigned int authsize);
|
|
int crypto_morus1280_glue_encrypt(struct aead_request *req);
|
|
int crypto_morus1280_glue_decrypt(struct aead_request *req);
|
|
|
|
int cryptd_morus1280_glue_setkey(struct crypto_aead *aead, const u8 *key,
|
|
unsigned int keylen);
|
|
int cryptd_morus1280_glue_setauthsize(struct crypto_aead *aead,
|
|
unsigned int authsize);
|
|
int cryptd_morus1280_glue_encrypt(struct aead_request *req);
|
|
int cryptd_morus1280_glue_decrypt(struct aead_request *req);
|
|
int cryptd_morus1280_glue_init_tfm(struct crypto_aead *aead);
|
|
void cryptd_morus1280_glue_exit_tfm(struct crypto_aead *aead);
|
|
|
|
#define MORUS1280_DECLARE_ALGS(id, driver_name, priority) \
|
|
static const struct morus1280_glue_ops crypto_morus1280_##id##_ops = {\
|
|
.init = crypto_morus1280_##id##_init, \
|
|
.ad = crypto_morus1280_##id##_ad, \
|
|
.enc = crypto_morus1280_##id##_enc, \
|
|
.enc_tail = crypto_morus1280_##id##_enc_tail, \
|
|
.dec = crypto_morus1280_##id##_dec, \
|
|
.dec_tail = crypto_morus1280_##id##_dec_tail, \
|
|
.final = crypto_morus1280_##id##_final, \
|
|
}; \
|
|
\
|
|
static int crypto_morus1280_##id##_init_tfm(struct crypto_aead *tfm) \
|
|
{ \
|
|
crypto_morus1280_glue_init_ops(tfm, &crypto_morus1280_##id##_ops); \
|
|
return 0; \
|
|
} \
|
|
\
|
|
static void crypto_morus1280_##id##_exit_tfm(struct crypto_aead *tfm) \
|
|
{ \
|
|
} \
|
|
\
|
|
static struct aead_alg crypto_morus1280_##id##_algs[] = {\
|
|
{ \
|
|
.setkey = crypto_morus1280_glue_setkey, \
|
|
.setauthsize = crypto_morus1280_glue_setauthsize, \
|
|
.encrypt = crypto_morus1280_glue_encrypt, \
|
|
.decrypt = crypto_morus1280_glue_decrypt, \
|
|
.init = crypto_morus1280_##id##_init_tfm, \
|
|
.exit = crypto_morus1280_##id##_exit_tfm, \
|
|
\
|
|
.ivsize = MORUS_NONCE_SIZE, \
|
|
.maxauthsize = MORUS_MAX_AUTH_SIZE, \
|
|
.chunksize = MORUS1280_BLOCK_SIZE, \
|
|
\
|
|
.base = { \
|
|
.cra_flags = CRYPTO_ALG_INTERNAL, \
|
|
.cra_blocksize = 1, \
|
|
.cra_ctxsize = sizeof(struct morus1280_ctx), \
|
|
.cra_alignmask = 0, \
|
|
\
|
|
.cra_name = "__morus1280", \
|
|
.cra_driver_name = "__"driver_name, \
|
|
\
|
|
.cra_module = THIS_MODULE, \
|
|
} \
|
|
}, { \
|
|
.setkey = cryptd_morus1280_glue_setkey, \
|
|
.setauthsize = cryptd_morus1280_glue_setauthsize, \
|
|
.encrypt = cryptd_morus1280_glue_encrypt, \
|
|
.decrypt = cryptd_morus1280_glue_decrypt, \
|
|
.init = cryptd_morus1280_glue_init_tfm, \
|
|
.exit = cryptd_morus1280_glue_exit_tfm, \
|
|
\
|
|
.ivsize = MORUS_NONCE_SIZE, \
|
|
.maxauthsize = MORUS_MAX_AUTH_SIZE, \
|
|
.chunksize = MORUS1280_BLOCK_SIZE, \
|
|
\
|
|
.base = { \
|
|
.cra_flags = CRYPTO_ALG_ASYNC, \
|
|
.cra_blocksize = 1, \
|
|
.cra_ctxsize = sizeof(struct crypto_aead *), \
|
|
.cra_alignmask = 0, \
|
|
\
|
|
.cra_priority = priority, \
|
|
\
|
|
.cra_name = "morus1280", \
|
|
.cra_driver_name = driver_name, \
|
|
\
|
|
.cra_module = THIS_MODULE, \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#endif /* _CRYPTO_MORUS1280_GLUE_H */
|