197447ea4SJohn-Mark Gurney /*- 297447ea4SJohn-Mark Gurney * Copyright 2005 Colin Percival 397447ea4SJohn-Mark Gurney * All rights reserved. 497447ea4SJohn-Mark Gurney * 597447ea4SJohn-Mark Gurney * Redistribution and use in source and binary forms, with or without 697447ea4SJohn-Mark Gurney * modification, are permitted provided that the following conditions 797447ea4SJohn-Mark Gurney * are met: 897447ea4SJohn-Mark Gurney * 1. Redistributions of source code must retain the above copyright 997447ea4SJohn-Mark Gurney * notice, this list of conditions and the following disclaimer. 1097447ea4SJohn-Mark Gurney * 2. Redistributions in binary form must reproduce the above copyright 1197447ea4SJohn-Mark Gurney * notice, this list of conditions and the following disclaimer in the 1297447ea4SJohn-Mark Gurney * documentation and/or other materials provided with the distribution. 1397447ea4SJohn-Mark Gurney * 1497447ea4SJohn-Mark Gurney * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1597447ea4SJohn-Mark Gurney * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1697447ea4SJohn-Mark Gurney * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1797447ea4SJohn-Mark Gurney * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1897447ea4SJohn-Mark Gurney * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1997447ea4SJohn-Mark Gurney * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2097447ea4SJohn-Mark Gurney * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2197447ea4SJohn-Mark Gurney * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2297447ea4SJohn-Mark Gurney * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2397447ea4SJohn-Mark Gurney * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2497447ea4SJohn-Mark Gurney * SUCH DAMAGE. 2597447ea4SJohn-Mark Gurney * 2697447ea4SJohn-Mark Gurney * $FreeBSD$ 2797447ea4SJohn-Mark Gurney */ 2897447ea4SJohn-Mark Gurney 2997447ea4SJohn-Mark Gurney #ifndef _SHA256_H_ 3097447ea4SJohn-Mark Gurney #define _SHA256_H_ 3197447ea4SJohn-Mark Gurney 32*8083f14fSJohn-Mark Gurney #ifndef _KERNEL 3397447ea4SJohn-Mark Gurney #include <sys/types.h> 34*8083f14fSJohn-Mark Gurney #endif 3597447ea4SJohn-Mark Gurney 3697447ea4SJohn-Mark Gurney typedef struct SHA256Context { 3797447ea4SJohn-Mark Gurney uint32_t state[8]; 3897447ea4SJohn-Mark Gurney uint64_t count; 39*8083f14fSJohn-Mark Gurney uint8_t buf[64]; 4097447ea4SJohn-Mark Gurney } SHA256_CTX; 4197447ea4SJohn-Mark Gurney 4297447ea4SJohn-Mark Gurney __BEGIN_DECLS 4397447ea4SJohn-Mark Gurney void SHA256_Init(SHA256_CTX *); 4497447ea4SJohn-Mark Gurney void SHA256_Update(SHA256_CTX *, const void *, size_t); 4597447ea4SJohn-Mark Gurney void SHA256_Final(unsigned char [32], SHA256_CTX *); 4697447ea4SJohn-Mark Gurney char *SHA256_End(SHA256_CTX *, char *); 47*8083f14fSJohn-Mark Gurney char *SHA256_Data(const void *, unsigned int, char *); 48*8083f14fSJohn-Mark Gurney #ifndef _KERNEL 4997447ea4SJohn-Mark Gurney char *SHA256_File(const char *, char *); 5097447ea4SJohn-Mark Gurney char *SHA256_FileChunk(const char *, char *, off_t, off_t); 51*8083f14fSJohn-Mark Gurney #endif 5297447ea4SJohn-Mark Gurney __END_DECLS 5397447ea4SJohn-Mark Gurney 5497447ea4SJohn-Mark Gurney #endif /* !_SHA256_H_ */ 55