cregit-Linux how code gets into the kernel

Release 4.11 crypto/akcipher.c

Directory: crypto
/*
 * Public Key Encryption
 *
 * Copyright (c) 2015, Intel Corporation
 * Authors: Tadeusz Struk <tadeusz.struk@intel.com>
 *
 * 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.
 *
 */
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/crypto.h>
#include <linux/compiler.h>
#include <crypto/algapi.h>
#include <linux/cryptouser.h>
#include <net/netlink.h>
#include <crypto/akcipher.h>
#include <crypto/internal/akcipher.h>
#include "internal.h"

#ifdef CONFIG_NET

static int crypto_akcipher_report(struct sk_buff *skb, struct crypto_alg *alg) { struct crypto_report_akcipher rakcipher; strncpy(rakcipher.type, "akcipher", sizeof(rakcipher.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_AKCIPHER, sizeof(struct crypto_report_akcipher), &rakcipher)) goto nla_put_failure; return 0; nla_put_failure: return -EMSGSIZE; }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk66100.00%1100.00%
Total66100.00%1100.00%

#else
static int crypto_akcipher_report(struct sk_buff *skb, struct crypto_alg *alg) { return -ENOSYS; }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk20100.00%1100.00%
Total20100.00%1100.00%

#endif static void crypto_akcipher_show(struct seq_file *m, struct crypto_alg *alg) __maybe_unused;
static void crypto_akcipher_show(struct seq_file *m, struct crypto_alg *alg) { seq_puts(m, "type : akcipher\n"); }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk23100.00%1100.00%
Total23100.00%1100.00%


static void crypto_akcipher_exit_tfm(struct crypto_tfm *tfm) { struct crypto_akcipher *akcipher = __crypto_akcipher_tfm(tfm); struct akcipher_alg *alg = crypto_akcipher_alg(akcipher); alg->exit(akcipher); }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk38100.00%1100.00%
Total38100.00%1100.00%


static int crypto_akcipher_init_tfm(struct crypto_tfm *tfm) { struct crypto_akcipher *akcipher = __crypto_akcipher_tfm(tfm); struct akcipher_alg *alg = crypto_akcipher_alg(akcipher); if (alg->exit) akcipher->base.exit = crypto_akcipher_exit_tfm; if (alg->init) return alg->init(akcipher); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk62100.00%1100.00%
Total62100.00%1100.00%


static void crypto_akcipher_free_instance(struct crypto_instance *inst) { struct akcipher_instance *akcipher = akcipher_instance(inst); akcipher->free(akcipher); }

Contributors

PersonTokensPropCommitsCommitProp
Andrzej Zaborowski28100.00%1100.00%
Total28100.00%1100.00%

static const struct crypto_type crypto_akcipher_type = { .extsize = crypto_alg_extsize, .init_tfm = crypto_akcipher_init_tfm, .free = crypto_akcipher_free_instance, #ifdef CONFIG_PROC_FS .show = crypto_akcipher_show, #endif .report = crypto_akcipher_report, .maskclear = ~CRYPTO_ALG_TYPE_MASK, .maskset = CRYPTO_ALG_TYPE_MASK, .type = CRYPTO_ALG_TYPE_AKCIPHER, .tfmsize = offsetof(struct crypto_akcipher, base), };
int crypto_grab_akcipher(struct crypto_akcipher_spawn *spawn, const char *name, u32 type, u32 mask) { spawn->base.frontend = &crypto_akcipher_type; return crypto_grab_spawn(&spawn->base, name, type, mask); }

Contributors

PersonTokensPropCommitsCommitProp
Andrzej Zaborowski45100.00%1100.00%
Total45100.00%1100.00%

EXPORT_SYMBOL_GPL(crypto_grab_akcipher);
struct crypto_akcipher *crypto_alloc_akcipher(const char *alg_name, u32 type, u32 mask) { return crypto_alloc_tfm(alg_name, &crypto_akcipher_type, type, mask); }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk31100.00%1100.00%
Total31100.00%1100.00%

EXPORT_SYMBOL_GPL(crypto_alloc_akcipher);
static void akcipher_prepare_alg(struct akcipher_alg *alg) { struct crypto_alg *base = &alg->base; base->cra_type = &crypto_akcipher_type; base->cra_flags &= ~CRYPTO_ALG_TYPE_MASK; base->cra_flags |= CRYPTO_ALG_TYPE_AKCIPHER; }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk3790.24%150.00%
Andrzej Zaborowski49.76%150.00%
Total41100.00%2100.00%


int crypto_register_akcipher(struct akcipher_alg *alg) { struct crypto_alg *base = &alg->base; akcipher_prepare_alg(alg); return crypto_register_alg(base); }

Contributors

PersonTokensPropCommitsCommitProp
Andrzej Zaborowski2477.42%150.00%
Tadeusz Struk722.58%150.00%
Total31100.00%2100.00%

EXPORT_SYMBOL_GPL(crypto_register_akcipher);
void crypto_unregister_akcipher(struct akcipher_alg *alg) { crypto_unregister_alg(&alg->base); }

Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk18100.00%1100.00%
Total18100.00%1100.00%

EXPORT_SYMBOL_GPL(crypto_unregister_akcipher);
int akcipher_register_instance(struct crypto_template *tmpl, struct akcipher_instance *inst) { akcipher_prepare_alg(&inst->alg); return crypto_register_instance(tmpl, akcipher_crypto_instance(inst)); }

Contributors

PersonTokensPropCommitsCommitProp
Andrzej Zaborowski34100.00%1100.00%
Total34100.00%1100.00%

EXPORT_SYMBOL_GPL(akcipher_register_instance); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Generic public key cipher type");

Overall Contributors

PersonTokensPropCommitsCommitProp
Tadeusz Struk43872.64%250.00%
Andrzej Zaborowski15325.37%125.00%
Gideon Israel Dsouza121.99%125.00%
Total603100.00%4100.00%
Directory: crypto
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.