ed25519_donna_portable.h 594 B

12345678910111213141516171819202122
  1. #define mul32x32_64(a, b) (((uint64_t)(a)) * (b))
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdint.h>
  5. #define DONNA_INLINE
  6. #undef ALIGN
  7. #define ALIGN(x) __attribute__((aligned(x)))
  8. static inline void U32TO8_LE(unsigned char* p, const uint32_t v) {
  9. p[0] = (unsigned char)(v);
  10. p[1] = (unsigned char)(v >> 8);
  11. p[2] = (unsigned char)(v >> 16);
  12. p[3] = (unsigned char)(v >> 24);
  13. }
  14. static inline uint32_t U8TO32_LE(const unsigned char* p) {
  15. return (
  16. ((uint32_t)(p[0])) | ((uint32_t)(p[1]) << 8) | ((uint32_t)(p[2]) << 16) |
  17. ((uint32_t)(p[3]) << 24));
  18. }