Home | History | Annotate | Line # | Download | only in des
      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 /*
     11  * DES low level APIs are deprecated for public use, but still ok for internal
     12  * use.
     13  */
     14 #include "internal/deprecated.h"
     15 
     16 #include "des_local.h"
     17 #include <openssl/opensslv.h>
     18 #include <openssl/bio.h>
     19 
     20 const char *DES_options(void)
     21 {
     22     static int init = 1;
     23     static char buf[12];
     24 
     25     if (init) {
     26         if (sizeof(DES_LONG) != sizeof(long))
     27             OPENSSL_strlcpy(buf, "des(int)", sizeof(buf));
     28         else
     29             OPENSSL_strlcpy(buf, "des(long)", sizeof(buf));
     30         init = 0;
     31     }
     32     return buf;
     33 }
     34 
     35 void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
     36     DES_key_schedule *ks, int enc)
     37 {
     38     register DES_LONG l;
     39     DES_LONG ll[2];
     40     const unsigned char *in = &(*input)[0];
     41     unsigned char *out = &(*output)[0];
     42 
     43     c2l(in, l);
     44     ll[0] = l;
     45     c2l(in, l);
     46     ll[1] = l;
     47     DES_encrypt1(ll, ks, enc);
     48     l = ll[0];
     49     l2c(l, out);
     50     l = ll[1];
     51     l2c(l, out);
     52     l = ll[0] = ll[1] = 0;
     53 }
     54