#include <linux/module.h>
#include <linux/crypto.h>
#include <crypto/streebog.h>
#include <crypto/internal/akcipher.h>
#include <crypto/internal/ecc.h>
#include <crypto/akcipher.h>
#include <linux/oid_registry.h>
#include <linux/scatterlist.h>
#include "ecrdsa_params.asn1.h"
#include "ecrdsa_pub_key.asn1.h"
#include "ecrdsa_defs.h"
#define ECRDSA_MAX_SIG_SIZE …
#define ECRDSA_MAX_DIGITS …
struct ecrdsa_ctx { … };
static const struct ecc_curve *get_curve_by_oid(enum OID oid)
{ … }
static int ecrdsa_verify(struct akcipher_request *req)
{ … }
int ecrdsa_param_curve(void *context, size_t hdrlen, unsigned char tag,
const void *value, size_t vlen)
{ … }
int ecrdsa_param_digest(void *context, size_t hdrlen, unsigned char tag,
const void *value, size_t vlen)
{ … }
int ecrdsa_parse_pub_key(void *context, size_t hdrlen, unsigned char tag,
const void *value, size_t vlen)
{ … }
static u8 *ecrdsa_unpack_u32(u32 *dst, void *src)
{ … }
static int ecrdsa_set_pub_key(struct crypto_akcipher *tfm, const void *key,
unsigned int keylen)
{ … }
static unsigned int ecrdsa_max_size(struct crypto_akcipher *tfm)
{ … }
static void ecrdsa_exit_tfm(struct crypto_akcipher *tfm)
{ … }
static struct akcipher_alg ecrdsa_alg = …;
static int __init ecrdsa_mod_init(void)
{ … }
static void __exit ecrdsa_mod_fini(void)
{ … }
module_init(…) …;
module_exit(ecrdsa_mod_fini);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;