Annotation of embedaddon/sudo/plugins/sudoers/sha2.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (c) 2013 Todd C. Miller <Todd.Miller@courtesan.com>
                      3:  *
                      4:  * Permission to use, copy, modify, and distribute this software for any
                      5:  * purpose with or without fee is hereby granted, provided that the above
                      6:  * copyright notice and this permission notice appear in all copies.
                      7:  *
                      8:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                      9:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     10:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     11:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     12:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     13:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     14:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     15:  */
                     16: 
                     17: /*
                     18:  * Derived from the public domain SHA-1 and SHA-2 implementations
                     19:  * by Steve Reid and Wei Dai respectively.
                     20:  */
                     21: 
                     22: #ifndef _SUDOERS_SHA2_H
                     23: #define _SUDOERS_SHA2_H
                     24: 
                     25: #define        SHA224_BLOCK_LENGTH             64
                     26: #define        SHA224_DIGEST_LENGTH            28
                     27: #define        SHA224_DIGEST_STRING_LENGTH     (SHA224_DIGEST_LENGTH * 2 + 1)
                     28: 
                     29: #define        SHA256_BLOCK_LENGTH             64
                     30: #define        SHA256_DIGEST_LENGTH            32
                     31: #define        SHA256_DIGEST_STRING_LENGTH     (SHA256_DIGEST_LENGTH * 2 + 1)
                     32: 
                     33: #define        SHA384_BLOCK_LENGTH             128
                     34: #define        SHA384_DIGEST_LENGTH            48
                     35: #define        SHA384_DIGEST_STRING_LENGTH     (SHA384_DIGEST_LENGTH * 2 + 1)
                     36: 
                     37: #define        SHA512_BLOCK_LENGTH             128
                     38: #define        SHA512_DIGEST_LENGTH            64
                     39: #define        SHA512_DIGEST_STRING_LENGTH     (SHA512_DIGEST_LENGTH * 2 + 1)
                     40: 
                     41: typedef struct {
                     42:     union {
                     43:        uint32_t st32[8];       /* sha224 and sha256 */
                     44:        uint64_t st64[8];       /* sha384 and sha512 */
                     45:     } state;
                     46:     uint64_t count[2];
                     47:     uint8_t buffer[SHA512_BLOCK_LENGTH];
                     48: } SHA2_CTX;
                     49: 
                     50: void SHA224Init(SHA2_CTX *ctx);
                     51: void SHA224Pad(SHA2_CTX *ctx);
                     52: void SHA224Transform(uint32_t state[8], const uint8_t buffer[SHA224_BLOCK_LENGTH]);
                     53: void SHA224Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
                     54: void SHA224Final(uint8_t digest[SHA224_DIGEST_LENGTH], SHA2_CTX *ctx);
                     55: 
                     56: void SHA256Init(SHA2_CTX *ctx);
                     57: void SHA256Pad(SHA2_CTX *ctx);
                     58: void SHA256Transform(uint32_t state[8], const uint8_t buffer[SHA256_BLOCK_LENGTH]);
                     59: void SHA256Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
                     60: void SHA256Final(uint8_t digest[SHA256_DIGEST_LENGTH], SHA2_CTX *ctx);
                     61: 
                     62: void SHA384Init(SHA2_CTX *ctx);
                     63: void SHA384Pad(SHA2_CTX *ctx);
                     64: void SHA384Transform(uint64_t state[8], const uint8_t buffer[SHA384_BLOCK_LENGTH]);
                     65: void SHA384Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
                     66: void SHA384Final(uint8_t digest[SHA384_DIGEST_LENGTH], SHA2_CTX *ctx);
                     67: 
                     68: void SHA512Init(SHA2_CTX *ctx);
                     69: void SHA512Pad(SHA2_CTX *ctx);
                     70: void SHA512Transform(uint64_t state[8], const uint8_t buffer[SHA512_BLOCK_LENGTH]);
                     71: void SHA512Update(SHA2_CTX *ctx, const uint8_t *data, size_t len);
                     72: void SHA512Final(uint8_t digest[SHA512_DIGEST_LENGTH], SHA2_CTX *ctx);
                     73: 
                     74: #endif /* _SUDOERS_SHA2_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>