13 #define GetDigest(obj, ctx) do { \
14 Data_Get_Struct((obj), EVP_MD_CTX, (ctx)); \
16 ossl_raise(rb_eRuntimeError, "Digest CTX wasn't initialized!"); \
19 #define SafeGetDigest(obj, ctx) do { \
20 OSSL_Check_Kind((obj), cDigest); \
21 GetDigest((obj), (ctx)); \
39 ASN1_OBJECT *oid =
NULL;
44 md = EVP_get_digestbyname(name);
46 oid = OBJ_txt2obj(name, 0);
47 md = EVP_get_digestbyobj(oid);
48 ASN1_OBJECT_free(oid);
57 md = EVP_MD_CTX_md(ctx);
138 EVP_MD_CTX *ctx1, *ctx2;
141 if (
self == other)
return self;
146 if (!EVP_MD_CTX_copy(ctx1, ctx2)) {
267 return INT2NUM(EVP_MD_CTX_size(ctx));
290 return INT2NUM(EVP_MD_CTX_block_size(ctx));
#define EVP_DigestFinal_ex(ctx, buf, len)
#define rb_check_frozen(obj)
void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx)
void rb_define_private_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static VALUE ossl_digest_block_length(VALUE self)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_require(const char *)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
VALUE rb_path2class(const char *)
#define rb_define_copy_func(klass, func)
return Data_Wrap_Struct(CLASS_OF(interp), 0, ip_free, slave)
static VALUE ossl_digest_name(VALUE self)
#define StringValueCStr(v)
VALUE ossl_digest_new(const EVP_MD *md)
const EVP_MD * GetDigestPtr(VALUE obj)
void rb_define_alias(VALUE klass, const char *name1, const char *name2)
Defines an alias of a method.
VALUE rb_str_resize(VALUE, long)
EVP_MD_CTX * EVP_MD_CTX_create(void)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
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)
#define SafeGetDigest(obj, ctx)
#define EVP_DigestInit_ex(ctx, md, engine)
void ossl_raise(VALUE exc, const char *fmt,...)
VALUE rb_str_new(const char *, long)
static VALUE ossl_digest_finish(int argc, VALUE *argv, VALUE self)
static VALUE ossl_digest_size(VALUE self)
#define GetDigest(obj, ctx)
VALUE rb_define_module(const char *name)
VALUE ossl_digest_update(VALUE, VALUE)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static VALUE ossl_digest_reset(VALUE self)