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