Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * RSA internal helpers
0004  *
0005  * Copyright (c) 2015, Intel Corporation
0006  * Authors: Tadeusz Struk <tadeusz.struk@intel.com>
0007  */
0008 #ifndef _RSA_HELPER_
0009 #define _RSA_HELPER_
0010 #include <linux/types.h>
0011 
0012 /**
0013  * rsa_key - RSA key structure
0014  * @n           : RSA modulus raw byte stream
0015  * @e           : RSA public exponent raw byte stream
0016  * @d           : RSA private exponent raw byte stream
0017  * @p           : RSA prime factor p of n raw byte stream
0018  * @q           : RSA prime factor q of n raw byte stream
0019  * @dp          : RSA exponent d mod (p - 1) raw byte stream
0020  * @dq          : RSA exponent d mod (q - 1) raw byte stream
0021  * @qinv        : RSA CRT coefficient q^(-1) mod p raw byte stream
0022  * @n_sz        : length in bytes of RSA modulus n
0023  * @e_sz        : length in bytes of RSA public exponent
0024  * @d_sz        : length in bytes of RSA private exponent
0025  * @p_sz        : length in bytes of p field
0026  * @q_sz        : length in bytes of q field
0027  * @dp_sz       : length in bytes of dp field
0028  * @dq_sz       : length in bytes of dq field
0029  * @qinv_sz     : length in bytes of qinv field
0030  */
0031 struct rsa_key {
0032     const u8 *n;
0033     const u8 *e;
0034     const u8 *d;
0035     const u8 *p;
0036     const u8 *q;
0037     const u8 *dp;
0038     const u8 *dq;
0039     const u8 *qinv;
0040     size_t n_sz;
0041     size_t e_sz;
0042     size_t d_sz;
0043     size_t p_sz;
0044     size_t q_sz;
0045     size_t dp_sz;
0046     size_t dq_sz;
0047     size_t qinv_sz;
0048 };
0049 
0050 int rsa_parse_pub_key(struct rsa_key *rsa_key, const void *key,
0051               unsigned int key_len);
0052 
0053 int rsa_parse_priv_key(struct rsa_key *rsa_key, const void *key,
0054                unsigned int key_len);
0055 
0056 extern struct crypto_template rsa_pkcs1pad_tmpl;
0057 #endif