1 /* 2 * RSA internal helpers 3 * 4 * Copyright (c) 2015, Intel Corporation 5 * Authors: Tadeusz Struk <tadeusz.struk@intel.com> 6 * 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the Free 9 * Software Foundation; either version 2 of the License, or (at your option) 10 * any later version. 11 * 12 */ 13 #ifndef _RSA_HELPER_ 14 #define _RSA_HELPER_ 15 #include <linux/types.h> 16 17 /** 18 * rsa_key - RSA key structure 19 * @n : RSA modulus raw byte stream 20 * @e : RSA public exponent raw byte stream 21 * @d : RSA private exponent raw byte stream 22 * @p : RSA prime factor p of n raw byte stream 23 * @q : RSA prime factor q of n raw byte stream 24 * @dp : RSA exponent d mod (p - 1) raw byte stream 25 * @dq : RSA exponent d mod (q - 1) raw byte stream 26 * @qinv : RSA CRT coefficient q^(-1) mod p raw byte stream 27 * @n_sz : length in bytes of RSA modulus n 28 * @e_sz : length in bytes of RSA public exponent 29 * @d_sz : length in bytes of RSA private exponent 30 * @p_sz : length in bytes of p field 31 * @q_sz : length in bytes of q field 32 * @dp_sz : length in bytes of dp field 33 * @dq_sz : length in bytes of dq field 34 * @qinv_sz : length in bytes of qinv field 35 */ 36 struct rsa_key { 37 const u8 *n; 38 const u8 *e; 39 const u8 *d; 40 const u8 *p; 41 const u8 *q; 42 const u8 *dp; 43 const u8 *dq; 44 const u8 *qinv; 45 size_t n_sz; 46 size_t e_sz; 47 size_t d_sz; 48 size_t p_sz; 49 size_t q_sz; 50 size_t dp_sz; 51 size_t dq_sz; 52 size_t qinv_sz; 53 }; 54 55 int rsa_parse_pub_key(struct rsa_key *rsa_key, const void *key, 56 unsigned int key_len); 57 58 int rsa_parse_priv_key(struct rsa_key *rsa_key, const void *key, 59 unsigned int key_len); 60 61 extern struct crypto_template rsa_pkcs1pad_tmpl; 62 #endif 63