Sha256: ed2764d7dc17d45f207f80a2b2d4340b1a5c94d2014f1ee9d9c4b15d04928142
Contents?: true
Size: 1.22 KB
Versions: 2
Compression:
Stored size: 1.22 KB
Contents
#include <xmldsign_ext.h> #ifndef O_BINARY #define O_BINARY 0 #endif char* substring(const char* str, size_t begin, size_t len) { if (str == 0 || strlen(str) == 0 || strlen(str) < begin || strlen(str) < (begin+len)) return 0; return strndup(str + begin, len); } int digest(char * data, char * sum) { gost_subst_block *b= &GostR3411_94_CryptoProParamSet; gost_hash_ctx ctx; init_gost_hash_ctx(&ctx, b); if (hash_data(&ctx, data, sum)) { return 1; } else return 0; } int hash_data(gost_hash_ctx *ctx, const char *data, char *sum) { int i; size_t bytes = strlen(data); start_hash(ctx); if(bytes > 0) hash_block(ctx, data, bytes); finish_hash(ctx, sum); return 1; } static VALUE rb_gost_digest(VALUE self) { char sum[32]; VALUE data; data = rb_iv_get(self, "@data"); if( digest(StringValuePtr(data), sum) ) return rb_str_new2( substring(sum, 0, 32) ); else return Qfalse; } /* Ruby Extension initializer */ void Init_xmldsign_ext() { mXmldsign = rb_define_module("Xmldsign"); mDigests = rb_define_module_under(mXmldsign, "Digests"); cGost = rb_define_class_under(mDigests, "Gost", rb_cObject); rb_define_method(cGost, "binary", rb_gost_digest, 0); }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
xmldsign-0.1.1 | ext/xmldsign/xmldsign_ext.c |
xmldsign-0.1.0 | ext/xmldsign/xmldsign_ext.c |