desmodes.c 647 B

12345678910111213141516171819202122232425262728293031
  1. #include "os.h"
  2. #include <libsec.h>
  3. /*
  4. * these routines use the 64bit format for
  5. * DES keys.
  6. */
  7. void
  8. setupDESstate(DESstate *s, uchar key[8], uchar *ivec)
  9. {
  10. memset(s, 0, sizeof(*s));
  11. memmove(s->key, key, sizeof(s->key));
  12. des_key_setup(key, s->expanded);
  13. if(ivec)
  14. memmove(s->ivec, ivec, 8);
  15. s->setup = 0xdeadbeef;
  16. }
  17. void
  18. setupDES3state(DES3state *s, uchar key[3][8], uchar *ivec)
  19. {
  20. memset(s, 0, sizeof(*s));
  21. memmove(s->key, key, sizeof(s->key));
  22. des_key_setup(key[0], s->expanded[0]);
  23. des_key_setup(key[1], s->expanded[1]);
  24. des_key_setup(key[2], s->expanded[2]);
  25. if(ivec)
  26. memmove(s->ivec, ivec, 8);
  27. s->setup = 0xdeadbeef;
  28. }