LCOV - code coverage report
Current view: top level - third_party/openssl/crypto/md5 - md5_dgst.c (source / functions) Hit Total Coverage
Test: tmp.zDYK9MVh93 Lines: 0 97 0.0 %
Date: 2015-10-10 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /* crypto/md5/md5_dgst.c */
       2             : /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
       3             :  * All rights reserved.
       4             :  *
       5             :  * This package is an SSL implementation written
       6             :  * by Eric Young (eay@cryptsoft.com).
       7             :  * The implementation was written so as to conform with Netscapes SSL.
       8             :  *
       9             :  * This library is free for commercial and non-commercial use as long as
      10             :  * the following conditions are aheared to.  The following conditions
      11             :  * apply to all code found in this distribution, be it the RC4, RSA,
      12             :  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
      13             :  * included with this distribution is covered by the same copyright terms
      14             :  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
      15             :  *
      16             :  * Copyright remains Eric Young's, and as such any Copyright notices in
      17             :  * the code are not to be removed.
      18             :  * If this package is used in a product, Eric Young should be given attribution
      19             :  * as the author of the parts of the library used.
      20             :  * This can be in the form of a textual message at program startup or
      21             :  * in documentation (online or textual) provided with the package.
      22             :  *
      23             :  * Redistribution and use in source and binary forms, with or without
      24             :  * modification, are permitted provided that the following conditions
      25             :  * are met:
      26             :  * 1. Redistributions of source code must retain the copyright
      27             :  *    notice, this list of conditions and the following disclaimer.
      28             :  * 2. Redistributions in binary form must reproduce the above copyright
      29             :  *    notice, this list of conditions and the following disclaimer in the
      30             :  *    documentation and/or other materials provided with the distribution.
      31             :  * 3. All advertising materials mentioning features or use of this software
      32             :  *    must display the following acknowledgement:
      33             :  *    "This product includes cryptographic software written by
      34             :  *     Eric Young (eay@cryptsoft.com)"
      35             :  *    The word 'cryptographic' can be left out if the rouines from the library
      36             :  *    being used are not cryptographic related :-).
      37             :  * 4. If you include any Windows specific code (or a derivative thereof) from
      38             :  *    the apps directory (application code) you must include an acknowledgement:
      39             :  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
      40             :  *
      41             :  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
      42             :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      43             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      44             :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
      45             :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      46             :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      47             :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      48             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      49             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      50             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      51             :  * SUCH DAMAGE.
      52             :  *
      53             :  * The licence and distribution terms for any publically available version or
      54             :  * derivative of this code cannot be changed.  i.e. this code cannot simply be
      55             :  * copied and put under another distribution licence
      56             :  * [including the GNU Public Licence.]
      57             :  */
      58             : 
      59             : #include <stdio.h>
      60             : #include "md5_locl.h"
      61             : #include <openssl/opensslv.h>
      62             : #include <openssl/crypto.h>
      63             : 
      64             : const char MD5_version[] = "MD5" OPENSSL_VERSION_PTEXT;
      65             : 
      66             : /*
      67             :  * Implemented from RFC1321 The MD5 Message-Digest Algorithm
      68             :  */
      69             : 
      70             : #define INIT_DATA_A (unsigned long)0x67452301L
      71             : #define INIT_DATA_B (unsigned long)0xefcdab89L
      72             : #define INIT_DATA_C (unsigned long)0x98badcfeL
      73             : #define INIT_DATA_D (unsigned long)0x10325476L
      74             : 
      75           0 : fips_md_init(MD5)
      76             : {
      77             :     memset(c, 0, sizeof(*c));
      78           0 :     c->A = INIT_DATA_A;
      79           0 :     c->B = INIT_DATA_B;
      80           0 :     c->C = INIT_DATA_C;
      81           0 :     c->D = INIT_DATA_D;
      82           0 :     return 1;
      83             : }
      84             : 
      85             : #ifndef md5_block_data_order
      86             : # ifdef X
      87             : #  undef X
      88             : # endif
      89           0 : void md5_block_data_order(MD5_CTX *c, const void *data_, size_t num)
      90             : {
      91             :     const unsigned char *data = data_;
      92             :     register unsigned MD32_REG_T A, B, C, D, l;
      93             : # ifndef MD32_XARRAY
      94             :     /* See comment in crypto/sha/sha_locl.h for details. */
      95             :     unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
      96             :         XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
      97             : #  define X(i)   XX##i
      98             : # else
      99             :     MD5_LONG XX[MD5_LBLOCK];
     100             : #  define X(i)   XX[i]
     101             : # endif
     102             : 
     103           0 :     A = c->A;
     104           0 :     B = c->B;
     105           0 :     C = c->C;
     106           0 :     D = c->D;
     107             : 
     108           0 :     for (; num--;) {
     109           0 :         HOST_c2l(data, l);
     110             :         X(0) = l;
     111           0 :         HOST_c2l(data, l);
     112             :         X(1) = l;
     113             :         /* Round 0 */
     114           0 :         R0(A, B, C, D, X(0), 7, 0xd76aa478L);
     115           0 :         HOST_c2l(data, l);
     116             :         X(2) = l;
     117           0 :         R0(D, A, B, C, X(1), 12, 0xe8c7b756L);
     118           0 :         HOST_c2l(data, l);
     119             :         X(3) = l;
     120           0 :         R0(C, D, A, B, X(2), 17, 0x242070dbL);
     121           0 :         HOST_c2l(data, l);
     122             :         X(4) = l;
     123           0 :         R0(B, C, D, A, X(3), 22, 0xc1bdceeeL);
     124           0 :         HOST_c2l(data, l);
     125             :         X(5) = l;
     126           0 :         R0(A, B, C, D, X(4), 7, 0xf57c0fafL);
     127           0 :         HOST_c2l(data, l);
     128             :         X(6) = l;
     129           0 :         R0(D, A, B, C, X(5), 12, 0x4787c62aL);
     130           0 :         HOST_c2l(data, l);
     131             :         X(7) = l;
     132           0 :         R0(C, D, A, B, X(6), 17, 0xa8304613L);
     133           0 :         HOST_c2l(data, l);
     134             :         X(8) = l;
     135           0 :         R0(B, C, D, A, X(7), 22, 0xfd469501L);
     136           0 :         HOST_c2l(data, l);
     137             :         X(9) = l;
     138           0 :         R0(A, B, C, D, X(8), 7, 0x698098d8L);
     139           0 :         HOST_c2l(data, l);
     140             :         X(10) = l;
     141           0 :         R0(D, A, B, C, X(9), 12, 0x8b44f7afL);
     142           0 :         HOST_c2l(data, l);
     143             :         X(11) = l;
     144           0 :         R0(C, D, A, B, X(10), 17, 0xffff5bb1L);
     145           0 :         HOST_c2l(data, l);
     146             :         X(12) = l;
     147           0 :         R0(B, C, D, A, X(11), 22, 0x895cd7beL);
     148           0 :         HOST_c2l(data, l);
     149             :         X(13) = l;
     150           0 :         R0(A, B, C, D, X(12), 7, 0x6b901122L);
     151           0 :         HOST_c2l(data, l);
     152             :         X(14) = l;
     153           0 :         R0(D, A, B, C, X(13), 12, 0xfd987193L);
     154           0 :         HOST_c2l(data, l);
     155             :         X(15) = l;
     156           0 :         R0(C, D, A, B, X(14), 17, 0xa679438eL);
     157           0 :         R0(B, C, D, A, X(15), 22, 0x49b40821L);
     158             :         /* Round 1 */
     159           0 :         R1(A, B, C, D, X(1), 5, 0xf61e2562L);
     160           0 :         R1(D, A, B, C, X(6), 9, 0xc040b340L);
     161           0 :         R1(C, D, A, B, X(11), 14, 0x265e5a51L);
     162           0 :         R1(B, C, D, A, X(0), 20, 0xe9b6c7aaL);
     163           0 :         R1(A, B, C, D, X(5), 5, 0xd62f105dL);
     164           0 :         R1(D, A, B, C, X(10), 9, 0x02441453L);
     165           0 :         R1(C, D, A, B, X(15), 14, 0xd8a1e681L);
     166           0 :         R1(B, C, D, A, X(4), 20, 0xe7d3fbc8L);
     167           0 :         R1(A, B, C, D, X(9), 5, 0x21e1cde6L);
     168           0 :         R1(D, A, B, C, X(14), 9, 0xc33707d6L);
     169           0 :         R1(C, D, A, B, X(3), 14, 0xf4d50d87L);
     170           0 :         R1(B, C, D, A, X(8), 20, 0x455a14edL);
     171           0 :         R1(A, B, C, D, X(13), 5, 0xa9e3e905L);
     172           0 :         R1(D, A, B, C, X(2), 9, 0xfcefa3f8L);
     173           0 :         R1(C, D, A, B, X(7), 14, 0x676f02d9L);
     174           0 :         R1(B, C, D, A, X(12), 20, 0x8d2a4c8aL);
     175             :         /* Round 2 */
     176           0 :         R2(A, B, C, D, X(5), 4, 0xfffa3942L);
     177           0 :         R2(D, A, B, C, X(8), 11, 0x8771f681L);
     178           0 :         R2(C, D, A, B, X(11), 16, 0x6d9d6122L);
     179           0 :         R2(B, C, D, A, X(14), 23, 0xfde5380cL);
     180           0 :         R2(A, B, C, D, X(1), 4, 0xa4beea44L);
     181           0 :         R2(D, A, B, C, X(4), 11, 0x4bdecfa9L);
     182           0 :         R2(C, D, A, B, X(7), 16, 0xf6bb4b60L);
     183           0 :         R2(B, C, D, A, X(10), 23, 0xbebfbc70L);
     184           0 :         R2(A, B, C, D, X(13), 4, 0x289b7ec6L);
     185           0 :         R2(D, A, B, C, X(0), 11, 0xeaa127faL);
     186           0 :         R2(C, D, A, B, X(3), 16, 0xd4ef3085L);
     187           0 :         R2(B, C, D, A, X(6), 23, 0x04881d05L);
     188           0 :         R2(A, B, C, D, X(9), 4, 0xd9d4d039L);
     189           0 :         R2(D, A, B, C, X(12), 11, 0xe6db99e5L);
     190           0 :         R2(C, D, A, B, X(15), 16, 0x1fa27cf8L);
     191           0 :         R2(B, C, D, A, X(2), 23, 0xc4ac5665L);
     192             :         /* Round 3 */
     193           0 :         R3(A, B, C, D, X(0), 6, 0xf4292244L);
     194           0 :         R3(D, A, B, C, X(7), 10, 0x432aff97L);
     195           0 :         R3(C, D, A, B, X(14), 15, 0xab9423a7L);
     196           0 :         R3(B, C, D, A, X(5), 21, 0xfc93a039L);
     197           0 :         R3(A, B, C, D, X(12), 6, 0x655b59c3L);
     198           0 :         R3(D, A, B, C, X(3), 10, 0x8f0ccc92L);
     199           0 :         R3(C, D, A, B, X(10), 15, 0xffeff47dL);
     200           0 :         R3(B, C, D, A, X(1), 21, 0x85845dd1L);
     201           0 :         R3(A, B, C, D, X(8), 6, 0x6fa87e4fL);
     202           0 :         R3(D, A, B, C, X(15), 10, 0xfe2ce6e0L);
     203           0 :         R3(C, D, A, B, X(6), 15, 0xa3014314L);
     204           0 :         R3(B, C, D, A, X(13), 21, 0x4e0811a1L);
     205           0 :         R3(A, B, C, D, X(4), 6, 0xf7537e82L);
     206           0 :         R3(D, A, B, C, X(11), 10, 0xbd3af235L);
     207           0 :         R3(C, D, A, B, X(2), 15, 0x2ad7d2bbL);
     208           0 :         R3(B, C, D, A, X(9), 21, 0xeb86d391L);
     209             : 
     210           0 :         A = c->A += A;
     211           0 :         B = c->B += B;
     212           0 :         C = c->C += C;
     213           0 :         D = c->D += D;
     214             :     }
     215           0 : }
     216             : #endif

Generated by: LCOV version 1.10