xref: /titanic_50/usr/src/common/crypto/sha2/sha2_impl.h (revision 6ea3c0609e50782557505b88bb391b786bca32c9)
1*b5a2d845SHai-May Chao /*
2*b5a2d845SHai-May Chao  * CDDL HEADER START
3*b5a2d845SHai-May Chao  *
4*b5a2d845SHai-May Chao  * The contents of this file are subject to the terms of the
5*b5a2d845SHai-May Chao  * Common Development and Distribution License (the "License").
6*b5a2d845SHai-May Chao  * You may not use this file except in compliance with the License.
7*b5a2d845SHai-May Chao  *
8*b5a2d845SHai-May Chao  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*b5a2d845SHai-May Chao  * or http://www.opensolaris.org/os/licensing.
10*b5a2d845SHai-May Chao  * See the License for the specific language governing permissions
11*b5a2d845SHai-May Chao  * and limitations under the License.
12*b5a2d845SHai-May Chao  *
13*b5a2d845SHai-May Chao  * When distributing Covered Code, include this CDDL HEADER in each
14*b5a2d845SHai-May Chao  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*b5a2d845SHai-May Chao  * If applicable, add the following below this CDDL HEADER, with the
16*b5a2d845SHai-May Chao  * fields enclosed by brackets "[]" replaced with your own identifying
17*b5a2d845SHai-May Chao  * information: Portions Copyright [yyyy] [name of copyright owner]
18*b5a2d845SHai-May Chao  *
19*b5a2d845SHai-May Chao  * CDDL HEADER END
20*b5a2d845SHai-May Chao  */
21*b5a2d845SHai-May Chao /*
22*b5a2d845SHai-May Chao  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23*b5a2d845SHai-May Chao  * Use is subject to license terms.
24*b5a2d845SHai-May Chao  */
25*b5a2d845SHai-May Chao 
26*b5a2d845SHai-May Chao #ifndef	_SHA2_IMPL_H
27*b5a2d845SHai-May Chao #define	_SHA2_IMPL_H
28*b5a2d845SHai-May Chao 
29*b5a2d845SHai-May Chao #ifdef __cplusplus
30*b5a2d845SHai-May Chao extern "C" {
31*b5a2d845SHai-May Chao #endif
32*b5a2d845SHai-May Chao 
33*b5a2d845SHai-May Chao typedef enum {
34*b5a2d845SHai-May Chao 	SHA1_TYPE,
35*b5a2d845SHai-May Chao 	SHA256_TYPE,
36*b5a2d845SHai-May Chao 	SHA384_TYPE,
37*b5a2d845SHai-May Chao 	SHA512_TYPE
38*b5a2d845SHai-May Chao } sha2_mech_t;
39*b5a2d845SHai-May Chao 
40*b5a2d845SHai-May Chao #ifdef _KERNEL
41*b5a2d845SHai-May Chao 
42*b5a2d845SHai-May Chao /*
43*b5a2d845SHai-May Chao  * Context for SHA2 mechanism.
44*b5a2d845SHai-May Chao  */
45*b5a2d845SHai-May Chao typedef struct sha2_ctx {
46*b5a2d845SHai-May Chao 	sha2_mech_type_t	sc_mech_type;	/* type of context */
47*b5a2d845SHai-May Chao 	SHA2_CTX		sc_sha2_ctx;	/* SHA2 context */
48*b5a2d845SHai-May Chao } sha2_ctx_t;
49*b5a2d845SHai-May Chao 
50*b5a2d845SHai-May Chao /*
51*b5a2d845SHai-May Chao  * Context for SHA2 HMAC and HMAC GENERAL mechanisms.
52*b5a2d845SHai-May Chao  */
53*b5a2d845SHai-May Chao typedef struct sha2_hmac_ctx {
54*b5a2d845SHai-May Chao 	sha2_mech_type_t	hc_mech_type;	/* type of context */
55*b5a2d845SHai-May Chao 	uint32_t		hc_digest_len;	/* digest len in bytes */
56*b5a2d845SHai-May Chao 	SHA2_CTX		hc_icontext;	/* inner SHA2 context */
57*b5a2d845SHai-May Chao 	SHA2_CTX		hc_ocontext;	/* outer SHA2 context */
58*b5a2d845SHai-May Chao } sha2_hmac_ctx_t;
59*b5a2d845SHai-May Chao 
60*b5a2d845SHai-May Chao #endif
61*b5a2d845SHai-May Chao 
62*b5a2d845SHai-May Chao #ifdef	__cplusplus
63*b5a2d845SHai-May Chao }
64*b5a2d845SHai-May Chao #endif
65*b5a2d845SHai-May Chao 
66*b5a2d845SHai-May Chao #endif /* _SHA2_IMPL_H */
67