caam.h 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (c) 2012, Freescale Semiconductor, Inc.
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without modification,
  6. * are permitted provided that the following conditions are met:
  7. *
  8. * o Redistributions of source code must retain the above copyright notice, this list
  9. * of conditions and the following disclaimer.
  10. *
  11. * o Redistributions in binary form must reproduce the above copyright notice, this
  12. * list of conditions and the following disclaimer in the documentation and/or
  13. * other materials provided with the distribution.
  14. *
  15. * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
  16. * contributors may be used to endorse or promote products derived from this
  17. * software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  20. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  21. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  22. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
  23. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  24. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  25. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  26. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  28. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. #ifndef __CAAM_H__
  31. #define __CAAM_H__
  32. //! @name Error codes
  33. //@{
  34. #if !defined(SUCCESS)
  35. #define SUCCESS (0)
  36. #endif
  37. #define ERROR_IN_PAGE_ALLOC (1)
  38. ////////////////////////////////////////////////////////////////////////////////
  39. //! @brief Enable and initialize the CAAM driver.
  40. //!
  41. //! This function enables the clock to the CAAM. It initializes the RNG, and
  42. //! instantiate it to allow generation of key for blob.
  43. //!
  44. ////////////////////////////////////////////////////////////////////////////////
  45. void caam_open(void);
  46. ////////////////////////////////////////////////////////////////////////////////
  47. //! @brief Encrypt a data with a key obtained from a DEK blob.
  48. //!
  49. //! @param[in] plain_text_addr Location address of the plain text data.
  50. //! @param[in] cipher_text_addr Location address of the cipher text.
  51. //! @param[in] key_addr Location address of the encryption key.
  52. //!
  53. //! @return SUCCESS
  54. //! @return ERROR_XXX
  55. ////////////////////////////////////////////////////////////////////////////////
  56. uint32_t caam_enc_data(uint32_t plain_text_addr, uint32_t cipher_text_addr,
  57. uint32_t key_addr);
  58. ////////////////////////////////////////////////////////////////////////////////
  59. //! @brief Generate a blob of a secure key.
  60. //!
  61. //! @param[in] plain_data_addr Location address of the plain text data.
  62. //! @param[in] blob_addr Location address of the blob.
  63. //!
  64. //! @return SUCCESS
  65. //! @return ERROR_XXX
  66. ////////////////////////////////////////////////////////////////////////////////
  67. uint32_t caam_gen_blob(uint32_t plain_data_addr, uint32_t blob_addr);
  68. ////////////////////////////////////////////////////////////////////////////////
  69. //! @brief Decapsulate a blob of a secure key.
  70. //!
  71. //! @param[in] blob_addr Location address of the blob.
  72. //!
  73. //! @return SUCCESS
  74. //! @return ERROR_XXX
  75. ////////////////////////////////////////////////////////////////////////////////
  76. uint32_t caam_decap_blob(uint32_t blob_addr);
  77. #endif /* __CAAM_H__ */