ray 0.0.1 → 0.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/.yardopts +4 -0
- data/README.md +17 -21
- data/Rakefile +18 -139
- data/VERSION +1 -1
- data/ext/audio.cpp +723 -0
- data/ext/{color.c → color.cpp} +25 -13
- data/ext/drawable.cpp +91 -0
- data/ext/event.cpp +460 -0
- data/ext/extconf.rb +5 -104
- data/ext/font.cpp +190 -0
- data/ext/image.cpp +733 -0
- data/ext/input.cpp +74 -0
- data/ext/ray.cpp +168 -0
- data/ext/ray.hpp +356 -0
- data/ext/{rect.c → rect.cpp} +51 -37
- data/ext/shader.cpp +169 -0
- data/ext/shape.cpp +409 -0
- data/ext/sprite.cpp +306 -0
- data/ext/text.cpp +181 -0
- data/ext/vector.cpp +215 -0
- data/guide.md +619 -0
- data/lib/ray/audio.rb +0 -41
- data/lib/ray/color.rb +32 -10
- data/lib/ray/drawable.rb +16 -0
- data/lib/ray/dsl/event_listener.rb +25 -2
- data/lib/ray/dsl/event_runner.rb +33 -5
- data/lib/ray/dsl/event_translator.rb +66 -30
- data/lib/ray/dsl/handler.rb +3 -2
- data/lib/ray/dsl/matcher.rb +58 -14
- data/lib/ray/font.rb +38 -96
- data/lib/ray/font_set.rb +8 -8
- data/lib/ray/game.rb +87 -66
- data/lib/ray/helper.rb +105 -10
- data/lib/ray/image.rb +150 -24
- data/lib/ray/image_set.rb +3 -1
- data/lib/ray/input.rb +10 -0
- data/lib/ray/music_set.rb +5 -3
- data/lib/ray/ray.rb +21 -9
- data/lib/ray/rect.rb +48 -7
- data/lib/ray/rmagick.rb +41 -0
- data/lib/ray/scene.rb +99 -43
- data/lib/ray/scene_list.rb +67 -0
- data/lib/ray/shape.rb +132 -0
- data/lib/ray/sound_set.rb +4 -2
- data/lib/ray/sprite.rb +49 -111
- data/lib/ray/text.rb +101 -0
- data/lib/ray/text_helper.rb +37 -0
- data/lib/ray/turtle.rb +215 -0
- data/lib/ray/vector.rb +226 -0
- data/samples/audio/spacial.rb +44 -0
- data/samples/hello_world/hello.rb +9 -13
- data/samples/hello_world/hello_dsl.rb +8 -12
- data/samples/hello_world/text.rb +15 -0
- data/samples/opengl/binding.rb +38 -0
- data/samples/opengl/image.rb +32 -0
- data/samples/opengl/opengl.rb +34 -0
- data/samples/opengl/shader.rb +42 -0
- data/samples/pong/pong.rb +14 -10
- data/samples/run_scene.rb +53 -0
- data/samples/shaders/scene.rb +40 -0
- data/samples/shaders/shaders.rb +42 -0
- data/samples/shaders/shape.rb +34 -0
- data/samples/sokoban/sokoban.rb +18 -18
- data/samples/test/actual_scene.rb +41 -0
- data/samples/test/scene_riot.rb +39 -0
- data/samples/test/scene_spec.rb +32 -0
- data/samples/test/scene_test_unit.rb +25 -0
- data/samples/turtle/byzantium.rb +45 -0
- data/samples/turtle/hilbert.rb +48 -0
- data/samples/turtle/koch.rb +55 -0
- data/samples/turtle/mandala.rb +61 -0
- data/samples/turtle/tree.rb +57 -0
- data/test/audio_test.rb +69 -0
- data/test/color_test.rb +77 -0
- data/test/drawable_test.rb +19 -0
- data/test/dsl_test.rb +93 -0
- data/test/font_test.rb +57 -0
- data/test/helpers.rb +94 -0
- data/test/image_test.rb +82 -0
- data/test/ray_test.rb +25 -0
- data/test/rect_test.rb +121 -0
- data/{spec → test}/res/VeraMono.ttf +0 -0
- data/{spec → test}/res/aqua.bmp +0 -0
- data/{spec → test}/res/aqua.png +0 -0
- data/{spec → test}/res/aqua2.bmp +0 -0
- data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
- data/{spec → test}/res/pop.wav +0 -0
- data/test/resource_set_test.rb +99 -0
- data/test/run_all.rb +7 -0
- data/test/shape_test.rb +101 -0
- data/test/sprite_test.rb +89 -0
- data/test/text_test.rb +78 -0
- data/test/turtle_test.rb +176 -0
- data/test/vector_test.rb +111 -0
- data/yard_ext.rb +0 -28
- metadata +95 -139
- data/.gitignore +0 -23
- data/.gitmodules +0 -3
- data/.rspec +0 -3
- data/ext/audio.c +0 -473
- data/ext/event.c +0 -557
- data/ext/font.c +0 -287
- data/ext/image.c +0 -933
- data/ext/joystick.c +0 -145
- data/ext/ray.c +0 -489
- data/ext/ray.h +0 -245
- data/ext/ray_osx.m +0 -161
- data/lib/ray/joystick.rb +0 -30
- data/psp/SDL_psp_main.c +0 -84
- data/psp/bigdecimal/README +0 -60
- data/psp/bigdecimal/bigdecimal.c +0 -4697
- data/psp/bigdecimal/bigdecimal.h +0 -216
- data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
- data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
- data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
- data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
- data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
- data/psp/digest/bubblebabble/bubblebabble.c +0 -142
- data/psp/digest/defs.h +0 -20
- data/psp/digest/digest.c +0 -643
- data/psp/digest/digest.h +0 -32
- data/psp/digest/lib/digest.rb +0 -50
- data/psp/digest/lib/md5.rb +0 -27
- data/psp/digest/lib/sha1.rb +0 -27
- data/psp/digest/md5/md5.c +0 -420
- data/psp/digest/md5/md5.h +0 -80
- data/psp/digest/md5/md5init.c +0 -40
- data/psp/digest/rmd160/rmd160.c +0 -457
- data/psp/digest/rmd160/rmd160.h +0 -56
- data/psp/digest/rmd160/rmd160init.c +0 -40
- data/psp/digest/sha1/sha1.c +0 -269
- data/psp/digest/sha1/sha1.h +0 -39
- data/psp/digest/sha1/sha1init.c +0 -40
- data/psp/digest/sha2/lib/sha2.rb +0 -73
- data/psp/digest/sha2/sha2.c +0 -919
- data/psp/digest/sha2/sha2.h +0 -109
- data/psp/digest/sha2/sha2init.c +0 -52
- data/psp/enumerator/enumerator.c +0 -298
- data/psp/etc/etc.c +0 -559
- data/psp/ext.c +0 -289
- data/psp/fcntl/fcntl.c +0 -187
- data/psp/lib/rbconfig.rb +0 -178
- data/psp/nkf/lib/kconv.rb +0 -367
- data/psp/nkf/nkf-utf8/config.h +0 -88
- data/psp/nkf/nkf-utf8/nkf.c +0 -6040
- data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
- data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
- data/psp/nkf/nkf.c +0 -654
- data/psp/socket/addrinfo.h +0 -173
- data/psp/socket/getaddrinfo.c +0 -676
- data/psp/socket/getnameinfo.c +0 -270
- data/psp/socket/pspsocket.c +0 -71
- data/psp/socket/pspsocket.h +0 -28
- data/psp/socket/socket.c +0 -4662
- data/psp/socket/sockport.h +0 -76
- data/psp/stringio/stringio.c +0 -1306
- data/psp/strscan/strscan.c +0 -1320
- data/psp/syck/bytecode.c +0 -1166
- data/psp/syck/emitter.c +0 -1242
- data/psp/syck/gram.c +0 -1894
- data/psp/syck/gram.h +0 -79
- data/psp/syck/handler.c +0 -174
- data/psp/syck/implicit.c +0 -2990
- data/psp/syck/node.c +0 -408
- data/psp/syck/rubyext.c +0 -2367
- data/psp/syck/syck.c +0 -504
- data/psp/syck/syck.h +0 -456
- data/psp/syck/token.c +0 -2725
- data/psp/syck/yaml2byte.c +0 -257
- data/psp/syck/yamlbyte.h +0 -170
- data/psp/thread/thread.c +0 -1175
- data/psp/zlib/zlib.c +0 -3547
- data/script.rb +0 -10
- data/spec/ray/audio_spec.rb +0 -146
- data/spec/ray/color_spec.rb +0 -57
- data/spec/ray/event_spec.rb +0 -80
- data/spec/ray/font_spec.rb +0 -93
- data/spec/ray/image_set_spec.rb +0 -48
- data/spec/ray/image_spec.rb +0 -162
- data/spec/ray/joystick_spec.rb +0 -21
- data/spec/ray/matcher_spec.rb +0 -50
- data/spec/ray/ray_spec.rb +0 -88
- data/spec/ray/rect_spec.rb +0 -154
- data/spec/ray/resource_set_spec.rb +0 -105
- data/spec/ray/sprite_spec.rb +0 -163
- data/spec/spec.opts +0 -4
- data/spec/spec_helper.rb +0 -8
data/psp/digest/md5/md5.h
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (C) 1999 Aladdin Enterprises. All rights reserved.
|
3
|
-
|
4
|
-
This software is provided 'as-is', without any express or implied
|
5
|
-
warranty. In no event will the authors be held liable for any damages
|
6
|
-
arising from the use of this software.
|
7
|
-
|
8
|
-
Permission is granted to anyone to use this software for any purpose,
|
9
|
-
including commercial applications, and to alter it and redistribute it
|
10
|
-
freely, subject to the following restrictions:
|
11
|
-
|
12
|
-
1. The origin of this software must not be misrepresented; you must not
|
13
|
-
claim that you wrote the original software. If you use this software
|
14
|
-
in a product, an acknowledgment in the product documentation would be
|
15
|
-
appreciated but is not required.
|
16
|
-
2. Altered source versions must be plainly marked as such, and must not be
|
17
|
-
misrepresented as being the original software.
|
18
|
-
3. This notice may not be removed or altered from any source distribution.
|
19
|
-
|
20
|
-
L. Peter Deutsch
|
21
|
-
ghost@aladdin.com
|
22
|
-
|
23
|
-
*/
|
24
|
-
/*
|
25
|
-
Independent implementation of MD5 (RFC 1321).
|
26
|
-
|
27
|
-
This code implements the MD5 Algorithm defined in RFC 1321.
|
28
|
-
It is derived directly from the text of the RFC and not from the
|
29
|
-
reference implementation.
|
30
|
-
|
31
|
-
The original and principal author of md5.h is L. Peter Deutsch
|
32
|
-
<ghost@aladdin.com>. Other authors are noted in the change history
|
33
|
-
that follows (in reverse chronological order):
|
34
|
-
|
35
|
-
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
|
36
|
-
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
|
37
|
-
added conditionalization for C++ compilation from Martin
|
38
|
-
Purschke <purschke@bnl.gov>.
|
39
|
-
1999-05-03 lpd Original version.
|
40
|
-
*/
|
41
|
-
|
42
|
-
/* $OrigId: md5.h,v 1.2 2001/03/26 08:57:14 matz Exp $ */
|
43
|
-
/* $RoughId: md5.h,v 1.3 2002/02/24 08:14:31 knu Exp $ */
|
44
|
-
/* $Id: md5.h 11708 2007-02-12 23:01:19Z shyouhei $ */
|
45
|
-
|
46
|
-
#ifndef MD5_INCLUDED
|
47
|
-
# define MD5_INCLUDED
|
48
|
-
|
49
|
-
#include "../defs.h"
|
50
|
-
|
51
|
-
/*
|
52
|
-
* This code has some adaptations for the Ghostscript environment, but it
|
53
|
-
* will compile and run correctly in any environment with 8-bit chars and
|
54
|
-
* 32-bit ints. Specifically, it assumes that if the following are
|
55
|
-
* defined, they have the same meaning as in Ghostscript: P1, P2, P3.
|
56
|
-
*/
|
57
|
-
|
58
|
-
/* Define the state of the MD5 Algorithm. */
|
59
|
-
typedef struct md5_state_s {
|
60
|
-
uint32_t count[2]; /* message length in bits, lsw first */
|
61
|
-
uint32_t state[4]; /* digest buffer */
|
62
|
-
uint8_t buffer[64]; /* accumulate block */
|
63
|
-
} MD5_CTX;
|
64
|
-
|
65
|
-
#ifdef RUBY
|
66
|
-
/* avoid name clash */
|
67
|
-
#define MD5_Init rb_Digest_MD5_Init
|
68
|
-
#define MD5_Update rb_Digest_MD5_Update
|
69
|
-
#define MD5_Finish rb_Digest_MD5_Finish
|
70
|
-
#endif
|
71
|
-
|
72
|
-
void MD5_Init _((MD5_CTX *pms));
|
73
|
-
void MD5_Update _((MD5_CTX *pms, const uint8_t *data, size_t nbytes));
|
74
|
-
void MD5_Finish _((MD5_CTX *pms, uint8_t *digest));
|
75
|
-
|
76
|
-
#define MD5_BLOCK_LENGTH 64
|
77
|
-
#define MD5_DIGEST_LENGTH 16
|
78
|
-
#define MD5_DIGEST_STRING_LENGTH (MD5_DIGEST_LENGTH * 2 + 1)
|
79
|
-
|
80
|
-
#endif /* MD5_INCLUDED */
|
data/psp/digest/md5/md5init.c
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
/* $RoughId: md5init.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */
|
2
|
-
/* $Id: md5init.c 11708 2007-02-12 23:01:19Z shyouhei $ */
|
3
|
-
|
4
|
-
#include "../digest.h"
|
5
|
-
#if defined(HAVE_OPENSSL_MD5_H)
|
6
|
-
#include "md5ossl.h"
|
7
|
-
#else
|
8
|
-
#include "md5.h"
|
9
|
-
#endif
|
10
|
-
|
11
|
-
static rb_digest_metadata_t md5 = {
|
12
|
-
RUBY_DIGEST_API_VERSION,
|
13
|
-
MD5_DIGEST_LENGTH,
|
14
|
-
MD5_BLOCK_LENGTH,
|
15
|
-
sizeof(MD5_CTX),
|
16
|
-
(rb_digest_hash_init_func_t)MD5_Init,
|
17
|
-
(rb_digest_hash_update_func_t)MD5_Update,
|
18
|
-
(rb_digest_hash_finish_func_t)MD5_Finish,
|
19
|
-
};
|
20
|
-
|
21
|
-
/*
|
22
|
-
* A class for calculating message digests using the MD5
|
23
|
-
* Message-Digest Algorithm by RSA Data Security, Inc., described in
|
24
|
-
* RFC1321.
|
25
|
-
*/
|
26
|
-
void
|
27
|
-
Init_md5()
|
28
|
-
{
|
29
|
-
VALUE mDigest, cDigest_Base, cDigest_MD5;
|
30
|
-
|
31
|
-
// rb_require("digest"); (Commenting this avoids strange errors)
|
32
|
-
|
33
|
-
mDigest = rb_path2class("Digest");
|
34
|
-
cDigest_Base = rb_path2class("Digest::Base");
|
35
|
-
|
36
|
-
cDigest_MD5 = rb_define_class_under(mDigest, "MD5", cDigest_Base);
|
37
|
-
|
38
|
-
rb_ivar_set(cDigest_MD5, rb_intern("metadata"),
|
39
|
-
Data_Wrap_Struct(rb_cObject, 0, 0, &md5));
|
40
|
-
}
|
data/psp/digest/rmd160/rmd160.c
DELETED
@@ -1,457 +0,0 @@
|
|
1
|
-
/* $NetBSD: rmd160.c,v 1.1.1.1 2001/03/06 11:21:05 agc Exp $ */
|
2
|
-
/* $RoughId: rmd160.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */
|
3
|
-
/* $Id: rmd160.c 11708 2007-02-12 23:01:19Z shyouhei $ */
|
4
|
-
|
5
|
-
/********************************************************************\
|
6
|
-
*
|
7
|
-
* FILE: rmd160.c
|
8
|
-
*
|
9
|
-
* CONTENTS: A sample C-implementation of the RIPEMD-160
|
10
|
-
* hash-function.
|
11
|
-
* TARGET: any computer with an ANSI C compiler
|
12
|
-
*
|
13
|
-
* AUTHOR: Antoon Bosselaers, ESAT-COSIC
|
14
|
-
* (Arranged for libc by Todd C. Miller)
|
15
|
-
* DATE: 1 March 1996
|
16
|
-
* VERSION: 1.0
|
17
|
-
*
|
18
|
-
* Copyright (c) Katholieke Universiteit Leuven
|
19
|
-
* 1996, All Rights Reserved
|
20
|
-
*
|
21
|
-
\********************************************************************/
|
22
|
-
|
23
|
-
#include "rmd160.h"
|
24
|
-
|
25
|
-
#ifndef lint
|
26
|
-
/* __RCSID("$NetBSD: rmd160.c,v 1.1.1.1 2001/03/06 11:21:05 agc Exp $"); */
|
27
|
-
#endif /* not lint */
|
28
|
-
|
29
|
-
/* header files */
|
30
|
-
|
31
|
-
#ifdef HAVE_SYS_ENDIAN_H_
|
32
|
-
#include <sys/endian.h>
|
33
|
-
#endif
|
34
|
-
|
35
|
-
#ifdef HAVE_MACHINE_ENDIAN_H_
|
36
|
-
#include <machine/endian.h>
|
37
|
-
#endif
|
38
|
-
|
39
|
-
/* #include "namespace.h" */
|
40
|
-
|
41
|
-
#include <assert.h>
|
42
|
-
#include <stdio.h>
|
43
|
-
#include <stdlib.h>
|
44
|
-
#include <string.h>
|
45
|
-
|
46
|
-
#ifndef _DIAGASSERT
|
47
|
-
#define _DIAGASSERT(cond) assert(cond)
|
48
|
-
#endif
|
49
|
-
|
50
|
-
|
51
|
-
/********************************************************************/
|
52
|
-
|
53
|
-
/* macro definitions */
|
54
|
-
|
55
|
-
/* collect four bytes into one word: */
|
56
|
-
#define BYTES_TO_DWORD(strptr) \
|
57
|
-
(((uint32_t) *((strptr)+3) << 24) | \
|
58
|
-
((uint32_t) *((strptr)+2) << 16) | \
|
59
|
-
((uint32_t) *((strptr)+1) << 8) | \
|
60
|
-
((uint32_t) *(strptr)))
|
61
|
-
|
62
|
-
/* ROL(x, n) cyclically rotates x over n bits to the left */
|
63
|
-
/* x must be of an unsigned 32 bits type and 0 <= n < 32. */
|
64
|
-
#define ROL(x, n) (((x) << (n)) | ((x) >> (32-(n))))
|
65
|
-
|
66
|
-
/* the three basic functions F(), G() and H() */
|
67
|
-
#define F(x, y, z) ((x) ^ (y) ^ (z))
|
68
|
-
#define G(x, y, z) (((x) & (y)) | (~(x) & (z)))
|
69
|
-
#define H(x, y, z) (((x) | ~(y)) ^ (z))
|
70
|
-
#define I(x, y, z) (((x) & (z)) | ((y) & ~(z)))
|
71
|
-
#define J(x, y, z) ((x) ^ ((y) | ~(z)))
|
72
|
-
|
73
|
-
/* the eight basic operations FF() through III() */
|
74
|
-
#define FF(a, b, c, d, e, x, s) { \
|
75
|
-
(a) += F((b), (c), (d)) + (x); \
|
76
|
-
(a) = ROL((a), (s)) + (e); \
|
77
|
-
(c) = ROL((c), 10); \
|
78
|
-
}
|
79
|
-
#define GG(a, b, c, d, e, x, s) { \
|
80
|
-
(a) += G((b), (c), (d)) + (x) + 0x5a827999U; \
|
81
|
-
(a) = ROL((a), (s)) + (e); \
|
82
|
-
(c) = ROL((c), 10); \
|
83
|
-
}
|
84
|
-
#define HH(a, b, c, d, e, x, s) { \
|
85
|
-
(a) += H((b), (c), (d)) + (x) + 0x6ed9eba1U; \
|
86
|
-
(a) = ROL((a), (s)) + (e); \
|
87
|
-
(c) = ROL((c), 10); \
|
88
|
-
}
|
89
|
-
#define II(a, b, c, d, e, x, s) { \
|
90
|
-
(a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcU; \
|
91
|
-
(a) = ROL((a), (s)) + (e); \
|
92
|
-
(c) = ROL((c), 10); \
|
93
|
-
}
|
94
|
-
#define JJ(a, b, c, d, e, x, s) { \
|
95
|
-
(a) += J((b), (c), (d)) + (x) + 0xa953fd4eU; \
|
96
|
-
(a) = ROL((a), (s)) + (e); \
|
97
|
-
(c) = ROL((c), 10); \
|
98
|
-
}
|
99
|
-
#define FFF(a, b, c, d, e, x, s) { \
|
100
|
-
(a) += F((b), (c), (d)) + (x); \
|
101
|
-
(a) = ROL((a), (s)) + (e); \
|
102
|
-
(c) = ROL((c), 10); \
|
103
|
-
}
|
104
|
-
#define GGG(a, b, c, d, e, x, s) { \
|
105
|
-
(a) += G((b), (c), (d)) + (x) + 0x7a6d76e9U; \
|
106
|
-
(a) = ROL((a), (s)) + (e); \
|
107
|
-
(c) = ROL((c), 10); \
|
108
|
-
}
|
109
|
-
#define HHH(a, b, c, d, e, x, s) { \
|
110
|
-
(a) += H((b), (c), (d)) + (x) + 0x6d703ef3U; \
|
111
|
-
(a) = ROL((a), (s)) + (e); \
|
112
|
-
(c) = ROL((c), 10); \
|
113
|
-
}
|
114
|
-
#define III(a, b, c, d, e, x, s) { \
|
115
|
-
(a) += I((b), (c), (d)) + (x) + 0x5c4dd124U; \
|
116
|
-
(a) = ROL((a), (s)) + (e); \
|
117
|
-
(c) = ROL((c), 10); \
|
118
|
-
}
|
119
|
-
#define JJJ(a, b, c, d, e, x, s) { \
|
120
|
-
(a) += J((b), (c), (d)) + (x) + 0x50a28be6U; \
|
121
|
-
(a) = ROL((a), (s)) + (e); \
|
122
|
-
(c) = ROL((c), 10); \
|
123
|
-
}
|
124
|
-
|
125
|
-
/********************************************************************/
|
126
|
-
|
127
|
-
void
|
128
|
-
RMD160_Init(RMD160_CTX *context)
|
129
|
-
{
|
130
|
-
|
131
|
-
_DIAGASSERT(context != NULL);
|
132
|
-
|
133
|
-
/* ripemd-160 initialization constants */
|
134
|
-
context->state[0] = 0x67452301U;
|
135
|
-
context->state[1] = 0xefcdab89U;
|
136
|
-
context->state[2] = 0x98badcfeU;
|
137
|
-
context->state[3] = 0x10325476U;
|
138
|
-
context->state[4] = 0xc3d2e1f0U;
|
139
|
-
context->length[0] = context->length[1] = 0;
|
140
|
-
context->buflen = 0;
|
141
|
-
}
|
142
|
-
|
143
|
-
/********************************************************************/
|
144
|
-
|
145
|
-
void
|
146
|
-
RMD160_Transform(uint32_t state[5], const uint32_t block[16])
|
147
|
-
{
|
148
|
-
uint32_t aa, bb, cc, dd, ee;
|
149
|
-
uint32_t aaa, bbb, ccc, ddd, eee;
|
150
|
-
|
151
|
-
_DIAGASSERT(state != NULL);
|
152
|
-
_DIAGASSERT(block != NULL);
|
153
|
-
|
154
|
-
aa = aaa = state[0];
|
155
|
-
bb = bbb = state[1];
|
156
|
-
cc = ccc = state[2];
|
157
|
-
dd = ddd = state[3];
|
158
|
-
ee = eee = state[4];
|
159
|
-
|
160
|
-
/* round 1 */
|
161
|
-
FF(aa, bb, cc, dd, ee, block[ 0], 11);
|
162
|
-
FF(ee, aa, bb, cc, dd, block[ 1], 14);
|
163
|
-
FF(dd, ee, aa, bb, cc, block[ 2], 15);
|
164
|
-
FF(cc, dd, ee, aa, bb, block[ 3], 12);
|
165
|
-
FF(bb, cc, dd, ee, aa, block[ 4], 5);
|
166
|
-
FF(aa, bb, cc, dd, ee, block[ 5], 8);
|
167
|
-
FF(ee, aa, bb, cc, dd, block[ 6], 7);
|
168
|
-
FF(dd, ee, aa, bb, cc, block[ 7], 9);
|
169
|
-
FF(cc, dd, ee, aa, bb, block[ 8], 11);
|
170
|
-
FF(bb, cc, dd, ee, aa, block[ 9], 13);
|
171
|
-
FF(aa, bb, cc, dd, ee, block[10], 14);
|
172
|
-
FF(ee, aa, bb, cc, dd, block[11], 15);
|
173
|
-
FF(dd, ee, aa, bb, cc, block[12], 6);
|
174
|
-
FF(cc, dd, ee, aa, bb, block[13], 7);
|
175
|
-
FF(bb, cc, dd, ee, aa, block[14], 9);
|
176
|
-
FF(aa, bb, cc, dd, ee, block[15], 8);
|
177
|
-
|
178
|
-
/* round 2 */
|
179
|
-
GG(ee, aa, bb, cc, dd, block[ 7], 7);
|
180
|
-
GG(dd, ee, aa, bb, cc, block[ 4], 6);
|
181
|
-
GG(cc, dd, ee, aa, bb, block[13], 8);
|
182
|
-
GG(bb, cc, dd, ee, aa, block[ 1], 13);
|
183
|
-
GG(aa, bb, cc, dd, ee, block[10], 11);
|
184
|
-
GG(ee, aa, bb, cc, dd, block[ 6], 9);
|
185
|
-
GG(dd, ee, aa, bb, cc, block[15], 7);
|
186
|
-
GG(cc, dd, ee, aa, bb, block[ 3], 15);
|
187
|
-
GG(bb, cc, dd, ee, aa, block[12], 7);
|
188
|
-
GG(aa, bb, cc, dd, ee, block[ 0], 12);
|
189
|
-
GG(ee, aa, bb, cc, dd, block[ 9], 15);
|
190
|
-
GG(dd, ee, aa, bb, cc, block[ 5], 9);
|
191
|
-
GG(cc, dd, ee, aa, bb, block[ 2], 11);
|
192
|
-
GG(bb, cc, dd, ee, aa, block[14], 7);
|
193
|
-
GG(aa, bb, cc, dd, ee, block[11], 13);
|
194
|
-
GG(ee, aa, bb, cc, dd, block[ 8], 12);
|
195
|
-
|
196
|
-
/* round 3 */
|
197
|
-
HH(dd, ee, aa, bb, cc, block[ 3], 11);
|
198
|
-
HH(cc, dd, ee, aa, bb, block[10], 13);
|
199
|
-
HH(bb, cc, dd, ee, aa, block[14], 6);
|
200
|
-
HH(aa, bb, cc, dd, ee, block[ 4], 7);
|
201
|
-
HH(ee, aa, bb, cc, dd, block[ 9], 14);
|
202
|
-
HH(dd, ee, aa, bb, cc, block[15], 9);
|
203
|
-
HH(cc, dd, ee, aa, bb, block[ 8], 13);
|
204
|
-
HH(bb, cc, dd, ee, aa, block[ 1], 15);
|
205
|
-
HH(aa, bb, cc, dd, ee, block[ 2], 14);
|
206
|
-
HH(ee, aa, bb, cc, dd, block[ 7], 8);
|
207
|
-
HH(dd, ee, aa, bb, cc, block[ 0], 13);
|
208
|
-
HH(cc, dd, ee, aa, bb, block[ 6], 6);
|
209
|
-
HH(bb, cc, dd, ee, aa, block[13], 5);
|
210
|
-
HH(aa, bb, cc, dd, ee, block[11], 12);
|
211
|
-
HH(ee, aa, bb, cc, dd, block[ 5], 7);
|
212
|
-
HH(dd, ee, aa, bb, cc, block[12], 5);
|
213
|
-
|
214
|
-
/* round 4 */
|
215
|
-
II(cc, dd, ee, aa, bb, block[ 1], 11);
|
216
|
-
II(bb, cc, dd, ee, aa, block[ 9], 12);
|
217
|
-
II(aa, bb, cc, dd, ee, block[11], 14);
|
218
|
-
II(ee, aa, bb, cc, dd, block[10], 15);
|
219
|
-
II(dd, ee, aa, bb, cc, block[ 0], 14);
|
220
|
-
II(cc, dd, ee, aa, bb, block[ 8], 15);
|
221
|
-
II(bb, cc, dd, ee, aa, block[12], 9);
|
222
|
-
II(aa, bb, cc, dd, ee, block[ 4], 8);
|
223
|
-
II(ee, aa, bb, cc, dd, block[13], 9);
|
224
|
-
II(dd, ee, aa, bb, cc, block[ 3], 14);
|
225
|
-
II(cc, dd, ee, aa, bb, block[ 7], 5);
|
226
|
-
II(bb, cc, dd, ee, aa, block[15], 6);
|
227
|
-
II(aa, bb, cc, dd, ee, block[14], 8);
|
228
|
-
II(ee, aa, bb, cc, dd, block[ 5], 6);
|
229
|
-
II(dd, ee, aa, bb, cc, block[ 6], 5);
|
230
|
-
II(cc, dd, ee, aa, bb, block[ 2], 12);
|
231
|
-
|
232
|
-
/* round 5 */
|
233
|
-
JJ(bb, cc, dd, ee, aa, block[ 4], 9);
|
234
|
-
JJ(aa, bb, cc, dd, ee, block[ 0], 15);
|
235
|
-
JJ(ee, aa, bb, cc, dd, block[ 5], 5);
|
236
|
-
JJ(dd, ee, aa, bb, cc, block[ 9], 11);
|
237
|
-
JJ(cc, dd, ee, aa, bb, block[ 7], 6);
|
238
|
-
JJ(bb, cc, dd, ee, aa, block[12], 8);
|
239
|
-
JJ(aa, bb, cc, dd, ee, block[ 2], 13);
|
240
|
-
JJ(ee, aa, bb, cc, dd, block[10], 12);
|
241
|
-
JJ(dd, ee, aa, bb, cc, block[14], 5);
|
242
|
-
JJ(cc, dd, ee, aa, bb, block[ 1], 12);
|
243
|
-
JJ(bb, cc, dd, ee, aa, block[ 3], 13);
|
244
|
-
JJ(aa, bb, cc, dd, ee, block[ 8], 14);
|
245
|
-
JJ(ee, aa, bb, cc, dd, block[11], 11);
|
246
|
-
JJ(dd, ee, aa, bb, cc, block[ 6], 8);
|
247
|
-
JJ(cc, dd, ee, aa, bb, block[15], 5);
|
248
|
-
JJ(bb, cc, dd, ee, aa, block[13], 6);
|
249
|
-
|
250
|
-
/* parallel round 1 */
|
251
|
-
JJJ(aaa, bbb, ccc, ddd, eee, block[ 5], 8);
|
252
|
-
JJJ(eee, aaa, bbb, ccc, ddd, block[14], 9);
|
253
|
-
JJJ(ddd, eee, aaa, bbb, ccc, block[ 7], 9);
|
254
|
-
JJJ(ccc, ddd, eee, aaa, bbb, block[ 0], 11);
|
255
|
-
JJJ(bbb, ccc, ddd, eee, aaa, block[ 9], 13);
|
256
|
-
JJJ(aaa, bbb, ccc, ddd, eee, block[ 2], 15);
|
257
|
-
JJJ(eee, aaa, bbb, ccc, ddd, block[11], 15);
|
258
|
-
JJJ(ddd, eee, aaa, bbb, ccc, block[ 4], 5);
|
259
|
-
JJJ(ccc, ddd, eee, aaa, bbb, block[13], 7);
|
260
|
-
JJJ(bbb, ccc, ddd, eee, aaa, block[ 6], 7);
|
261
|
-
JJJ(aaa, bbb, ccc, ddd, eee, block[15], 8);
|
262
|
-
JJJ(eee, aaa, bbb, ccc, ddd, block[ 8], 11);
|
263
|
-
JJJ(ddd, eee, aaa, bbb, ccc, block[ 1], 14);
|
264
|
-
JJJ(ccc, ddd, eee, aaa, bbb, block[10], 14);
|
265
|
-
JJJ(bbb, ccc, ddd, eee, aaa, block[ 3], 12);
|
266
|
-
JJJ(aaa, bbb, ccc, ddd, eee, block[12], 6);
|
267
|
-
|
268
|
-
/* parallel round 2 */
|
269
|
-
III(eee, aaa, bbb, ccc, ddd, block[ 6], 9);
|
270
|
-
III(ddd, eee, aaa, bbb, ccc, block[11], 13);
|
271
|
-
III(ccc, ddd, eee, aaa, bbb, block[ 3], 15);
|
272
|
-
III(bbb, ccc, ddd, eee, aaa, block[ 7], 7);
|
273
|
-
III(aaa, bbb, ccc, ddd, eee, block[ 0], 12);
|
274
|
-
III(eee, aaa, bbb, ccc, ddd, block[13], 8);
|
275
|
-
III(ddd, eee, aaa, bbb, ccc, block[ 5], 9);
|
276
|
-
III(ccc, ddd, eee, aaa, bbb, block[10], 11);
|
277
|
-
III(bbb, ccc, ddd, eee, aaa, block[14], 7);
|
278
|
-
III(aaa, bbb, ccc, ddd, eee, block[15], 7);
|
279
|
-
III(eee, aaa, bbb, ccc, ddd, block[ 8], 12);
|
280
|
-
III(ddd, eee, aaa, bbb, ccc, block[12], 7);
|
281
|
-
III(ccc, ddd, eee, aaa, bbb, block[ 4], 6);
|
282
|
-
III(bbb, ccc, ddd, eee, aaa, block[ 9], 15);
|
283
|
-
III(aaa, bbb, ccc, ddd, eee, block[ 1], 13);
|
284
|
-
III(eee, aaa, bbb, ccc, ddd, block[ 2], 11);
|
285
|
-
|
286
|
-
/* parallel round 3 */
|
287
|
-
HHH(ddd, eee, aaa, bbb, ccc, block[15], 9);
|
288
|
-
HHH(ccc, ddd, eee, aaa, bbb, block[ 5], 7);
|
289
|
-
HHH(bbb, ccc, ddd, eee, aaa, block[ 1], 15);
|
290
|
-
HHH(aaa, bbb, ccc, ddd, eee, block[ 3], 11);
|
291
|
-
HHH(eee, aaa, bbb, ccc, ddd, block[ 7], 8);
|
292
|
-
HHH(ddd, eee, aaa, bbb, ccc, block[14], 6);
|
293
|
-
HHH(ccc, ddd, eee, aaa, bbb, block[ 6], 6);
|
294
|
-
HHH(bbb, ccc, ddd, eee, aaa, block[ 9], 14);
|
295
|
-
HHH(aaa, bbb, ccc, ddd, eee, block[11], 12);
|
296
|
-
HHH(eee, aaa, bbb, ccc, ddd, block[ 8], 13);
|
297
|
-
HHH(ddd, eee, aaa, bbb, ccc, block[12], 5);
|
298
|
-
HHH(ccc, ddd, eee, aaa, bbb, block[ 2], 14);
|
299
|
-
HHH(bbb, ccc, ddd, eee, aaa, block[10], 13);
|
300
|
-
HHH(aaa, bbb, ccc, ddd, eee, block[ 0], 13);
|
301
|
-
HHH(eee, aaa, bbb, ccc, ddd, block[ 4], 7);
|
302
|
-
HHH(ddd, eee, aaa, bbb, ccc, block[13], 5);
|
303
|
-
|
304
|
-
/* parallel round 4 */
|
305
|
-
GGG(ccc, ddd, eee, aaa, bbb, block[ 8], 15);
|
306
|
-
GGG(bbb, ccc, ddd, eee, aaa, block[ 6], 5);
|
307
|
-
GGG(aaa, bbb, ccc, ddd, eee, block[ 4], 8);
|
308
|
-
GGG(eee, aaa, bbb, ccc, ddd, block[ 1], 11);
|
309
|
-
GGG(ddd, eee, aaa, bbb, ccc, block[ 3], 14);
|
310
|
-
GGG(ccc, ddd, eee, aaa, bbb, block[11], 14);
|
311
|
-
GGG(bbb, ccc, ddd, eee, aaa, block[15], 6);
|
312
|
-
GGG(aaa, bbb, ccc, ddd, eee, block[ 0], 14);
|
313
|
-
GGG(eee, aaa, bbb, ccc, ddd, block[ 5], 6);
|
314
|
-
GGG(ddd, eee, aaa, bbb, ccc, block[12], 9);
|
315
|
-
GGG(ccc, ddd, eee, aaa, bbb, block[ 2], 12);
|
316
|
-
GGG(bbb, ccc, ddd, eee, aaa, block[13], 9);
|
317
|
-
GGG(aaa, bbb, ccc, ddd, eee, block[ 9], 12);
|
318
|
-
GGG(eee, aaa, bbb, ccc, ddd, block[ 7], 5);
|
319
|
-
GGG(ddd, eee, aaa, bbb, ccc, block[10], 15);
|
320
|
-
GGG(ccc, ddd, eee, aaa, bbb, block[14], 8);
|
321
|
-
|
322
|
-
/* parallel round 5 */
|
323
|
-
FFF(bbb, ccc, ddd, eee, aaa, block[12] , 8);
|
324
|
-
FFF(aaa, bbb, ccc, ddd, eee, block[15] , 5);
|
325
|
-
FFF(eee, aaa, bbb, ccc, ddd, block[10] , 12);
|
326
|
-
FFF(ddd, eee, aaa, bbb, ccc, block[ 4] , 9);
|
327
|
-
FFF(ccc, ddd, eee, aaa, bbb, block[ 1] , 12);
|
328
|
-
FFF(bbb, ccc, ddd, eee, aaa, block[ 5] , 5);
|
329
|
-
FFF(aaa, bbb, ccc, ddd, eee, block[ 8] , 14);
|
330
|
-
FFF(eee, aaa, bbb, ccc, ddd, block[ 7] , 6);
|
331
|
-
FFF(ddd, eee, aaa, bbb, ccc, block[ 6] , 8);
|
332
|
-
FFF(ccc, ddd, eee, aaa, bbb, block[ 2] , 13);
|
333
|
-
FFF(bbb, ccc, ddd, eee, aaa, block[13] , 6);
|
334
|
-
FFF(aaa, bbb, ccc, ddd, eee, block[14] , 5);
|
335
|
-
FFF(eee, aaa, bbb, ccc, ddd, block[ 0] , 15);
|
336
|
-
FFF(ddd, eee, aaa, bbb, ccc, block[ 3] , 13);
|
337
|
-
FFF(ccc, ddd, eee, aaa, bbb, block[ 9] , 11);
|
338
|
-
FFF(bbb, ccc, ddd, eee, aaa, block[11] , 11);
|
339
|
-
|
340
|
-
/* combine results */
|
341
|
-
ddd += cc + state[1]; /* final result for state[0] */
|
342
|
-
state[1] = state[2] + dd + eee;
|
343
|
-
state[2] = state[3] + ee + aaa;
|
344
|
-
state[3] = state[4] + aa + bbb;
|
345
|
-
state[4] = state[0] + bb + ccc;
|
346
|
-
state[0] = ddd;
|
347
|
-
}
|
348
|
-
|
349
|
-
/********************************************************************/
|
350
|
-
|
351
|
-
void
|
352
|
-
RMD160_Update(RMD160_CTX *context, const uint8_t *data, size_t nbytes)
|
353
|
-
{
|
354
|
-
uint32_t X[16];
|
355
|
-
uint32_t ofs = 0;
|
356
|
-
uint32_t i;
|
357
|
-
#ifdef WORDS_BIGENDIAN
|
358
|
-
uint32_t j;
|
359
|
-
#endif
|
360
|
-
|
361
|
-
_DIAGASSERT(context != NULL);
|
362
|
-
_DIAGASSERT(data != NULL);
|
363
|
-
|
364
|
-
/* update length[] */
|
365
|
-
if (context->length[0] + nbytes < context->length[0])
|
366
|
-
context->length[1]++; /* overflow to msb of length */
|
367
|
-
context->length[0] += nbytes;
|
368
|
-
|
369
|
-
(void)memset(X, 0, sizeof(X));
|
370
|
-
|
371
|
-
if ( context->buflen + nbytes < 64 )
|
372
|
-
{
|
373
|
-
(void)memcpy(context->bbuffer + context->buflen, data, nbytes);
|
374
|
-
context->buflen += nbytes;
|
375
|
-
}
|
376
|
-
else
|
377
|
-
{
|
378
|
-
/* process first block */
|
379
|
-
ofs = 64 - context->buflen;
|
380
|
-
(void)memcpy(context->bbuffer + context->buflen, data, ofs);
|
381
|
-
#ifndef WORDS_BIGENDIAN
|
382
|
-
(void)memcpy(X, context->bbuffer, sizeof(X));
|
383
|
-
#else
|
384
|
-
for (j=0; j < 16; j++)
|
385
|
-
X[j] = BYTES_TO_DWORD(context->bbuffer + (4 * j));
|
386
|
-
#endif
|
387
|
-
RMD160_Transform(context->state, X);
|
388
|
-
nbytes -= ofs;
|
389
|
-
|
390
|
-
/* process remaining complete blocks */
|
391
|
-
for (i = 0; i < (nbytes >> 6); i++) {
|
392
|
-
#ifndef WORDS_BIGENDIAN
|
393
|
-
(void)memcpy(X, data + (64 * i) + ofs, sizeof(X));
|
394
|
-
#else
|
395
|
-
for (j=0; j < 16; j++)
|
396
|
-
X[j] = BYTES_TO_DWORD(data + (64 * i) + (4 * j) + ofs);
|
397
|
-
#endif
|
398
|
-
RMD160_Transform(context->state, X);
|
399
|
-
}
|
400
|
-
|
401
|
-
/*
|
402
|
-
* Put last bytes from data into context's buffer
|
403
|
-
*/
|
404
|
-
context->buflen = nbytes & 63;
|
405
|
-
memcpy(context->bbuffer, data + (64 * i) + ofs, context->buflen);
|
406
|
-
}
|
407
|
-
}
|
408
|
-
|
409
|
-
/********************************************************************/
|
410
|
-
|
411
|
-
void
|
412
|
-
RMD160_Finish(RMD160_CTX *context, uint8_t digest[20])
|
413
|
-
{
|
414
|
-
uint32_t i;
|
415
|
-
uint32_t X[16];
|
416
|
-
#ifdef WORDS_BIGENDIAN
|
417
|
-
uint32_t j;
|
418
|
-
#endif
|
419
|
-
|
420
|
-
_DIAGASSERT(digest != NULL);
|
421
|
-
_DIAGASSERT(context != NULL);
|
422
|
-
|
423
|
-
/* append the bit m_n == 1 */
|
424
|
-
context->bbuffer[context->buflen] = (uint8_t)'\200';
|
425
|
-
|
426
|
-
(void)memset(context->bbuffer + context->buflen + 1, 0,
|
427
|
-
63 - context->buflen);
|
428
|
-
#ifndef WORDS_BIGENDIAN
|
429
|
-
(void)memcpy(X, context->bbuffer, sizeof(X));
|
430
|
-
#else
|
431
|
-
for (j=0; j < 16; j++)
|
432
|
-
X[j] = BYTES_TO_DWORD(context->bbuffer + (4 * j));
|
433
|
-
#endif
|
434
|
-
if ((context->buflen) > 55) {
|
435
|
-
/* length goes to next block */
|
436
|
-
RMD160_Transform(context->state, X);
|
437
|
-
(void)memset(X, 0, sizeof(X));
|
438
|
-
}
|
439
|
-
|
440
|
-
/* append length in bits */
|
441
|
-
X[14] = context->length[0] << 3;
|
442
|
-
X[15] = (context->length[0] >> 29) |
|
443
|
-
(context->length[1] << 3);
|
444
|
-
RMD160_Transform(context->state, X);
|
445
|
-
|
446
|
-
if (digest != NULL) {
|
447
|
-
for (i = 0; i < 20; i += 4) {
|
448
|
-
/* extracts the 8 least significant bits. */
|
449
|
-
digest[i] = context->state[i>>2];
|
450
|
-
digest[i + 1] = (context->state[i>>2] >> 8);
|
451
|
-
digest[i + 2] = (context->state[i>>2] >> 16);
|
452
|
-
digest[i + 3] = (context->state[i>>2] >> 24);
|
453
|
-
}
|
454
|
-
}
|
455
|
-
}
|
456
|
-
|
457
|
-
/************************ end of file rmd160.c **********************/
|