Commit 1856f221 authored by Andres Mejia's avatar Andres Mejia Committed by John Koleszar

Use public domain implementation for MD5 algorithm

The RSA Data Security, Inc. implementation license bears a requirement
similar to the old problematic BSD license with advertising clause.

Change-Id: I877b71ff0548934b1c4fd87245696f53dedbdf26
parent 900d0548
......@@ -26,21 +26,21 @@ is processed, then U, then V. It is important to honor the image's `stride`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_DX
unsigned char md5_sum[16];
md5_ctx_t md5;
MD5Context md5;
int i;
for(plane=0; plane < 3; plane++) {
unsigned char *buf =img->planes[plane];
for(y=0; y<img->d_h >> (plane?1:0); y++) {
md5_update(&md5, buf, img->d_w >> (plane?1:0));
MD5Update(&md5, buf, img->d_w >> (plane?1:0));
buf += img->stride[plane];
md5_finalize(&md5, md5_sum);
MD5Final(md5_sum, &md5);
for(i=0; i<16; i++)
fprintf(outfile, "%02x",md5_sum[i]);
fprintf(outfile, " img-%dx%d-%04d.i420\n", img->d_w, img->d_h,
......@@ -235,9 +235,9 @@ void *out_open(const char *out_fn, int do_md5)
if (do_md5)
md5_ctx_t *md5_ctx = out = malloc(sizeof(md5_ctx_t));
MD5Context *md5_ctx = out = malloc(sizeof(MD5Context));
......@@ -259,7 +259,7 @@ void out_put(void *out, const uint8_t *buf, unsigned int len, int do_md5)
if (do_md5)
md5_update(out, buf, len);
MD5Update(out, buf, len);
......@@ -276,7 +276,7 @@ void out_close(void *out, const char *out_fn, int do_md5)
uint8_t md5[16];
int i;
md5_finalize(out, md5);
MD5Final(md5, out);
for (i = 0; i < 16; i++)
This diff is collapsed.
* Copyright (c) 2010 The VP8 project authors. All Rights Reserved.
* This is the header file for the MD5 message-digest algorithm.
* The algorithm is due to Ron Rivest. This code was
* written by Colin Plumb in 1993, no copyright is claimed.
* This code is in the public domain; do with it what you wish.
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
* Equivalent code is available from RSA Data Security, Inc.
* This code has been tested against that, and is equivalent,
* except that you don't need to include two pages of legalese
* with every copy.
* To compute the message digest of a chunk of bytes, declare an
* MD5Context structure, pass it to MD5Init, call MD5Update as
* needed on buffers full of bytes, and then call MD5Final, which
* will fill a supplied 16-byte array with the digest.
* Changed so as no longer to depend on Colin Plumb's `usual.h'
* header definitions
* - Ian Jackson <>.
* Still in the public domain.
Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
#ifndef MD5_H
#define MD5_H
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
#define md5byte unsigned char
#define UWORD32 unsigned int
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
#include "vpx/vpx_integer.h"
/* MD5 context. */
typedef struct
typedef struct MD5Context MD5Context;
struct MD5Context
uint32_t state[4]; /* state (ABCD) */
uint32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */
uint8_t buffer[64]; /* input buffer */
} md5_ctx_t;
UWORD32 buf[4];
UWORD32 bytes[2];
UWORD32 in[16];
void MD5Init(struct MD5Context *context);
void MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len);
void MD5Final(unsigned char digest[16], struct MD5Context *context);
void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]);
void md5_init(md5_ctx_t *ctx);
void md5_update(md5_ctx_t *ctx, const uint8_t *buf, unsigned int len);
void md5_finalize(md5_ctx_t *ctx, uint8_t md5[16]);
#endif /* !MD5_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment