Home | History | Annotate | Line # | Download | only in test
rc2test.c revision 1.1.1.1
      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