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	_SHA1_IMPL_H
27*b5a2d845SHai-May Chao #define	_SHA1_IMPL_H
28*b5a2d845SHai-May Chao 
29*b5a2d845SHai-May Chao 
30*b5a2d845SHai-May Chao #ifdef __cplusplus
31*b5a2d845SHai-May Chao extern "C" {
32*b5a2d845SHai-May Chao #endif
33*b5a2d845SHai-May Chao 
34*b5a2d845SHai-May Chao #ifdef _KERNEL
35*b5a2d845SHai-May Chao #define	SHA1_HASH_SIZE		20	/* SHA_1 digest length in bytes */
36*b5a2d845SHai-May Chao #define	SHA1_DIGEST_LENGTH	20	/* SHA1 digest length in bytes */
37*b5a2d845SHai-May Chao #define	SHA1_HMAC_BLOCK_SIZE	64	/* SHA1-HMAC block size */
38*b5a2d845SHai-May Chao #define	SHA1_HMAC_MIN_KEY_LEN	1	/* SHA1-HMAC min key length in bytes */
39*b5a2d845SHai-May Chao #define	SHA1_HMAC_MAX_KEY_LEN	INT_MAX /* SHA1-HMAC max key length in bytes */
40*b5a2d845SHai-May Chao #define	SHA1_HMAC_INTS_PER_BLOCK	(SHA1_HMAC_BLOCK_SIZE/sizeof (uint32_t))
41*b5a2d845SHai-May Chao 
42*b5a2d845SHai-May Chao /*
43*b5a2d845SHai-May Chao  * CSPI information (entry points, provider info, etc.)
44*b5a2d845SHai-May Chao  */
45*b5a2d845SHai-May Chao typedef enum sha1_mech_type {
46*b5a2d845SHai-May Chao 	SHA1_MECH_INFO_TYPE,		/* SUN_CKM_SHA1 */
47*b5a2d845SHai-May Chao 	SHA1_HMAC_MECH_INFO_TYPE,	/* SUN_CKM_SHA1_HMAC */
48*b5a2d845SHai-May Chao 	SHA1_HMAC_GEN_MECH_INFO_TYPE	/* SUN_CKM_SHA1_HMAC_GENERAL */
49*b5a2d845SHai-May Chao } sha1_mech_type_t;
50*b5a2d845SHai-May Chao 
51*b5a2d845SHai-May Chao /*
52*b5a2d845SHai-May Chao  * Context for SHA1 mechanism.
53*b5a2d845SHai-May Chao  */
54*b5a2d845SHai-May Chao typedef struct sha1_ctx {
55*b5a2d845SHai-May Chao 	sha1_mech_type_t	sc_mech_type;	/* type of context */
56*b5a2d845SHai-May Chao 	SHA1_CTX		sc_sha1_ctx;	/* SHA1 context */
57*b5a2d845SHai-May Chao } sha1_ctx_t;
58*b5a2d845SHai-May Chao 
59*b5a2d845SHai-May Chao /*
60*b5a2d845SHai-May Chao  * Context for SHA1-HMAC and SHA1-HMAC-GENERAL mechanisms.
61*b5a2d845SHai-May Chao  */
62*b5a2d845SHai-May Chao typedef struct sha1_hmac_ctx {
63*b5a2d845SHai-May Chao 	sha1_mech_type_t	hc_mech_type;	/* type of context */
64*b5a2d845SHai-May Chao 	uint32_t		hc_digest_len;	/* digest len in bytes */
65*b5a2d845SHai-May Chao 	SHA1_CTX		hc_icontext;	/* inner SHA1 context */
66*b5a2d845SHai-May Chao 	SHA1_CTX		hc_ocontext;	/* outer SHA1 context */
67*b5a2d845SHai-May Chao } sha1_hmac_ctx_t;
68*b5a2d845SHai-May Chao 
69*b5a2d845SHai-May Chao #endif
70*b5a2d845SHai-May Chao 
71*b5a2d845SHai-May Chao #ifdef	__cplusplus
72*b5a2d845SHai-May Chao }
73*b5a2d845SHai-May Chao #endif
74*b5a2d845SHai-May Chao 
75*b5a2d845SHai-May Chao #endif /* _SHA1_IMPL_H */
76