ecb3_enc.c 926 B

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License 2.0 (the "License"). You may not use
  5. * this file except in compliance with the License. You can obtain a copy
  6. * in the file LICENSE in the source distribution or at
  7. * https://www.openssl.org/source/license.html
  8. */
  9. #include "des_locl.h"
  10. void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
  11. DES_key_schedule *ks1, DES_key_schedule *ks2,
  12. DES_key_schedule *ks3, int enc)
  13. {
  14. register DES_LONG l0, l1;
  15. DES_LONG ll[2];
  16. const unsigned char *in = &(*input)[0];
  17. unsigned char *out = &(*output)[0];
  18. c2l(in, l0);
  19. c2l(in, l1);
  20. ll[0] = l0;
  21. ll[1] = l1;
  22. if (enc)
  23. DES_encrypt3(ll, ks1, ks2, ks3);
  24. else
  25. DES_decrypt3(ll, ks1, ks2, ks3);
  26. l0 = ll[0];
  27. l1 = ll[1];
  28. l2c(l0, out);
  29. l2c(l1, out);
  30. }