00001
00002
00003
00004 #include <ruby/ruby.h>
00005 #include "../digest.h"
00006 #if defined(HAVE_OPENSSL_SHA_H)
00007 #include "sha1ossl.h"
00008 #else
00009 #include "sha1.h"
00010 #endif
00011
00012 static const rb_digest_metadata_t sha1 = {
00013 RUBY_DIGEST_API_VERSION,
00014 SHA1_DIGEST_LENGTH,
00015 SHA1_BLOCK_LENGTH,
00016 sizeof(SHA1_CTX),
00017 (rb_digest_hash_init_func_t)SHA1_Init,
00018 (rb_digest_hash_update_func_t)SHA1_Update,
00019 (rb_digest_hash_finish_func_t)SHA1_Finish,
00020 };
00021
00022
00023
00024
00025
00026
00027 void
00028 Init_sha1()
00029 {
00030 VALUE mDigest, cDigest_Base, cDigest_SHA1;
00031
00032 rb_require("digest");
00033
00034 #if 0
00035 mDigest = rb_define_module("Digest");
00036 #endif
00037 mDigest = rb_path2class("Digest");
00038 cDigest_Base = rb_path2class("Digest::Base");
00039
00040 cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base);
00041
00042 rb_ivar_set(cDigest_SHA1, rb_intern("metadata"),
00043 Data_Wrap_Struct(rb_cObject, 0, 0, (void *)&sha1));
00044 }
00045