boot_rng.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * Copyright (c) 2016, Spreadtrum Communications.
  3. *
  4. * The above copyright notice shall be
  5. * included in all copies or substantial portions of the Software.
  6. *
  7. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  8. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  9. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  10. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  11. * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  12. * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  13. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  14. */
  15. #ifndef SPRD_RNG_H
  16. #define SPRD_RNG_H
  17. #include <stdio.h>
  18. typedef int32_t sprd_crypto_err_t;
  19. enum sprd_crypto_status
  20. {
  21. SPRD_CRYPTO_SUCCESS = 0, /* Success */
  22. SPRD_CRYPTO_ERROR = 0xffff0000, /* Generic Error */
  23. SPRD_CRYPTO_NOSUPPORT, /* Scheme not support */
  24. SPRD_CRYPTO_INVALID_KEY, /* Invalid Key in asymmetric scheme: RSA/DSA/ECCP/DH etc */
  25. SPRD_CRYPTO_INVALID_TYPE, /* Invalid aes_type/des_type/authenc_type/hash_type/cbcmac_type/cmac_type */
  26. SPRD_CRYPTO_INVALID_CONTEXT, /* Invalid context in multi-thread cipher/authenc/mac/hash etc */
  27. SPRD_CRYPTO_INVALID_PADDING, /* Invalid sym_padding/rsassa_padding/rsaes_padding */
  28. SPRD_CRYPTO_INVALID_AUTHENTICATION, /* Invalid authentication in AuthEnc(AES-CCM/AES-GCM)/asymmetric verify(RSA/DSA/ECCP DSA) */
  29. SPRD_CRYPTO_INVALID_ARG, /* Invalid arguments */
  30. SPRD_CRYPTO_INVALID_PACKET, /* Invalid packet in asymmetric enc/dec(RSA) */
  31. SPRD_CRYPTO_LENGTH_ERR, /* Invalid Length in arguments */
  32. SPRD_CRYPTO_OUTOFMEM, /* Memory alloc NULL */
  33. SPRD_CRYPTO_SHORT_BUFFER, /* Output buffer is too short to store result */
  34. SPRD_CRYPTO_DATA_TOO_LARGE_FOR_MODULUS,
  35. SPRD_CRYPTO_NULL, /* NULL pointer in arguments */
  36. SPRD_CRYPTO_ERR_STATE, /* Bad state in mulit-thread cipher/authenc/mac/hash etc */
  37. SPRD_CRYPTO_ERR_RESULT, /* Bad result of test crypto */
  38. };
  39. /* random generator */
  40. sprd_crypto_err_t sprdRngGen(uint8_t *out, uint32_t out_len);
  41. #endif /* SPRD_RNG_H */