1
/* $Id: sha256.cpp $ */
3
* IPRT - SHA-256 hash functions.
7
* Copyright (C) 2009 Sun Microsystems, Inc.
9
* This file is part of VirtualBox Open Source Edition (OSE), as
10
* available from http://www.virtualbox.org. This file is free software;
11
* you can redistribute it and/or modify it under the terms of the GNU
12
* General Public License (GPL) as published by the Free Software
13
* Foundation, in version 2 as it comes in the "COPYING" file of the
14
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17
* The contents of this file may alternatively be used under the terms
18
* of the Common Development and Distribution License Version 1.0
19
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20
* VirtualBox OSE distribution, in which case the provisions of the
21
* CDDL are applicable instead of those of the GPL.
23
* You may elect to license modified versions of this file under the
24
* terms and conditions of either the GPL or the CDDL or both.
26
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
27
* Clara, CA 95054 USA or visit http://www.sun.com if you need
28
* additional information or have any questions.
32
/*******************************************************************************
34
*******************************************************************************/
35
#include "internal/iprt.h"
37
#include <openssl/sha.h>
39
#define RT_SHA256_PRIVATE_CONTEXT
42
#include <iprt/assert.h>
44
AssertCompile(RT_SIZEOFMEMB(RTSHA256CONTEXT, abPadding) >= RT_SIZEOFMEMB(RTSHA256CONTEXT, Private));
47
RTDECL(void) RTSha256(const void *pvBuf, size_t cbBuf, uint8_t pabDigest[RTSHA256_HASH_SIZE])
51
RTSha256Update(&Ctx, pvBuf, cbBuf);
52
RTSha256Final(&Ctx, pabDigest);
54
RT_EXPORT_SYMBOL(RTSha256);
57
RTDECL(void) RTSha256Init(PRTSHA256CONTEXT pCtx)
59
SHA256_Init(&pCtx->Private);
61
RT_EXPORT_SYMBOL(RTSha256Init);
64
RTDECL(void) RTSha256Update(PRTSHA256CONTEXT pCtx, const void *pvBuf, size_t cbBuf)
66
SHA256_Update(&pCtx->Private, pvBuf, cbBuf);
68
RT_EXPORT_SYMBOL(RTSha256Update);
71
RTDECL(void) RTSha256Final(PRTSHA256CONTEXT pCtx, uint8_t pabDigest[32])
73
SHA256_Final((unsigned char *)&pabDigest[0], &pCtx->Private);
75
RT_EXPORT_SYMBOL(RTSha256Final);