| Index: mozilla/security/nss/lib/freebl/sha512.c
|
| ===================================================================
|
| --- mozilla/security/nss/lib/freebl/sha512.c (revision 180595)
|
| +++ mozilla/security/nss/lib/freebl/sha512.c (working copy)
|
| @@ -4,7 +4,7 @@
|
| * This Source Code Form is subject to the terms of the Mozilla Public
|
| * License, v. 2.0. If a copy of the MPL was not distributed with this
|
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
| -/* $Id: sha512.c,v 1.21 2012/07/27 20:00:39 wtc%google.com Exp $ */
|
| +/* $Id: sha512.c,v 1.23 2013/02/06 00:41:13 wtc%google.com Exp $ */
|
|
|
| #ifdef FREEBL_NO_DEPEND
|
| #include "stubs.h"
|
| @@ -462,6 +462,35 @@
|
| *digestLen = padLen;
|
| }
|
|
|
| +void
|
| +SHA256_EndRaw(SHA256Context *ctx, unsigned char *digest,
|
| + unsigned int *digestLen, unsigned int maxDigestLen)
|
| +{
|
| + PRUint32 h[8];
|
| + unsigned int len;
|
| +#ifdef SWAP4MASK
|
| + PRUint32 t1;
|
| +#endif
|
| +
|
| + memcpy(h, ctx->h, sizeof(h));
|
| +
|
| +#if defined(IS_LITTLE_ENDIAN)
|
| + BYTESWAP4(h[0]);
|
| + BYTESWAP4(h[1]);
|
| + BYTESWAP4(h[2]);
|
| + BYTESWAP4(h[3]);
|
| + BYTESWAP4(h[4]);
|
| + BYTESWAP4(h[5]);
|
| + BYTESWAP4(h[6]);
|
| + BYTESWAP4(h[7]);
|
| +#endif
|
| +
|
| + len = PR_MIN(SHA256_LENGTH, maxDigestLen);
|
| + memcpy(digest, h, len);
|
| + if (digestLen)
|
| + *digestLen = len;
|
| +}
|
| +
|
| SECStatus
|
| SHA256_HashBuf(unsigned char *dest, const unsigned char *src,
|
| uint32 src_length)
|
| @@ -556,6 +585,14 @@
|
| SHA256_End(ctx, digest, digestLen, maxLen);
|
| }
|
|
|
| +void
|
| +SHA224_EndRaw(SHA256Context *ctx, unsigned char *digest,
|
| + unsigned int *digestLen, unsigned int maxDigestLen)
|
| +{
|
| + unsigned int maxLen = SHA_MIN(maxDigestLen, SHA224_LENGTH);
|
| + SHA256_EndRaw(ctx, digest, digestLen, maxLen);
|
| +}
|
| +
|
| SECStatus
|
| SHA224_HashBuf(unsigned char *dest, const unsigned char *src,
|
| uint32 src_length)
|
| @@ -1228,6 +1265,36 @@
|
| *digestLen = padLen;
|
| }
|
|
|
| +void
|
| +SHA512_EndRaw(SHA512Context *ctx, unsigned char *digest,
|
| + unsigned int *digestLen, unsigned int maxDigestLen)
|
| +{
|
| +#if defined(HAVE_LONG_LONG)
|
| + PRUint64 t1;
|
| +#else
|
| + PRUint32 t1;
|
| +#endif
|
| + PRUint64 h[8];
|
| + unsigned int len;
|
| +
|
| + memcpy(h, ctx->h, sizeof(h));
|
| +
|
| +#if defined(IS_LITTLE_ENDIAN)
|
| + BYTESWAP8(h[0]);
|
| + BYTESWAP8(h[1]);
|
| + BYTESWAP8(h[2]);
|
| + BYTESWAP8(h[3]);
|
| + BYTESWAP8(h[4]);
|
| + BYTESWAP8(h[5]);
|
| + BYTESWAP8(h[6]);
|
| + BYTESWAP8(h[7]);
|
| +#endif
|
| + len = PR_MIN(SHA512_LENGTH, maxDigestLen);
|
| + memcpy(digest, h, len);
|
| + if (digestLen)
|
| + *digestLen = len;
|
| +}
|
| +
|
| SECStatus
|
| SHA512_HashBuf(unsigned char *dest, const unsigned char *src,
|
| uint32 src_length)
|
| @@ -1336,6 +1403,14 @@
|
| SHA512_End(ctx, digest, digestLen, maxLen);
|
| }
|
|
|
| +void
|
| +SHA384_EndRaw(SHA384Context *ctx, unsigned char *digest,
|
| + unsigned int *digestLen, unsigned int maxDigestLen)
|
| +{
|
| + unsigned int maxLen = SHA_MIN(maxDigestLen, SHA384_LENGTH);
|
| + SHA512_EndRaw(ctx, digest, digestLen, maxLen);
|
| +}
|
| +
|
| SECStatus
|
| SHA384_HashBuf(unsigned char *dest, const unsigned char *src,
|
| uint32 src_length)
|
|
|