12 #define GetDigest(obj, ctx) do { \ 13 TypedData_Get_Struct((obj), EVP_MD_CTX, &ossl_digest_type, (ctx)); \ 15 ossl_raise(rb_eRuntimeError, "Digest CTX wasn't initialized!"); \ 18 #define SafeGetDigest(obj, ctx) do { \ 19 OSSL_Check_Kind((obj), cDigest); \ 20 GetDigest((obj), (ctx)); \ 34 EVP_MD_CTX_destroy(ctx);
52 ASN1_OBJECT *oid =
NULL;
57 md = EVP_get_digestbyname(name);
59 oid = OBJ_txt2obj(name, 0);
60 md = EVP_get_digestbyobj(oid);
61 ASN1_OBJECT_free(oid);
70 md = EVP_MD_CTX_md(ctx);
88 if (!EVP_DigestInit_ex(ctx, md,
NULL))
140 if (!EVP_DigestInit_ex(ctx, md,
NULL))
150 EVP_MD_CTX *ctx1, *ctx2;
153 if (
self == other)
return self;
163 if (!EVP_MD_CTX_copy(ctx1, ctx2)) {
183 if (EVP_DigestInit_ex(ctx, EVP_MD_CTX_md(ctx),
NULL) != 1) {
233 out_len = EVP_MD_CTX_size(ctx);
266 return rb_str_new2(EVP_MD_name(EVP_MD_CTX_md(ctx)));
288 return INT2NUM(EVP_MD_CTX_size(ctx));
311 return INT2NUM(EVP_MD_CTX_block_size(ctx));
#define RUBY_TYPED_FREE_IMMEDIATELY
#define TypedData_Wrap_Struct(klass, data_type, sval)
#define TypedData_Get_Struct(obj, type, data_type, sval)
void rb_define_private_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static VALUE ossl_digest_block_length(VALUE self)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_path2class(const char *)
#define RB_TYPE_P(obj, type)
#define rb_define_copy_func(klass, func)
VALUE rb_require(const char *)
static VALUE ossl_digest_name(VALUE self)
VALUE ossl_digest_new(const EVP_MD *md)
const EVP_MD * GetDigestPtr(VALUE obj)
VALUE rb_str_resize(VALUE, long)
void Init_ossl_digest(void)
void rb_define_alias(VALUE klass, const char *name1, const char *name2)
Defines an alias of a method.
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
#define StringValueCStr(v)
static VALUE ossl_digest_initialize(int argc, VALUE *argv, VALUE self)
static VALUE ossl_digest_copy(VALUE self, VALUE other)
static VALUE ossl_digest_alloc(VALUE klass)
static void ossl_digest_free(void *ctx)
#define SafeGetDigest(obj, ctx)
void ossl_raise(VALUE exc, const char *fmt,...)
static VALUE ossl_digest_finish(int argc, VALUE *argv, VALUE self)
#define RTYPEDDATA_DATA(v)
static VALUE ossl_digest_size(VALUE self)
#define rb_check_frozen(obj)
#define GetDigest(obj, ctx)
VALUE rb_define_module(const char *name)
VALUE ossl_digest_update(VALUE, VALUE)
static const rb_data_type_t ossl_digest_type
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static VALUE ossl_digest_reset(VALUE self)
VALUE rb_str_new(const char *, long)