LCOV - code coverage report
Current view: top level - lib/crypto - md4test.c (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 17 22 77.3 %
Date: 2024-04-21 15:09:00 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* 
       2             :    Unix SMB/CIFS implementation.
       3             :    MD4 tests
       4             :    Copyright (C) Stefan Metzmacher 2006
       5             :    
       6             :    This program is free software; you can redistribute it and/or modify
       7             :    it under the terms of the GNU General Public License as published by
       8             :    the Free Software Foundation; either version 3 of the License, or
       9             :    (at your option) any later version.
      10             :    
      11             :    This program is distributed in the hope that it will be useful,
      12             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14             :    GNU General Public License for more details.
      15             :    
      16             :    You should have received a copy of the GNU General Public License
      17             :    along with this program.  If not, see <http://www.gnu.org/licenses/>.
      18             : */
      19             : 
      20             : #include "replace.h"
      21             : #include "../lib/util/samba_util.h"
      22             : #include "lib/crypto/md4.h"
      23             : 
      24             : struct torture_context;
      25             : bool torture_local_crypto_md4(struct torture_context *torture);
      26             : 
      27             : /*
      28             :  This uses the test values from rfc1320
      29             : */
      30           1 : bool torture_local_crypto_md4(struct torture_context *torture)
      31             : {
      32           1 :         bool ret = true;
      33           1 :         uint32_t i;
      34           1 :         struct {
      35             :                 const char *data;
      36             :                 const char *md4;
      37           1 :         } testarray[] = {
      38             :         {
      39             :                 .data   = "",
      40             :                 .md4    = "31d6cfe0d16ae931b73c59d7e0c089c0"
      41             :         },{
      42             :                 .data   = "a",
      43             :                 .md4    = "bde52cb31de33e46245e05fbdbd6fb24"
      44             :         },{
      45             :                 .data   = "abc",
      46             :                 .md4    = "a448017aaf21d8525fc10ae87aa6729d"
      47             :         },{
      48             :                 .data   = "message digest",
      49             :                 .md4    = "d9130a8164549fe818874806e1c7014b"
      50             :         },{
      51             :                 .data   = "abcdefghijklmnopqrstuvwxyz",
      52             :                 .md4    = "d79e1c308aa5bbcdeea8ed63df412da9"
      53             :         },{
      54             :                 .data   = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
      55             :                 .md4    = "043f8582f241db351ce627e153e7f0e4"
      56             :         },{
      57             :                 .data   = "12345678901234567890123456789012345678901234567890123456789012345678901234567890",
      58             :                 .md4    = "e33b4ddc9c38f2199c3e7b164fcc0536"
      59             :         }
      60             :         };
      61             : 
      62           8 :         for (i=0; i < ARRAY_SIZE(testarray); i++) {
      63           7 :                 uint8_t md4[16];
      64           7 :                 int e;
      65           7 :                 DATA_BLOB data;
      66           7 :                 DATA_BLOB md4blob;
      67             : 
      68           7 :                 data = data_blob_string_const(testarray[i].data);
      69           7 :                 md4blob  = strhex_to_data_blob(NULL, testarray[i].md4);
      70             : 
      71           7 :                 mdfour(md4, data.data, data.length);
      72             : 
      73           7 :                 e = memcmp(md4blob.data, md4, MIN(md4blob.length, sizeof(md4)));
      74           7 :                 if (e != 0) {
      75           0 :                         printf("md4 test[%u]: failed\n", i);
      76           0 :                         dump_data(0, data.data, data.length);
      77           0 :                         dump_data(0, md4blob.data, md4blob.length);
      78           0 :                         dump_data(0, md4, sizeof(md4));
      79           0 :                         ret = false;
      80             :                 }
      81           7 :                 talloc_free(md4blob.data);
      82             :         }
      83             : 
      84           1 :         return ret;
      85             : }

Generated by: LCOV version 1.14