1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2cfc2bb32STadeusz Struk /* 3cfc2bb32STadeusz Struk * RSA internal helpers 4cfc2bb32STadeusz Struk * 5cfc2bb32STadeusz Struk * Copyright (c) 2015, Intel Corporation 6cfc2bb32STadeusz Struk * Authors: Tadeusz Struk <tadeusz.struk@intel.com> 7cfc2bb32STadeusz Struk */ 8cfc2bb32STadeusz Struk #ifndef _RSA_HELPER_ 9cfc2bb32STadeusz Struk #define _RSA_HELPER_ 105a7de973STudor Ambarus #include <linux/types.h> 11cfc2bb32STadeusz Struk 125a7de973STudor Ambarus /** 135a7de973STudor Ambarus * rsa_key - RSA key structure 145a7de973STudor Ambarus * @n : RSA modulus raw byte stream 155a7de973STudor Ambarus * @e : RSA public exponent raw byte stream 165a7de973STudor Ambarus * @d : RSA private exponent raw byte stream 178be0b84eSSalvatore Benedetto * @p : RSA prime factor p of n raw byte stream 188be0b84eSSalvatore Benedetto * @q : RSA prime factor q of n raw byte stream 198be0b84eSSalvatore Benedetto * @dp : RSA exponent d mod (p - 1) raw byte stream 208be0b84eSSalvatore Benedetto * @dq : RSA exponent d mod (q - 1) raw byte stream 218be0b84eSSalvatore Benedetto * @qinv : RSA CRT coefficient q^(-1) mod p raw byte stream 225a7de973STudor Ambarus * @n_sz : length in bytes of RSA modulus n 235a7de973STudor Ambarus * @e_sz : length in bytes of RSA public exponent 245a7de973STudor Ambarus * @d_sz : length in bytes of RSA private exponent 258be0b84eSSalvatore Benedetto * @p_sz : length in bytes of p field 268be0b84eSSalvatore Benedetto * @q_sz : length in bytes of q field 278be0b84eSSalvatore Benedetto * @dp_sz : length in bytes of dp field 288be0b84eSSalvatore Benedetto * @dq_sz : length in bytes of dq field 298be0b84eSSalvatore Benedetto * @qinv_sz : length in bytes of qinv field 305a7de973STudor Ambarus */ 31cfc2bb32STadeusz Struk struct rsa_key { 325a7de973STudor Ambarus const u8 *n; 335a7de973STudor Ambarus const u8 *e; 345a7de973STudor Ambarus const u8 *d; 358be0b84eSSalvatore Benedetto const u8 *p; 368be0b84eSSalvatore Benedetto const u8 *q; 378be0b84eSSalvatore Benedetto const u8 *dp; 388be0b84eSSalvatore Benedetto const u8 *dq; 398be0b84eSSalvatore Benedetto const u8 *qinv; 405a7de973STudor Ambarus size_t n_sz; 415a7de973STudor Ambarus size_t e_sz; 425a7de973STudor Ambarus size_t d_sz; 438be0b84eSSalvatore Benedetto size_t p_sz; 448be0b84eSSalvatore Benedetto size_t q_sz; 458be0b84eSSalvatore Benedetto size_t dp_sz; 468be0b84eSSalvatore Benedetto size_t dq_sz; 478be0b84eSSalvatore Benedetto size_t qinv_sz; 48cfc2bb32STadeusz Struk }; 49cfc2bb32STadeusz Struk 5022287b0bSTadeusz Struk int rsa_parse_pub_key(struct rsa_key *rsa_key, const void *key, 5122287b0bSTadeusz Struk unsigned int key_len); 5222287b0bSTadeusz Struk 5322287b0bSTadeusz Struk int rsa_parse_priv_key(struct rsa_key *rsa_key, const void *key, 54cfc2bb32STadeusz Struk unsigned int key_len); 55cfc2bb32STadeusz Struk 563d5b1ecdSAndrzej Zaborowski extern struct crypto_template rsa_pkcs1pad_tmpl; 57cfc2bb32STadeusz Struk #endif 58