Annotation of win32/apache13/src/include/ap_sha1.h, revision 1.1.1.1

1.1       parser      1: /* ====================================================================
                      2:  * Copyright (c) 1996-1999 The Apache Group.  All rights reserved.
                      3:  *
                      4:  * Redistribution and use in source and binary forms, with or without
                      5:  * modification, are permitted provided that the following conditions
                      6:  * are met:
                      7:  *
                      8:  * 1. Redistributions of source code must retain the above copyright
                      9:  *    notice, this list of conditions and the following disclaimer. 
                     10:  *
                     11:  * 2. Redistributions in binary form must reproduce the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer in
                     13:  *    the documentation and/or other materials provided with the
                     14:  *    distribution.
                     15:  *
                     16:  * 3. All advertising materials mentioning features or use of this
                     17:  *    software must display the following acknowledgment:
                     18:  *    "This product includes software developed by the Apache Group
                     19:  *    for use in the Apache HTTP server project (http://www.apache.org/)."
                     20:  *
                     21:  * 4. The names "Apache Server" and "Apache Group" must not be used to
                     22:  *    endorse or promote products derived from this software without
                     23:  *    prior written permission. For written permission, please contact
                     24:  *    apache@apache.org.
                     25:  *
                     26:  * 5. Products derived from this software may not be called "Apache"
                     27:  *    nor may "Apache" appear in their names without prior written
                     28:  *    permission of the Apache Group.
                     29:  *
                     30:  * 6. Redistributions of any form whatsoever must retain the following
                     31:  *    acknowledgment:
                     32:  *    "This product includes software developed by the Apache Group
                     33:  *    for use in the Apache HTTP server project (http://www.apache.org/)."
                     34:  *
                     35:  * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
                     36:  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     37:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     38:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR
                     39:  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
                     40:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     41:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
                     42:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     43:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     44:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     45:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
                     46:  * OF THE POSSIBILITY OF SUCH DAMAGE.
                     47:  * ====================================================================
                     48:  *
                     49:  * This software consists of voluntary contributions made by many
                     50:  * individuals on behalf of the Apache Group and was originally based
                     51:  * on public domain software written at the National Center for
                     52:  * Supercomputing Applications, University of Illinois, Urbana-Champaign.
                     53:  * For more information on the Apache Group and the Apache HTTP server
                     54:  * project, please see <http://www.apache.org/>.
                     55:  *
                     56:  * NIST Secure Hash Algorithm
                     57:  *     heavily modified by Uwe Hollerbach uh@alumni.caltech edu
                     58:  *     from Peter C. Gutmann's implementation as found in
                     59:  *     Applied Cryptography by Bruce Schneier
                     60:  *     This code is hereby placed in the public domain
                     61:  */
                     62: 
                     63: #ifndef APACHE_SHA1_H
                     64: #define APACHE_SHA1_H
                     65: 
                     66: #ifdef __cplusplus
                     67: extern "C" {
                     68: #endif
                     69: 
                     70: #define SHA_DIGESTSIZE 20
                     71: 
                     72: /*
                     73:  * Define the Magic String prefix that identifies a password as being
                     74:  * hashed using our algorithm.
                     75:  */
                     76: #define AP_SHA1PW_ID "{SHA}"
                     77: #define AP_SHA1PW_IDLEN 5
                     78: 
                     79: typedef unsigned long AP_LONG;     /* a 32-bit quantity */
                     80: 
                     81: typedef struct {
                     82:     AP_LONG digest[5];             /* message digest */
                     83:     AP_LONG count_lo, count_hi;    /* 64-bit bit count */
                     84:     AP_LONG data[16];              /* SHA data buffer */
                     85:     int local;                     /* unprocessed amount in data */
                     86: } AP_SHA1_CTX;
                     87: 
                     88: API_EXPORT(void) ap_sha1_base64(const char *clear, int len, char *out);
                     89: API_EXPORT(void) ap_SHA1Init(AP_SHA1_CTX *context);
                     90: API_EXPORT(void) ap_SHA1Update(AP_SHA1_CTX *context, const char *input,
                     91:                               unsigned int inputLen);
                     92: API_EXPORT(void) ap_SHA1Update_binary(AP_SHA1_CTX *context,
                     93:                                      const unsigned char *input,
                     94:                                      unsigned int inputLen);
                     95: API_EXPORT(void) ap_SHA1Final(unsigned char digest[SHA_DIGESTSIZE],
                     96:                               AP_SHA1_CTX *context);
                     97: 
                     98: #ifdef __cplusplus
                     99: }
                    100: #endif
                    101: 
                    102: #endif /* !APACHE_SHA1_H */

E-mail: