krypt-core 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/LICENSE +20 -0
  2. data/ext/krypt/core/Makefile +221 -0
  3. data/ext/krypt/core/binyo-error.h +40 -0
  4. data/ext/krypt/core/binyo-io-buffer.h +54 -0
  5. data/ext/krypt/core/binyo-io.h +131 -0
  6. data/ext/krypt/core/extconf.h +8 -0
  7. data/ext/krypt/core/extconf.rb +80 -0
  8. data/ext/krypt/core/krypt-core.c +110 -0
  9. data/ext/krypt/core/krypt-core.h +97 -0
  10. data/ext/krypt/core/krypt-core.o +0 -0
  11. data/ext/krypt/core/krypt-provider.h +86 -0
  12. data/ext/krypt/core/krypt_asn1-internal.c +681 -0
  13. data/ext/krypt/core/krypt_asn1-internal.h +117 -0
  14. data/ext/krypt/core/krypt_asn1-internal.o +0 -0
  15. data/ext/krypt/core/krypt_asn1.c +2109 -0
  16. data/ext/krypt/core/krypt_asn1.h +88 -0
  17. data/ext/krypt/core/krypt_asn1.o +0 -0
  18. data/ext/krypt/core/krypt_asn1_codec.c +973 -0
  19. data/ext/krypt/core/krypt_asn1_codec.o +0 -0
  20. data/ext/krypt/core/krypt_asn1_in_adapter.c +178 -0
  21. data/ext/krypt/core/krypt_asn1_in_adapter.o +0 -0
  22. data/ext/krypt/core/krypt_asn1_in_chunked.c +292 -0
  23. data/ext/krypt/core/krypt_asn1_in_chunked.o +0 -0
  24. data/ext/krypt/core/krypt_asn1_in_definite.c +156 -0
  25. data/ext/krypt/core/krypt_asn1_in_definite.o +0 -0
  26. data/ext/krypt/core/krypt_asn1_parser.c +592 -0
  27. data/ext/krypt/core/krypt_asn1_parser.o +0 -0
  28. data/ext/krypt/core/krypt_asn1_template-internal.h +185 -0
  29. data/ext/krypt/core/krypt_asn1_template.c +459 -0
  30. data/ext/krypt/core/krypt_asn1_template.h +56 -0
  31. data/ext/krypt/core/krypt_asn1_template.o +0 -0
  32. data/ext/krypt/core/krypt_asn1_template_encoder.c +76 -0
  33. data/ext/krypt/core/krypt_asn1_template_encoder.o +0 -0
  34. data/ext/krypt/core/krypt_asn1_template_parser.c +1176 -0
  35. data/ext/krypt/core/krypt_asn1_template_parser.o +0 -0
  36. data/ext/krypt/core/krypt_b64-internal.h +38 -0
  37. data/ext/krypt/core/krypt_b64.c +391 -0
  38. data/ext/krypt/core/krypt_b64.h +41 -0
  39. data/ext/krypt/core/krypt_b64.o +0 -0
  40. data/ext/krypt/core/krypt_digest.c +391 -0
  41. data/ext/krypt/core/krypt_digest.h +51 -0
  42. data/ext/krypt/core/krypt_digest.o +0 -0
  43. data/ext/krypt/core/krypt_error.c +221 -0
  44. data/ext/krypt/core/krypt_error.h +46 -0
  45. data/ext/krypt/core/krypt_error.o +0 -0
  46. data/ext/krypt/core/krypt_hex-internal.h +36 -0
  47. data/ext/krypt/core/krypt_hex.c +255 -0
  48. data/ext/krypt/core/krypt_hex.h +41 -0
  49. data/ext/krypt/core/krypt_hex.o +0 -0
  50. data/ext/krypt/core/krypt_io.c +65 -0
  51. data/ext/krypt/core/krypt_io.h +56 -0
  52. data/ext/krypt/core/krypt_io.o +0 -0
  53. data/ext/krypt/core/krypt_io_in_pem.c +397 -0
  54. data/ext/krypt/core/krypt_io_in_pem.o +0 -0
  55. data/ext/krypt/core/krypt_missing.c +238 -0
  56. data/ext/krypt/core/krypt_missing.h +62 -0
  57. data/ext/krypt/core/krypt_missing.o +0 -0
  58. data/ext/krypt/core/krypt_pem.c +171 -0
  59. data/ext/krypt/core/krypt_pem.o +0 -0
  60. data/ext/krypt/core/krypt_provider-internal.h +40 -0
  61. data/ext/krypt/core/krypt_provider.c +136 -0
  62. data/ext/krypt/core/krypt_provider.o +0 -0
  63. data/ext/krypt/core/kryptcore.so +0 -0
  64. data/ext/krypt/core/mkmf.log +130 -0
  65. data/lib/krypt-core/version.rb +3 -0
  66. data/lib/krypt-core.rb +35 -0
  67. data/lib/kryptcore.so +0 -0
  68. data/spec/README +2 -0
  69. data/test/README +2 -0
  70. data/test/res/certificate.cer +0 -0
  71. data/test/resources.rb +48 -0
  72. data/test/scratch.rb +17 -0
  73. metadata +150 -0
@@ -0,0 +1,97 @@
1
+ /*
2
+ * krypt-core API - C implementation
3
+ *
4
+ * Copyright (c) 2011-2013
5
+ * Hiroshi Nakamura <nahi@ruby-lang.org>
6
+ * Martin Bosslet <martin.bosslet@gmail.com>
7
+ * All rights reserved.
8
+ *
9
+ * Permission is hereby granted, free of charge, to any person obtaining
10
+ * a copy of this software and associated documentation files (the
11
+ * "Software"), to deal in the Software without restriction, including
12
+ * without limitation the rights to use, copy, modify, merge, publish,
13
+ * distribute, sublicense, and/or sell copies of the Software, and to
14
+ * permit persons to whom the Software is furnished to do so, subject to
15
+ * the following conditions:
16
+ *
17
+ * The above copyright notice and this permission notice shall be
18
+ * included in all copies or substantial portions of the Software.
19
+ *
20
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ */
28
+
29
+ #if !defined(_KRYPT_CORE_H_)
30
+ #define _KRYPT_CORE_H_
31
+
32
+ #include RUBY_EXTCONF_H
33
+
34
+ #if defined(__cplusplus)
35
+ extern "C" {
36
+ #endif
37
+
38
+ #define RSTRING_NOT_MODIFIED 1
39
+ #define RUBY_READONLY_STRING 1
40
+
41
+ #include <ruby.h>
42
+
43
+ #if defined(HAVE_RUBY_IO_H)
44
+ #include <ruby/io.h>
45
+ #endif
46
+
47
+ /* This is just a precaution to take remind us of thread safety
48
+ * issues in case there would be no GVL */
49
+ #ifndef InitVM
50
+ #define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();}
51
+ #endif
52
+
53
+ extern VALUE mKrypt;
54
+ extern VALUE eKryptError;
55
+
56
+ extern ID sKrypt_ID_TO_DER;
57
+ extern ID sKrypt_ID_TO_PEM;
58
+ extern ID sKrypt_ID_EACH;
59
+ extern ID sKrypt_ID_EQUALS;
60
+ extern ID sKrypt_ID_SORT_BANG;
61
+ extern ID sKrypt_ID_SORT;
62
+
63
+ /** krypt-provider interface */
64
+ #include "krypt-provider.h"
65
+ #include "krypt_provider-internal.h"
66
+
67
+ /** krypt-core headers **/
68
+ #include "krypt_error.h"
69
+ #include "krypt_missing.h"
70
+ #include "krypt_io.h"
71
+ #include "krypt_asn1.h"
72
+ #include "krypt_asn1_template.h"
73
+ #include "krypt_digest.h"
74
+
75
+ VALUE krypt_to_der_if_possible(VALUE obj);
76
+ VALUE krypt_to_der(VALUE obj);
77
+ VALUE krypt_to_pem_if_possible(VALUE obj);
78
+ VALUE krypt_to_pem(VALUE obj);
79
+
80
+ /* internal Base64 en-/decoder */
81
+ #include "krypt_b64-internal.h"
82
+
83
+ /* internal hex en-/decoder */
84
+ #include "krypt_hex-internal.h"
85
+
86
+ /* helper for integer encoding/decoding */
87
+ void krypt_compute_twos_complement(uint8_t *dest, uint8_t *src, size_t len);
88
+
89
+ void Init_kryptcore(void);
90
+
91
+ #if defined(__cplusplus)
92
+ }
93
+ #endif
94
+
95
+ #endif /* _KRYPT_CORE_H_ */
96
+
97
+
Binary file
@@ -0,0 +1,86 @@
1
+ /*
2
+ * krypt-core API - C implementation
3
+ *
4
+ * Copyright (c) 2011-2013
5
+ * Hiroshi Nakamura <nahi@ruby-lang.org>
6
+ * Martin Bosslet <martin.bosslet@gmail.com>
7
+ * All rights reserved.
8
+ *
9
+ * Permission is hereby granted, free of charge, to any person obtaining
10
+ * a copy of this software and associated documentation files (the
11
+ * "Software"), to deal in the Software without restriction, including
12
+ * without limitation the rights to use, copy, modify, merge, publish,
13
+ * distribute, sublicense, and/or sell copies of the Software, and to
14
+ * permit persons to whom the Software is furnished to do so, subject to
15
+ * the following conditions:
16
+ *
17
+ * The above copyright notice and this permission notice shall be
18
+ * included in all copies or substantial portions of the Software.
19
+ *
20
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ */
28
+
29
+ #ifndef _KRYPT_PROVIDER_H_
30
+ #define _KRYPT_PROVIDER_H_
31
+
32
+
33
+ #ifndef _RSTRING_NOT_MODIFIED
34
+ #define RSTRING_NOT_MODIFIED 1
35
+ #endif
36
+
37
+ #ifndef RUBY_READONLY_STRING
38
+ #define RUBY_READONLY_STRING 1
39
+ #endif
40
+
41
+ #include <ruby.h>
42
+
43
+ #ifndef KRYPT_OK
44
+ #define KRYPT_OK 1
45
+ #endif
46
+ #ifndef KRYPT_ERR
47
+ #define KRYPT_ERR -1
48
+ #endif
49
+
50
+ typedef struct krypt_provider_st krypt_provider;
51
+
52
+ /* Message digest */
53
+ typedef struct krypt_interface_md_st krypt_interface_md;
54
+
55
+ typedef struct krypt_md_st {
56
+ krypt_provider *provider;
57
+ krypt_interface_md *methods;
58
+ } krypt_md;
59
+
60
+ struct krypt_interface_md_st {
61
+ int (*md_reset)(krypt_md *md);
62
+ int (*md_update)(krypt_md *md, const void *data, size_t len);
63
+ int (*md_final)(krypt_md *md, uint8_t ** digest, size_t *len);
64
+ int (*md_digest)(krypt_md *md, const uint8_t *data, size_t len, uint8_t **digest, size_t *digest_len);
65
+ int (*md_digest_length)(krypt_md *md, size_t *len);
66
+ int (*md_block_length)(krypt_md *md, size_t *block_len);
67
+ int (*md_name)(krypt_md *md, const char **name);
68
+ void (*mark)(krypt_md *md);
69
+ void (*free)(krypt_md *md);
70
+ };
71
+
72
+ /* Provider */
73
+ struct krypt_provider_st {
74
+ const char *name;
75
+ krypt_md *(*md_new_oid)(krypt_provider *provider, const char *oid);
76
+ krypt_md *(*md_new_name)(krypt_provider *provider, const char *name);
77
+ };
78
+
79
+ /* Can be called from within a provider implementation to indicate errors */
80
+ void krypt_error_add(const char * format, ...);
81
+
82
+ /* May be used to register a singleton provider upon initialization */
83
+ void krypt_provider_register(krypt_provider *provider);
84
+
85
+ #endif /* _KRYPT_PROVIDER_H_ */
86
+