/src/samba/third_party/heimdal/lib/hcrypto/hash.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 1999 Kungliga Tekniska Högskolan |
3 | | * (Royal Institute of Technology, Stockholm, Sweden). |
4 | | * All rights reserved. |
5 | | * |
6 | | * Redistribution and use in source and binary forms, with or without |
7 | | * modification, are permitted provided that the following conditions |
8 | | * are met: |
9 | | * |
10 | | * 1. Redistributions of source code must retain the above copyright |
11 | | * notice, this list of conditions and the following disclaimer. |
12 | | * |
13 | | * 2. Redistributions in binary form must reproduce the above copyright |
14 | | * notice, this list of conditions and the following disclaimer in the |
15 | | * documentation and/or other materials provided with the distribution. |
16 | | * |
17 | | * 3. Neither the name of KTH nor the names of its contributors may be |
18 | | * used to endorse or promote products derived from this software without |
19 | | * specific prior written permission. |
20 | | * |
21 | | * THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
22 | | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
23 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
24 | | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE |
25 | | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
26 | | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
27 | | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
28 | | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
29 | | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
30 | | * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
31 | | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ |
32 | | |
33 | | /* $Id$ */ |
34 | | |
35 | | /* stuff in common between md4, md5, and sha1 */ |
36 | | |
37 | | #ifndef __hash_h__ |
38 | | #define __hash_h__ |
39 | | |
40 | | #ifdef KRB5 |
41 | | #include <krb5-types.h> |
42 | | #endif |
43 | | |
44 | | #ifndef min |
45 | | #define min(a,b) (((a)>(b))?(b):(a)) |
46 | | #endif |
47 | | |
48 | | /* Vector Crays doesn't have a good 32-bit type, or more precisely, |
49 | | int32_t as defined by <bind/bitypes.h> isn't 32 bits, and we don't |
50 | | want to depend in being able to redefine this type. To cope with |
51 | | this we have to clamp the result in some places to [0,2^32); no |
52 | | need to do this on other machines. Did I say this was a mess? |
53 | | */ |
54 | | |
55 | | #ifdef _CRAY |
56 | | #define CRAYFIX(X) ((X) & 0xffffffff) |
57 | | #else |
58 | 0 | #define CRAYFIX(X) (X) |
59 | | #endif |
60 | | |
61 | | static inline uint32_t |
62 | | cshift (uint32_t x, unsigned int n) |
63 | 0 | { |
64 | 0 | x = CRAYFIX(x); |
65 | 0 | return CRAYFIX((x << n) | (x >> (32 - n))); |
66 | 0 | } Unexecuted instantiation: md4.c:cshift Unexecuted instantiation: md5.c:cshift Unexecuted instantiation: sha.c:cshift Unexecuted instantiation: sha256.c:cshift Unexecuted instantiation: sha512.c:cshift |
67 | | |
68 | | static inline uint64_t |
69 | | cshift64 (uint64_t x, unsigned int n) |
70 | 0 | { |
71 | 0 | return ((uint64_t)x << (uint64_t)n) | ((uint64_t)x >> ((uint64_t)64 - (uint64_t)n)); |
72 | 0 | } Unexecuted instantiation: md4.c:cshift64 Unexecuted instantiation: md5.c:cshift64 Unexecuted instantiation: sha.c:cshift64 Unexecuted instantiation: sha256.c:cshift64 Unexecuted instantiation: sha512.c:cshift64 |
73 | | |
74 | | #endif /* __hash_h__ */ |