core6.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <stdio.h>
  2. #include "crypto_core_salsa20.h"
  3. unsigned char k[32] = {
  4. 0xee,0x30,0x4f,0xca,0x27,0x00,0x8d,0x8c
  5. ,0x12,0x6f,0x90,0x02,0x79,0x01,0xd8,0x0f
  6. ,0x7f,0x1d,0x8b,0x8d,0xc9,0x36,0xcf,0x3b
  7. ,0x9f,0x81,0x96,0x92,0x82,0x7e,0x57,0x77
  8. } ;
  9. unsigned char in[16] = {
  10. 0x81,0x91,0x8e,0xf2,0xa5,0xe0,0xda,0x9b
  11. ,0x3e,0x90,0x60,0x52,0x1e,0x4b,0xb3,0x52
  12. } ;
  13. unsigned char c[16] = {
  14. 101,120,112, 97,110,100, 32, 51
  15. , 50, 45, 98,121,116,101, 32,107
  16. } ;
  17. unsigned char out[64];
  18. void print(unsigned char *x,unsigned char *y)
  19. {
  20. int i;
  21. unsigned int borrow = 0;
  22. for (i = 0;i < 4;++i) {
  23. unsigned int xi = x[i];
  24. unsigned int yi = y[i];
  25. printf(",0x%02x",255 & (xi - yi - borrow));
  26. borrow = (xi < yi + borrow);
  27. }
  28. }
  29. int main()
  30. {
  31. crypto_core_salsa20(out,in,k,c);
  32. print(out,c);
  33. print(out + 20,c + 4); printf("\n");
  34. print(out + 40,c + 8);
  35. print(out + 60,c + 12); printf("\n");
  36. print(out + 24,in);
  37. print(out + 28,in + 4); printf("\n");
  38. print(out + 32,in + 8);
  39. print(out + 36,in + 12); printf("\n");
  40. return 0;
  41. }