Home | History | Annotate | Line # | Download | only in test
      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  * RC2 low level APIs are deprecated for public use, but still ok for internal
     12  * use.
     13  */
     14 #include "internal/deprecated.h"
     15 
     16 #include "internal/nelem.h"
     17 #include "testutil.h"
     18 
     19 #ifndef OPENSSL_NO_RC2
     20 #include <openssl/rc2.h>
     21 
     22 static unsigned char RC2key[4][16] = {
     23     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     24         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
     25     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     26         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
     27     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     28         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
     29     { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
     30         0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F },
     31 };
     32 
     33 static unsigned char RC2plain[4][8] = {
     34     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
     35     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
     36     { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
     37     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
     38 };
     39 
     40 static unsigned char RC2cipher[4][8] = {
     41     { 0x1C, 0x19, 0x8A, 0x83, 0x8D, 0xF0, 0x28, 0xB7 },
     42     { 0x21, 0x82, 0x9C, 0x78, 0xA9, 0xF9, 0xC0, 0x74 },
     43     { 0x13, 0xDB, 0x35, 0x17, 0xD3, 0x21, 0x86, 0x9E },
     44     { 0x50, 0xDC, 0x01, 0x62, 0xBD, 0x75, 0x7F, 0x31 },
     45 };
     46 
     47 static int test_rc2(const int n)
     48 {
     49     int testresult = 1;
     50     RC2_KEY key;
     51     unsigned char buf[8], buf2[8];
     52 
     53     RC2_set_key(&key, 16, &(RC2key[n][0]), 0 /* or 1024 */);
     54 
     55     RC2_ecb_encrypt(&RC2plain[n][0], buf, &key, RC2_ENCRYPT);
     56     if (!TEST_mem_eq(&RC2cipher[n][0], 8, buf, 8))
     57         testresult = 0;
     58 
     59     RC2_ecb_encrypt(buf, buf2, &key, RC2_DECRYPT);
     60     if (!TEST_mem_eq(&RC2plain[n][0], 8, buf2, 8))
     61         testresult = 0;
     62 
     63     return testresult;
     64 }
     65 
     66 #endif
     67 
     68 int setup_tests(void)
     69 {
     70 #ifndef OPENSSL_NO_RC2
     71     ADD_ALL_TESTS(test_rc2, OSSL_NELEM(RC2key));
     72 #endif
     73     return 1;
     74 }
     75