rsa.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. * rsa_key - RSA key structure
  18. * @n : RSA modulus raw byte stream
  19. * @e : RSA public exponent raw byte stream
  20. * @d : RSA private exponent raw byte stream
  21. * @p : RSA prime factor p of n raw byte stream
  22. * @q : RSA prime factor q of n raw byte stream
  23. * @dp : RSA exponent d mod (p - 1) raw byte stream
  24. * @dq : RSA exponent d mod (q - 1) raw byte stream
  25. * @qinv : RSA CRT coefficient q^(-1) mod p raw byte stream
  26. * @n_sz : length in bytes of RSA modulus n
  27. * @e_sz : length in bytes of RSA public exponent
  28. * @d_sz : length in bytes of RSA private exponent
  29. * @p_sz : length in bytes of p field
  30. * @q_sz : length in bytes of q field
  31. * @dp_sz : length in bytes of dp field
  32. * @dq_sz : length in bytes of dq field
  33. * @qinv_sz : length in bytes of qinv field
  34. */
  35. struct rsa_key {
  36. const u8 *n;
  37. const u8 *e;
  38. const u8 *d;
  39. const u8 *p;
  40. const u8 *q;
  41. const u8 *dp;
  42. const u8 *dq;
  43. const u8 *qinv;
  44. size_t n_sz;
  45. size_t e_sz;
  46. size_t d_sz;
  47. size_t p_sz;
  48. size_t q_sz;
  49. size_t dp_sz;
  50. size_t dq_sz;
  51. size_t qinv_sz;
  52. };
  53. int rsa_parse_pub_key(struct rsa_key *rsa_key, const void *key,
  54. unsigned int key_len);
  55. int rsa_parse_priv_key(struct rsa_key *rsa_key, const void *key,
  56. unsigned int key_len);
  57. extern struct crypto_template rsa_pkcs1pad_tmpl;
  58. #endif