1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Key-agreement Protocol Primitives (KPP) 4 * 5 * Copyright (c) 2016, Intel Corporation 6 * Authors: Salvatore Benedetto <salvatore.benedetto@intel.com> 7 */ 8#ifndef _CRYPTO_KPP_INT_H 9#define _CRYPTO_KPP_INT_H 10#include <crypto/kpp.h> 11#include <crypto/algapi.h> 12 13/* 14 * Transform internal helpers. 15 */ 16static inline void *kpp_request_ctx(struct kpp_request *req) 17{ 18 return req->__ctx; 19} 20 21static inline void *kpp_tfm_ctx(struct crypto_kpp *tfm) 22{ 23 return tfm->base.__crt_ctx; 24} 25 26static inline void kpp_request_complete(struct kpp_request *req, int err) 27{ 28 req->base.complete(&req->base, err); 29} 30 31static inline const char *kpp_alg_name(struct crypto_kpp *tfm) 32{ 33 return crypto_kpp_tfm(tfm)->__crt_alg->cra_name; 34} 35 36/** 37 * crypto_register_kpp() -- Register key-agreement protocol primitives algorithm 38 * 39 * Function registers an implementation of a key-agreement protocol primitive 40 * algorithm 41 * 42 * @alg: algorithm definition 43 * 44 * Return: zero on success; error code in case of error 45 */ 46int crypto_register_kpp(struct kpp_alg *alg); 47 48/** 49 * crypto_unregister_kpp() -- Unregister key-agreement protocol primitive 50 * algorithm 51 * 52 * Function unregisters an implementation of a key-agreement protocol primitive 53 * algorithm 54 * 55 * @alg: algorithm definition 56 */ 57void crypto_unregister_kpp(struct kpp_alg *alg); 58 59#endif 60