~hikiko/nux/arb-srgba-shader

« back to all changes in this revision

Viewing changes to NuxCore/Crypto/NSHA2.h

  • Committer: Neil Jagdish Patel
  • Date: 2010-09-01 19:25:37 UTC
  • Revision ID: neil.patel@canonical.com-20100901192537-mfz7rm6q262pewg6
Import and build NuxCore

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
// From: http://www.ouah.org/ogay/sha2/
 
3
/*
 
4
* FIPS 180-2 SHA-224/256/384/512 implementation
 
5
* Last update: 02/02/2007
 
6
* Issue date:  04/30/2005
 
7
*
 
8
* Copyright (C) 2005, 2007 Olivier Gay <olivier.gay@a3.epfl.ch>
 
9
* All rights reserved.
 
10
*
 
11
* Redistribution and use in source and binary forms, with or without
 
12
* modification, are permitted provided that the following conditions
 
13
* are met:
 
14
* 1. Redistributions of source code must retain the above copyright
 
15
*    notice, this list of conditions and the following disclaimer.
 
16
* 2. Redistributions in binary form must reproduce the above copyright
 
17
*    notice, this list of conditions and the following disclaimer in the
 
18
*    documentation and/or other materials provided with the distribution.
 
19
* 3. Neither the name of the project nor the names of its contributors
 
20
*    may be used to endorse or promote products derived from this software
 
21
*    without specific prior written permission.
 
22
*
 
23
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
 
24
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
25
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
26
* ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
 
27
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
28
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
29
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
30
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
32
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
33
* SUCH DAMAGE.
 
34
*/
 
35
 
 
36
#ifndef NSHA2_H
 
37
#define NSHA2_H
 
38
 
 
39
#define SHA224_DIGEST_SIZE ( 224 / 8)
 
40
#define SHA256_DIGEST_SIZE ( 256 / 8)
 
41
#define SHA384_DIGEST_SIZE ( 384 / 8)
 
42
#define SHA512_DIGEST_SIZE ( 512 / 8)
 
43
 
 
44
#define SHA256_BLOCK_SIZE  ( 512 / 8)
 
45
#define SHA512_BLOCK_SIZE  (1024 / 8)
 
46
#define SHA384_BLOCK_SIZE  SHA512_BLOCK_SIZE
 
47
#define SHA224_BLOCK_SIZE  SHA256_BLOCK_SIZE
 
48
 
 
49
#ifndef SHA2_TYPES
 
50
    #define SHA2_TYPES
 
51
    typedef unsigned char uint8;
 
52
    typedef unsigned int  uint32;
 
53
    typedef unsigned long long uint64;
 
54
#endif
 
55
 
 
56
 
 
57
NAMESPACE_BEGIN
 
58
 
 
59
// #ifdef __cplusplus
 
60
// extern "C" {
 
61
// #endif
 
62
 
 
63
typedef struct {
 
64
    unsigned int tot_len;
 
65
    unsigned int len;
 
66
    unsigned char block[2 * SHA256_BLOCK_SIZE];
 
67
    uint32 h[8];
 
68
} sha256_ctx;
 
69
 
 
70
typedef struct {
 
71
    unsigned int tot_len;
 
72
    unsigned int len;
 
73
    unsigned char block[2 * SHA512_BLOCK_SIZE];
 
74
    uint64 h[8];
 
75
} sha512_ctx;
 
76
 
 
77
typedef sha512_ctx sha384_ctx;
 
78
typedef sha256_ctx sha224_ctx;
 
79
 
 
80
void sha224_init(sha224_ctx *ctx);
 
81
void sha224_update(sha224_ctx *ctx, const unsigned char *message,
 
82
    unsigned int len);
 
83
void sha224_final(sha224_ctx *ctx, unsigned char *digest);
 
84
void sha224(const unsigned char *message, unsigned int len,
 
85
    unsigned char *digest);
 
86
 
 
87
void sha256_init(sha256_ctx * ctx);
 
88
void sha256_update(sha256_ctx *ctx, const unsigned char *message,
 
89
    unsigned int len);
 
90
void sha256_final(sha256_ctx *ctx, unsigned char *digest);
 
91
void sha256(const unsigned char *message, unsigned int len,
 
92
    unsigned char *digest);
 
93
 
 
94
void sha384_init(sha384_ctx *ctx);
 
95
void sha384_update(sha384_ctx *ctx, const unsigned char *message,
 
96
    unsigned int len);
 
97
void sha384_final(sha384_ctx *ctx, unsigned char *digest);
 
98
void sha384(const unsigned char *message, unsigned int len,
 
99
    unsigned char *digest);
 
100
 
 
101
void sha512_init(sha512_ctx *ctx);
 
102
void sha512_update(sha512_ctx *ctx, const unsigned char *message,
 
103
    unsigned int len);
 
104
void sha512_final(sha512_ctx *ctx, unsigned char *digest);
 
105
void sha512(const unsigned char *message, unsigned int len,
 
106
    unsigned char *digest);
 
107
 
 
108
// #ifdef __cplusplus
 
109
// }
 
110
// #endif
 
111
 
 
112
NAMESPACE_END
 
113
 
 
114
#endif // NSHA2_H
 
115