ray 0.0.1 → 0.1.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. data/.gemtest +0 -0
  2. data/.yardopts +4 -0
  3. data/README.md +17 -21
  4. data/Rakefile +18 -139
  5. data/VERSION +1 -1
  6. data/ext/audio.cpp +723 -0
  7. data/ext/{color.c → color.cpp} +25 -13
  8. data/ext/drawable.cpp +91 -0
  9. data/ext/event.cpp +460 -0
  10. data/ext/extconf.rb +5 -104
  11. data/ext/font.cpp +190 -0
  12. data/ext/image.cpp +733 -0
  13. data/ext/input.cpp +74 -0
  14. data/ext/ray.cpp +168 -0
  15. data/ext/ray.hpp +356 -0
  16. data/ext/{rect.c → rect.cpp} +51 -37
  17. data/ext/shader.cpp +169 -0
  18. data/ext/shape.cpp +409 -0
  19. data/ext/sprite.cpp +306 -0
  20. data/ext/text.cpp +181 -0
  21. data/ext/vector.cpp +215 -0
  22. data/guide.md +619 -0
  23. data/lib/ray/audio.rb +0 -41
  24. data/lib/ray/color.rb +32 -10
  25. data/lib/ray/drawable.rb +16 -0
  26. data/lib/ray/dsl/event_listener.rb +25 -2
  27. data/lib/ray/dsl/event_runner.rb +33 -5
  28. data/lib/ray/dsl/event_translator.rb +66 -30
  29. data/lib/ray/dsl/handler.rb +3 -2
  30. data/lib/ray/dsl/matcher.rb +58 -14
  31. data/lib/ray/font.rb +38 -96
  32. data/lib/ray/font_set.rb +8 -8
  33. data/lib/ray/game.rb +87 -66
  34. data/lib/ray/helper.rb +105 -10
  35. data/lib/ray/image.rb +150 -24
  36. data/lib/ray/image_set.rb +3 -1
  37. data/lib/ray/input.rb +10 -0
  38. data/lib/ray/music_set.rb +5 -3
  39. data/lib/ray/ray.rb +21 -9
  40. data/lib/ray/rect.rb +48 -7
  41. data/lib/ray/rmagick.rb +41 -0
  42. data/lib/ray/scene.rb +99 -43
  43. data/lib/ray/scene_list.rb +67 -0
  44. data/lib/ray/shape.rb +132 -0
  45. data/lib/ray/sound_set.rb +4 -2
  46. data/lib/ray/sprite.rb +49 -111
  47. data/lib/ray/text.rb +101 -0
  48. data/lib/ray/text_helper.rb +37 -0
  49. data/lib/ray/turtle.rb +215 -0
  50. data/lib/ray/vector.rb +226 -0
  51. data/samples/audio/spacial.rb +44 -0
  52. data/samples/hello_world/hello.rb +9 -13
  53. data/samples/hello_world/hello_dsl.rb +8 -12
  54. data/samples/hello_world/text.rb +15 -0
  55. data/samples/opengl/binding.rb +38 -0
  56. data/samples/opengl/image.rb +32 -0
  57. data/samples/opengl/opengl.rb +34 -0
  58. data/samples/opengl/shader.rb +42 -0
  59. data/samples/pong/pong.rb +14 -10
  60. data/samples/run_scene.rb +53 -0
  61. data/samples/shaders/scene.rb +40 -0
  62. data/samples/shaders/shaders.rb +42 -0
  63. data/samples/shaders/shape.rb +34 -0
  64. data/samples/sokoban/sokoban.rb +18 -18
  65. data/samples/test/actual_scene.rb +41 -0
  66. data/samples/test/scene_riot.rb +39 -0
  67. data/samples/test/scene_spec.rb +32 -0
  68. data/samples/test/scene_test_unit.rb +25 -0
  69. data/samples/turtle/byzantium.rb +45 -0
  70. data/samples/turtle/hilbert.rb +48 -0
  71. data/samples/turtle/koch.rb +55 -0
  72. data/samples/turtle/mandala.rb +61 -0
  73. data/samples/turtle/tree.rb +57 -0
  74. data/test/audio_test.rb +69 -0
  75. data/test/color_test.rb +77 -0
  76. data/test/drawable_test.rb +19 -0
  77. data/test/dsl_test.rb +93 -0
  78. data/test/font_test.rb +57 -0
  79. data/test/helpers.rb +94 -0
  80. data/test/image_test.rb +82 -0
  81. data/test/ray_test.rb +25 -0
  82. data/test/rect_test.rb +121 -0
  83. data/{spec → test}/res/VeraMono.ttf +0 -0
  84. data/{spec → test}/res/aqua.bmp +0 -0
  85. data/{spec → test}/res/aqua.png +0 -0
  86. data/{spec → test}/res/aqua2.bmp +0 -0
  87. data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
  88. data/{spec → test}/res/pop.wav +0 -0
  89. data/test/resource_set_test.rb +99 -0
  90. data/test/run_all.rb +7 -0
  91. data/test/shape_test.rb +101 -0
  92. data/test/sprite_test.rb +89 -0
  93. data/test/text_test.rb +78 -0
  94. data/test/turtle_test.rb +176 -0
  95. data/test/vector_test.rb +111 -0
  96. data/yard_ext.rb +0 -28
  97. metadata +95 -139
  98. data/.gitignore +0 -23
  99. data/.gitmodules +0 -3
  100. data/.rspec +0 -3
  101. data/ext/audio.c +0 -473
  102. data/ext/event.c +0 -557
  103. data/ext/font.c +0 -287
  104. data/ext/image.c +0 -933
  105. data/ext/joystick.c +0 -145
  106. data/ext/ray.c +0 -489
  107. data/ext/ray.h +0 -245
  108. data/ext/ray_osx.m +0 -161
  109. data/lib/ray/joystick.rb +0 -30
  110. data/psp/SDL_psp_main.c +0 -84
  111. data/psp/bigdecimal/README +0 -60
  112. data/psp/bigdecimal/bigdecimal.c +0 -4697
  113. data/psp/bigdecimal/bigdecimal.h +0 -216
  114. data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
  115. data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
  116. data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
  117. data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
  118. data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
  119. data/psp/digest/bubblebabble/bubblebabble.c +0 -142
  120. data/psp/digest/defs.h +0 -20
  121. data/psp/digest/digest.c +0 -643
  122. data/psp/digest/digest.h +0 -32
  123. data/psp/digest/lib/digest.rb +0 -50
  124. data/psp/digest/lib/md5.rb +0 -27
  125. data/psp/digest/lib/sha1.rb +0 -27
  126. data/psp/digest/md5/md5.c +0 -420
  127. data/psp/digest/md5/md5.h +0 -80
  128. data/psp/digest/md5/md5init.c +0 -40
  129. data/psp/digest/rmd160/rmd160.c +0 -457
  130. data/psp/digest/rmd160/rmd160.h +0 -56
  131. data/psp/digest/rmd160/rmd160init.c +0 -40
  132. data/psp/digest/sha1/sha1.c +0 -269
  133. data/psp/digest/sha1/sha1.h +0 -39
  134. data/psp/digest/sha1/sha1init.c +0 -40
  135. data/psp/digest/sha2/lib/sha2.rb +0 -73
  136. data/psp/digest/sha2/sha2.c +0 -919
  137. data/psp/digest/sha2/sha2.h +0 -109
  138. data/psp/digest/sha2/sha2init.c +0 -52
  139. data/psp/enumerator/enumerator.c +0 -298
  140. data/psp/etc/etc.c +0 -559
  141. data/psp/ext.c +0 -289
  142. data/psp/fcntl/fcntl.c +0 -187
  143. data/psp/lib/rbconfig.rb +0 -178
  144. data/psp/nkf/lib/kconv.rb +0 -367
  145. data/psp/nkf/nkf-utf8/config.h +0 -88
  146. data/psp/nkf/nkf-utf8/nkf.c +0 -6040
  147. data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
  148. data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
  149. data/psp/nkf/nkf.c +0 -654
  150. data/psp/socket/addrinfo.h +0 -173
  151. data/psp/socket/getaddrinfo.c +0 -676
  152. data/psp/socket/getnameinfo.c +0 -270
  153. data/psp/socket/pspsocket.c +0 -71
  154. data/psp/socket/pspsocket.h +0 -28
  155. data/psp/socket/socket.c +0 -4662
  156. data/psp/socket/sockport.h +0 -76
  157. data/psp/stringio/stringio.c +0 -1306
  158. data/psp/strscan/strscan.c +0 -1320
  159. data/psp/syck/bytecode.c +0 -1166
  160. data/psp/syck/emitter.c +0 -1242
  161. data/psp/syck/gram.c +0 -1894
  162. data/psp/syck/gram.h +0 -79
  163. data/psp/syck/handler.c +0 -174
  164. data/psp/syck/implicit.c +0 -2990
  165. data/psp/syck/node.c +0 -408
  166. data/psp/syck/rubyext.c +0 -2367
  167. data/psp/syck/syck.c +0 -504
  168. data/psp/syck/syck.h +0 -456
  169. data/psp/syck/token.c +0 -2725
  170. data/psp/syck/yaml2byte.c +0 -257
  171. data/psp/syck/yamlbyte.h +0 -170
  172. data/psp/thread/thread.c +0 -1175
  173. data/psp/zlib/zlib.c +0 -3547
  174. data/script.rb +0 -10
  175. data/spec/ray/audio_spec.rb +0 -146
  176. data/spec/ray/color_spec.rb +0 -57
  177. data/spec/ray/event_spec.rb +0 -80
  178. data/spec/ray/font_spec.rb +0 -93
  179. data/spec/ray/image_set_spec.rb +0 -48
  180. data/spec/ray/image_spec.rb +0 -162
  181. data/spec/ray/joystick_spec.rb +0 -21
  182. data/spec/ray/matcher_spec.rb +0 -50
  183. data/spec/ray/ray_spec.rb +0 -88
  184. data/spec/ray/rect_spec.rb +0 -154
  185. data/spec/ray/resource_set_spec.rb +0 -105
  186. data/spec/ray/sprite_spec.rb +0 -163
  187. data/spec/spec.opts +0 -4
  188. data/spec/spec_helper.rb +0 -8
@@ -1,56 +0,0 @@
1
- /* $NetBSD: rmd160.h,v 1.2 2000/07/07 10:47:06 ad Exp $ */
2
- /* $RoughId: rmd160.h,v 1.3 2002/02/24 08:14:31 knu Exp $ */
3
- /* $Id: rmd160.h 11708 2007-02-12 23:01:19Z shyouhei $ */
4
-
5
- /********************************************************************\
6
- *
7
- * FILE: rmd160.h
8
- *
9
- * CONTENTS: Header file for a sample C-implementation of the
10
- * RIPEMD-160 hash-function.
11
- * TARGET: any computer with an ANSI C compiler
12
- *
13
- * AUTHOR: Antoon Bosselaers, ESAT-COSIC
14
- * DATE: 1 March 1996
15
- * VERSION: 1.0
16
- *
17
- * Copyright (c) Katholieke Universiteit Leuven
18
- * 1996, All Rights Reserved
19
- *
20
- \********************************************************************/
21
-
22
- /*
23
- * from OpenBSD: rmd160.h,v 1.4 1999/08/16 09:59:04 millert Exp
24
- */
25
-
26
- #ifndef _RMD160_H_
27
- #define _RMD160_H_
28
-
29
- #include "../defs.h"
30
-
31
- typedef struct {
32
- uint32_t state[5]; /* state (ABCDE) */
33
- uint32_t length[2]; /* number of bits */
34
- uint8_t bbuffer[64]; /* overflow buffer */
35
- uint32_t buflen; /* number of chars in bbuffer */
36
- } RMD160_CTX;
37
-
38
- #ifdef RUBY
39
- #define RMD160_Init rb_Digest_RMD160_Init
40
- #define RMD160_Transform rb_Digest_RMD160_Transform
41
- #define RMD160_Update rb_Digest_RMD160_Update
42
- #define RMD160_Finish rb_Digest_RMD160_Finish
43
- #endif
44
-
45
- __BEGIN_DECLS
46
- void RMD160_Init _((RMD160_CTX *));
47
- void RMD160_Transform _((uint32_t[5], const uint32_t[16]));
48
- void RMD160_Update _((RMD160_CTX *, const uint8_t *, size_t));
49
- void RMD160_Finish _((RMD160_CTX *, uint8_t[20]));
50
- __END_DECLS
51
-
52
- #define RMD160_BLOCK_LENGTH 64
53
- #define RMD160_DIGEST_LENGTH 20
54
- #define RMD160_DIGEST_STRING_LENGTH (RMD160_DIGEST_LENGTH * 2 + 1)
55
-
56
- #endif /* !_RMD160_H_ */
@@ -1,40 +0,0 @@
1
- /* $RoughId: rmd160init.c,v 1.3 2001/07/13 20:00:43 knu Exp $ */
2
- /* $Id: rmd160init.c 11708 2007-02-12 23:01:19Z shyouhei $ */
3
-
4
- #include "../digest.h"
5
- #if defined(HAVE_OPENSSL_RIPEMD_H)
6
- #include "rmd160ossl.h"
7
- #else
8
- #include "rmd160.h"
9
- #endif
10
-
11
- static rb_digest_metadata_t rmd160 = {
12
- RUBY_DIGEST_API_VERSION,
13
- RMD160_DIGEST_LENGTH,
14
- RMD160_BLOCK_LENGTH,
15
- sizeof(RMD160_CTX),
16
- (rb_digest_hash_init_func_t)RMD160_Init,
17
- (rb_digest_hash_update_func_t)RMD160_Update,
18
- (rb_digest_hash_finish_func_t)RMD160_Finish,
19
- };
20
-
21
- /*
22
- * A class for calculating message digests using RIPEMD-160
23
- * cryptographic hash function, designed by Hans Dobbertin, Antoon
24
- * Bosselaers, and Bart Preneel.
25
- */
26
- void
27
- Init_rmd160()
28
- {
29
- VALUE mDigest, cDigest_Base, cDigest_RMD160;
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_RMD160 = rb_define_class_under(mDigest, "RMD160", cDigest_Base);
37
-
38
- rb_ivar_set(cDigest_RMD160, rb_intern("metadata"),
39
- Data_Wrap_Struct(rb_cObject, 0, 0, &rmd160));
40
- }
@@ -1,269 +0,0 @@
1
- /* $NetBSD: sha1.c,v 1.2 2001/03/22 09:51:48 agc Exp $ */
2
- /* $OpenBSD: sha1.c,v 1.9 1997/07/23 21:12:32 kstailey Exp $ */
3
- /* $RoughId: sha1.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */
4
- /* $Id: sha1.c 11708 2007-02-12 23:01:19Z shyouhei $ */
5
-
6
- /*
7
- * SHA-1 in C
8
- * By Steve Reid <steve@edmweb.com>
9
- * 100% Public Domain
10
- *
11
- * Test Vectors (from FIPS PUB 180-1)
12
- * "abc"
13
- * A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
14
- * "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
15
- * 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
16
- * A million repetitions of "a"
17
- * 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
18
- */
19
-
20
- #include "sha1.h"
21
-
22
- #define SHA1HANDSOFF /* Copies data before messing with it. */
23
-
24
- #if defined(_KERNEL) || defined(_STANDALONE)
25
- #include <sys/param.h>
26
- #include <sys/systm.h>
27
- #define _DIAGASSERT(x) (void)0
28
- #else
29
- /* #include "namespace.h" */
30
- #include <assert.h>
31
- #include <string.h>
32
- #endif
33
-
34
- #ifndef _DIAGASSERT
35
- #define _DIAGASSERT(cond) assert(cond)
36
- #endif
37
-
38
- /*
39
- * XXX Kludge until there is resolution regarding mem*() functions
40
- * XXX in the kernel.
41
- */
42
- #if defined(_KERNEL) || defined(_STANDALONE)
43
- #define memcpy(s, d, l) bcopy((d), (s), (l))
44
- #endif
45
-
46
- #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
47
-
48
- /*
49
- * blk0() and blk() perform the initial expand.
50
- * I got the idea of expanding during the round function from SSLeay
51
- */
52
- #ifndef WORDS_BIGENDIAN
53
- # define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
54
- |(rol(block->l[i],8)&0x00FF00FF))
55
- #else
56
- # define blk0(i) block->l[i]
57
- #endif
58
- #define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
59
- ^block->l[(i+2)&15]^block->l[i&15],1))
60
-
61
- /*
62
- * (R0+R1), R2, R3, R4 are the different operations (rounds) used in SHA1
63
- */
64
- #define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
65
- #define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
66
- #define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
67
- #define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
68
- #define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
69
-
70
-
71
- typedef union {
72
- uint8_t c[64];
73
- uint32_t l[16];
74
- } CHAR64LONG16;
75
-
76
- #ifdef __sparc_v9__
77
- void do_R01(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *);
78
- void do_R2(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *);
79
- void do_R3(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *);
80
- void do_R4(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *);
81
-
82
- #define nR0(v,w,x,y,z,i) R0(*v,*w,*x,*y,*z,i)
83
- #define nR1(v,w,x,y,z,i) R1(*v,*w,*x,*y,*z,i)
84
- #define nR2(v,w,x,y,z,i) R2(*v,*w,*x,*y,*z,i)
85
- #define nR3(v,w,x,y,z,i) R3(*v,*w,*x,*y,*z,i)
86
- #define nR4(v,w,x,y,z,i) R4(*v,*w,*x,*y,*z,i)
87
-
88
- void
89
- do_R01(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *block)
90
- {
91
- nR0(a,b,c,d,e, 0); nR0(e,a,b,c,d, 1); nR0(d,e,a,b,c, 2); nR0(c,d,e,a,b, 3);
92
- nR0(b,c,d,e,a, 4); nR0(a,b,c,d,e, 5); nR0(e,a,b,c,d, 6); nR0(d,e,a,b,c, 7);
93
- nR0(c,d,e,a,b, 8); nR0(b,c,d,e,a, 9); nR0(a,b,c,d,e,10); nR0(e,a,b,c,d,11);
94
- nR0(d,e,a,b,c,12); nR0(c,d,e,a,b,13); nR0(b,c,d,e,a,14); nR0(a,b,c,d,e,15);
95
- nR1(e,a,b,c,d,16); nR1(d,e,a,b,c,17); nR1(c,d,e,a,b,18); nR1(b,c,d,e,a,19);
96
- }
97
-
98
- void
99
- do_R2(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *block)
100
- {
101
- nR2(a,b,c,d,e,20); nR2(e,a,b,c,d,21); nR2(d,e,a,b,c,22); nR2(c,d,e,a,b,23);
102
- nR2(b,c,d,e,a,24); nR2(a,b,c,d,e,25); nR2(e,a,b,c,d,26); nR2(d,e,a,b,c,27);
103
- nR2(c,d,e,a,b,28); nR2(b,c,d,e,a,29); nR2(a,b,c,d,e,30); nR2(e,a,b,c,d,31);
104
- nR2(d,e,a,b,c,32); nR2(c,d,e,a,b,33); nR2(b,c,d,e,a,34); nR2(a,b,c,d,e,35);
105
- nR2(e,a,b,c,d,36); nR2(d,e,a,b,c,37); nR2(c,d,e,a,b,38); nR2(b,c,d,e,a,39);
106
- }
107
-
108
- void
109
- do_R3(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *block)
110
- {
111
- nR3(a,b,c,d,e,40); nR3(e,a,b,c,d,41); nR3(d,e,a,b,c,42); nR3(c,d,e,a,b,43);
112
- nR3(b,c,d,e,a,44); nR3(a,b,c,d,e,45); nR3(e,a,b,c,d,46); nR3(d,e,a,b,c,47);
113
- nR3(c,d,e,a,b,48); nR3(b,c,d,e,a,49); nR3(a,b,c,d,e,50); nR3(e,a,b,c,d,51);
114
- nR3(d,e,a,b,c,52); nR3(c,d,e,a,b,53); nR3(b,c,d,e,a,54); nR3(a,b,c,d,e,55);
115
- nR3(e,a,b,c,d,56); nR3(d,e,a,b,c,57); nR3(c,d,e,a,b,58); nR3(b,c,d,e,a,59);
116
- }
117
-
118
- void
119
- do_R4(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LONG16 *block)
120
- {
121
- nR4(a,b,c,d,e,60); nR4(e,a,b,c,d,61); nR4(d,e,a,b,c,62); nR4(c,d,e,a,b,63);
122
- nR4(b,c,d,e,a,64); nR4(a,b,c,d,e,65); nR4(e,a,b,c,d,66); nR4(d,e,a,b,c,67);
123
- nR4(c,d,e,a,b,68); nR4(b,c,d,e,a,69); nR4(a,b,c,d,e,70); nR4(e,a,b,c,d,71);
124
- nR4(d,e,a,b,c,72); nR4(c,d,e,a,b,73); nR4(b,c,d,e,a,74); nR4(a,b,c,d,e,75);
125
- nR4(e,a,b,c,d,76); nR4(d,e,a,b,c,77); nR4(c,d,e,a,b,78); nR4(b,c,d,e,a,79);
126
- }
127
- #endif
128
-
129
- /*
130
- * Hash a single 512-bit block. This is the core of the algorithm.
131
- */
132
- void SHA1_Transform(uint32_t state[5], const uint8_t buffer[64])
133
- {
134
- uint32_t a, b, c, d, e;
135
- CHAR64LONG16 *block;
136
-
137
- #ifdef SHA1HANDSOFF
138
- CHAR64LONG16 workspace;
139
- #endif
140
-
141
- _DIAGASSERT(buffer != 0);
142
- _DIAGASSERT(state != 0);
143
-
144
- #ifdef SHA1HANDSOFF
145
- block = &workspace;
146
- (void)memcpy(block, buffer, 64);
147
- #else
148
- block = (CHAR64LONG16 *)(void *)buffer;
149
- #endif
150
-
151
- /* Copy context->state[] to working vars */
152
- a = state[0];
153
- b = state[1];
154
- c = state[2];
155
- d = state[3];
156
- e = state[4];
157
-
158
- #ifdef __sparc_v9__
159
- do_R01(&a, &b, &c, &d, &e, block);
160
- do_R2(&a, &b, &c, &d, &e, block);
161
- do_R3(&a, &b, &c, &d, &e, block);
162
- do_R4(&a, &b, &c, &d, &e, block);
163
- #else
164
- /* 4 rounds of 20 operations each. Loop unrolled. */
165
- R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
166
- R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
167
- R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
168
- R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
169
- R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
170
- R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
171
- R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
172
- R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
173
- R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
174
- R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
175
- R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
176
- R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
177
- R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
178
- R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
179
- R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
180
- R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
181
- R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
182
- R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
183
- R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
184
- R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
185
- #endif
186
-
187
- /* Add the working vars back into context.state[] */
188
- state[0] += a;
189
- state[1] += b;
190
- state[2] += c;
191
- state[3] += d;
192
- state[4] += e;
193
-
194
- /* Wipe variables */
195
- a = b = c = d = e = 0;
196
- }
197
-
198
-
199
- /*
200
- * SHA1_Init - Initialize new context
201
- */
202
- void SHA1_Init(SHA1_CTX *context)
203
- {
204
-
205
- _DIAGASSERT(context != 0);
206
-
207
- /* SHA1 initialization constants */
208
- context->state[0] = 0x67452301;
209
- context->state[1] = 0xEFCDAB89;
210
- context->state[2] = 0x98BADCFE;
211
- context->state[3] = 0x10325476;
212
- context->state[4] = 0xC3D2E1F0;
213
- context->count[0] = context->count[1] = 0;
214
- }
215
-
216
-
217
- /*
218
- * Run your data through this.
219
- */
220
- void SHA1_Update(SHA1_CTX *context, const uint8_t *data, size_t len)
221
- {
222
- uint32_t i, j;
223
-
224
- _DIAGASSERT(context != 0);
225
- _DIAGASSERT(data != 0);
226
-
227
- j = context->count[0];
228
- if ((context->count[0] += len << 3) < j)
229
- context->count[1] += (len>>29)+1;
230
- j = (j >> 3) & 63;
231
- if ((j + len) > 63) {
232
- (void)memcpy(&context->buffer[j], data, (i = 64-j));
233
- SHA1_Transform(context->state, context->buffer);
234
- for ( ; i + 63 < len; i += 64)
235
- SHA1_Transform(context->state, &data[i]);
236
- j = 0;
237
- } else {
238
- i = 0;
239
- }
240
- (void)memcpy(&context->buffer[j], &data[i], len - i);
241
- }
242
-
243
-
244
- /*
245
- * Add padding and return the message digest.
246
- */
247
- void SHA1_Finish(SHA1_CTX* context, uint8_t digest[20])
248
- {
249
- size_t i;
250
- uint8_t finalcount[8];
251
-
252
- _DIAGASSERT(digest != 0);
253
- _DIAGASSERT(context != 0);
254
-
255
- for (i = 0; i < 8; i++) {
256
- finalcount[i] = (uint8_t)((context->count[(i >= 4 ? 0 : 1)]
257
- >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */
258
- }
259
- SHA1_Update(context, (const uint8_t *)"\200", 1);
260
- while ((context->count[0] & 504) != 448)
261
- SHA1_Update(context, (const uint8_t *)"\0", 1);
262
- SHA1_Update(context, finalcount, 8); /* Should cause a SHA1_Transform() */
263
-
264
- if (digest) {
265
- for (i = 0; i < 20; i++)
266
- digest[i] = (uint8_t)
267
- ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
268
- }
269
- }
@@ -1,39 +0,0 @@
1
- /* $NetBSD: sha1.h,v 1.2 1998/05/29 22:55:44 thorpej Exp $ */
2
- /* $RoughId: sha1.h,v 1.3 2002/02/24 08:14:32 knu Exp $ */
3
- /* $Id: sha1.h 11708 2007-02-12 23:01:19Z shyouhei $ */
4
-
5
- /*
6
- * SHA-1 in C
7
- * By Steve Reid <steve@edmweb.com>
8
- * 100% Public Domain
9
- */
10
-
11
- #ifndef _SYS_SHA1_H_
12
- #define _SYS_SHA1_H_
13
-
14
- #include "../defs.h"
15
-
16
- typedef struct {
17
- uint32_t state[5];
18
- uint32_t count[2];
19
- uint8_t buffer[64];
20
- } SHA1_CTX;
21
-
22
- #ifdef RUBY
23
- /* avoid name clash */
24
- #define SHA1_Transform rb_Digest_SHA1_Transform
25
- #define SHA1_Init rb_Digest_SHA1_Init
26
- #define SHA1_Update rb_Digest_SHA1_Update
27
- #define SHA1_Finish rb_Digest_SHA1_Finish
28
- #endif
29
-
30
- void SHA1_Transform _((uint32_t state[5], const uint8_t buffer[64]));
31
- void SHA1_Init _((SHA1_CTX *context));
32
- void SHA1_Update _((SHA1_CTX *context, const uint8_t *data, size_t len));
33
- void SHA1_Finish _((SHA1_CTX *context, uint8_t digest[20]));
34
-
35
- #define SHA1_BLOCK_LENGTH 64
36
- #define SHA1_DIGEST_LENGTH 20
37
- #define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1)
38
-
39
- #endif /* _SYS_SHA1_H_ */
@@ -1,40 +0,0 @@
1
- /* $RoughId: sha1init.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */
2
- /* $Id: sha1init.c 11708 2007-02-12 23:01:19Z shyouhei $ */
3
-
4
- #include "../digest.h"
5
- #if defined(HAVE_OPENSSL_SHA_H)
6
- #include "sha1ossl.h"
7
- #else
8
- #include "sha1.h"
9
- #endif
10
-
11
- static rb_digest_metadata_t sha1 = {
12
- RUBY_DIGEST_API_VERSION,
13
- SHA1_DIGEST_LENGTH,
14
- SHA1_BLOCK_LENGTH,
15
- sizeof(SHA1_CTX),
16
- (rb_digest_hash_init_func_t)SHA1_Init,
17
- (rb_digest_hash_update_func_t)SHA1_Update,
18
- (rb_digest_hash_finish_func_t)SHA1_Finish,
19
- };
20
-
21
- /*
22
- * A class for calculating message digests using the SHA-1 Secure Hash
23
- * Algorithm by NIST (the US' National Institute of Standards and
24
- * Technology), described in FIPS PUB 180-1.
25
- */
26
- void
27
- Init_sha1()
28
- {
29
- VALUE mDigest, cDigest_Base, cDigest_SHA1;
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_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base);
37
-
38
- rb_ivar_set(cDigest_SHA1, rb_intern("metadata"),
39
- Data_Wrap_Struct(rb_cObject, 0, 0, &sha1));
40
- }
@@ -1,73 +0,0 @@
1
- #--
2
- # sha2.rb - defines Digest::SHA2 class which wraps up the SHA256,
3
- # SHA384, and SHA512 classes.
4
- #++
5
- # Copyright (c) 2006 Akinori MUSHA <knu@iDaemons.org>
6
- #
7
- # All rights reserved. You can redistribute and/or modify it under the same
8
- # terms as Ruby.
9
- #
10
- # $Id: sha2.rb 11708 2007-02-12 23:01:19Z shyouhei $
11
-
12
- require 'digest'
13
-
14
- module Digest
15
- #
16
- # A meta digest provider class for SHA256, SHA384 and SHA512.
17
- #
18
- class SHA2 < Digest::Class
19
- # call-seq:
20
- # Digest::SHA2.new(bitlen = 256) -> digest_obj
21
- #
22
- # Creates a new SHA2 hash object with a given bit length.
23
- def initialize(bitlen = 256)
24
- case bitlen
25
- when 256
26
- @sha2 = Digest::SHA256.new
27
- when 384
28
- @sha2 = Digest::SHA384.new
29
- when 512
30
- @sha2 = Digest::SHA512.new
31
- else
32
- raise ArgumentError, "unsupported bit length: %s" % bitlen.inspect
33
- end
34
- @bitlen = bitlen
35
- end
36
-
37
- # :nodoc:
38
- def reset
39
- @sha2.reset
40
- self
41
- end
42
-
43
- # :nodoc:
44
- def update(str)
45
- @sha2.update(str)
46
- self
47
- end
48
- alias << update
49
-
50
- def finish
51
- @sha2.digest!
52
- end
53
- private :finish
54
-
55
- def block_length
56
- @sha2.block_length
57
- end
58
-
59
- def digest_length
60
- @sha2.digest_length
61
- end
62
-
63
- # :nodoc:
64
- def initialize_copy(other)
65
- @sha2 = other.instance_eval { @sha2.clone }
66
- end
67
-
68
- # :nodoc:
69
- def inspect
70
- "#<%s:%d %s>" % [self.class.name, @bitlen, hexdigest]
71
- end
72
- end
73
- end