gd_crypto.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /*!
  2. *****************************************************************************
  3. ** \file gd_lib/GK7101/inc/crypto.h
  4. **
  5. ** \version $Id$
  6. **
  7. ** \brief
  8. **
  9. ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
  10. ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
  11. ** OMMISSIONS
  12. **
  13. ** (C) Copyright 2012-2013 by GOKE MICROELECTRONICS CO.,LTD
  14. **
  15. *****************************************************************************
  16. */
  17. #ifndef _CRYPTO_H_
  18. #define _CRYPTO_H_
  19. //*****************************************************************************
  20. //*****************************************************************************
  21. //** Defines and Macros
  22. //*****************************************************************************
  23. //*****************************************************************************
  24. //*****************************************************************************
  25. //*****************************************************************************
  26. //** Enumerated types
  27. //*****************************************************************************
  28. //*****************************************************************************
  29. /*!
  30. *******************************************************************************
  31. **
  32. ** \brief CRYPTO mode.
  33. **
  34. *******************************************************************************
  35. */
  36. typedef enum
  37. {
  38. GD_CRYPTO_DES = 0, // used DES
  39. GD_CRYPTO_AES_128, // used AES_128
  40. GD_CRYPTO_AES_192, // used AES_192
  41. GD_CRYPTO_AES_256, // used AES_256
  42. GD_CRYPTO_MODE_MAX, //
  43. }GD_CRYPTO_MODE_E;
  44. //GD_INT_AES_OUTPUT_READY_IRQ = (13 + 32), //!< edge, AES output ready from Crypt block
  45. //GD_INT_DES_OUTPUT_READY_IRQ = (14 + 32), //!< edge, DES output ready from Crypt block
  46. //*****************************************************************************
  47. //*****************************************************************************
  48. //** Data Structures
  49. //*****************************************************************************
  50. //*****************************************************************************
  51. typedef struct
  52. {
  53. U32 key_hi;
  54. U32 key_lo;
  55. }GD_CRYPTO_DES_KEY_T;
  56. typedef struct
  57. {
  58. U32 key_127_96;
  59. U32 key_95_64;
  60. U32 key_63_32;
  61. U32 key_31_0;
  62. }GD_CRYPTO_AES128_KEY_T;
  63. typedef struct
  64. {
  65. U32 key_191_160;
  66. U32 key_159_128;
  67. U32 key_127_96;
  68. U32 key_95_64;
  69. U32 key_63_32;
  70. U32 key_31_0;
  71. }GD_CRYPTO_AES192_KEY_T;
  72. typedef struct
  73. {
  74. U32 key_255_224;
  75. U32 key_223_192;
  76. U32 key_191_160;
  77. U32 key_159_128;
  78. U32 key_127_96;
  79. U32 key_95_64;
  80. U32 key_63_32;
  81. U32 key_31_0;
  82. }GD_CRYPTO_AES256_KEY_T;
  83. typedef union
  84. {
  85. U32 key[8];
  86. GD_CRYPTO_DES_KEY_T des_key;
  87. GD_CRYPTO_AES128_KEY_T aes128_key;
  88. GD_CRYPTO_AES192_KEY_T aes192_key;
  89. GD_CRYPTO_AES256_KEY_T aes256_key;
  90. }GD_CRYPTO_KEY_T;
  91. typedef struct
  92. {
  93. U32 data_hi;
  94. U32 data_lo;
  95. }GD_CRYPTO_DES_DATA_T;
  96. typedef struct
  97. {
  98. U32 data_127_96;
  99. U32 data_95_64;
  100. U32 data_63_32;
  101. U32 data_31_0;
  102. }GD_CRYPTO_AES_DATA_T;
  103. typedef union
  104. {
  105. U32 data[4];
  106. GD_CRYPTO_DES_DATA_T des_data;
  107. GD_CRYPTO_AES_DATA_T aes_data;
  108. }GD_CRYPTO_DATA_T;
  109. typedef struct
  110. {
  111. GD_CRYPTO_MODE_E mode;
  112. GD_CRYPTO_KEY_T* pkey;
  113. GBOOL useint;
  114. GISR2 (*notifyFct)(void);
  115. }GD_CRYPTO_OpenParamsT;
  116. //*****************************************************************************
  117. //*****************************************************************************
  118. //** Global Data
  119. //*****************************************************************************
  120. //*****************************************************************************
  121. GERR GD_CRYPTO_Open(GD_CRYPTO_OpenParamsT* pOpenParams, GD_HANDLE* pHandle);
  122. GERR GD_CRYPTO_Close(GD_HANDLE* pHandle);
  123. GERR GD_CRYPTO_EncrptData(GD_HANDLE handle, GD_CRYPTO_DATA_T* data_in, GD_CRYPTO_DATA_T* data_out);
  124. GERR GD_CRYPTO_DecrptData(GD_HANDLE handle, GD_CRYPTO_DATA_T* data_in, GD_CRYPTO_DATA_T* data_out);
  125. //*****************************************************************************
  126. //*****************************************************************************
  127. //** API Functions
  128. //*****************************************************************************
  129. //*****************************************************************************
  130. #ifdef __cplusplus
  131. extern "C" {
  132. #endif
  133. #ifdef __cplusplus
  134. }
  135. #endif
  136. #endif /* _CRYPTO_H_ */