ecb3_enc.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright 1995-2020 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. /*
  10. * DES low level APIs are deprecated for public use, but still ok for internal
  11. * use.
  12. */
  13. #include "internal/deprecated.h"
  14. #include "des_local.h"
  15. void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
  16. DES_key_schedule *ks1, DES_key_schedule *ks2,
  17. DES_key_schedule *ks3, int enc)
  18. {
  19. register DES_LONG l0, l1;
  20. DES_LONG ll[2];
  21. const unsigned char *in = &(*input)[0];
  22. unsigned char *out = &(*output)[0];
  23. c2l(in, l0);
  24. c2l(in, l1);
  25. ll[0] = l0;
  26. ll[1] = l1;
  27. if (enc)
  28. DES_encrypt3(ll, ks1, ks2, ks3);
  29. else
  30. DES_decrypt3(ll, ks1, ks2, ks3);
  31. l0 = ll[0];
  32. l1 = ll[1];
  33. l2c(l0, out);
  34. l2c(l1, out);
  35. }