xref: /freebsd/sys/crypto/sha2/sha256.h (revision 8083f14fc2267ab70ecd34b28e670378e100ce96)
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