18c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/*- 28c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. 3ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. 4ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. 58c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 6ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Redistribution and use in source and binary forms, with or without 78c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * modification, are permitted provided that the following conditions are met: 8ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * 9ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * a) Redistributions of source code must retain the above copyright notice, 108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * this list of conditions and the following disclaimer. 118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 12ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * b) Redistributions in binary form must reproduce the above copyright 13ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * notice, this list of conditions and the following disclaimer in 148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * the documentation and/or other materials provided with the distribution. 158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 16ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * c) Neither the name of Cisco Systems, Inc. nor the names of its 17ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * contributors may be used to endorse or promote products derived 188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * from this software without specific prior written permission. 198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 20ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THE POSSIBILITY OF SUCH DAMAGE. 318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifdef __FreeBSD__ 348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/cdefs.h> 358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen__FBSDID("$FreeBSD$"); 368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 39026c1482cd1e40d30df1e709e57a6c29fd9af53dt#ifndef __NETINET_SCTP_SHA1_H__ 40026c1482cd1e40d30df1e709e57a6c29fd9af53dt#define __NETINET_SCTP_SHA1_H__ 418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/types.h> 4383a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#if defined(SCTP_USE_NSS_SHA1) 44ec8cbf0c740353314c289a5bc87a7538e2af08bft#if defined(__Userspace_os_Darwin) 45ec8cbf0c740353314c289a5bc87a7538e2af08bft/* The NSS sources require __APPLE__ to be defined. 46ec8cbf0c740353314c289a5bc87a7538e2af08bft * XXX: Remove this ugly hack once the platform defines have been cleaned up. 47ec8cbf0c740353314c289a5bc87a7538e2af08bft */ 48ec8cbf0c740353314c289a5bc87a7538e2af08bft#define __APPLE__ 49ec8cbf0c740353314c289a5bc87a7538e2af08bft#endif 5083a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#include <pk11pub.h> 51ec8cbf0c740353314c289a5bc87a7538e2af08bft#if defined(__Userspace_os_Darwin) 52ec8cbf0c740353314c289a5bc87a7538e2af08bft#undef __APPLE__ 53ec8cbf0c740353314c289a5bc87a7538e2af08bft#endif 5483a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#elif defined(SCTP_USE_OPENSSL_SHA1) 5583a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#include <openssl/sha.h> 5683a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#endif 578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 5883a86bbf399ce2b9b51cdf1c0c679944bbcee0a9tstruct sctp_sha1_context { 5983a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#if defined(SCTP_USE_NSS_SHA1) 6083a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t struct PK11Context *pk11_ctx; 6183a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#elif defined(SCTP_USE_OPENSSL_SHA1) 6283a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t SHA_CTX sha_ctx; 6383a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#else 648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int A; 658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int B; 668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int C; 678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int D; 688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int E; 698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int H0; 708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int H1; 718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int H2; 728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int H3; 738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int H4; 748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int words[80]; 758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int TEMP; 768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* block I am collecting to process */ 778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen char sha_block[64]; 788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* collected so far */ 798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int how_many_in_block; 808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen unsigned int running_total; 8183a86bbf399ce2b9b51cdf1c0c679944bbcee0a9t#endif 828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if (defined(__APPLE__) && defined(KERNEL)) 858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef _KERNEL 868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define _KERNEL 878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 90278be17fd0000fac7f2c3a08349f97184d7e136atuexen#if defined(_KERNEL) || defined(__Userspace__) 918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9283a86bbf399ce2b9b51cdf1c0c679944bbcee0a9tvoid sctp_sha1_init(struct sctp_sha1_context *); 9383a86bbf399ce2b9b51cdf1c0c679944bbcee0a9tvoid sctp_sha1_update(struct sctp_sha1_context *, const unsigned char *, unsigned int); 9483a86bbf399ce2b9b51cdf1c0c679944bbcee0a9tvoid sctp_sha1_final(unsigned char *, struct sctp_sha1_context *); 958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 96026c1482cd1e40d30df1e709e57a6c29fd9af53dt#endif 978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 98