Ruby
3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
|
Go to the documentation of this file.
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!"); \
28 ossl_digest_free(
void *ctx)
30 EVP_MD_CTX_destroy(ctx);
48 ASN1_OBJECT *oid =
NULL;
53 md = EVP_get_digestbyname(
name);
55 oid = OBJ_txt2obj(
name, 0);
56 md = EVP_get_digestbyobj(oid);
57 ASN1_OBJECT_free(oid);
66 md = EVP_MD_CTX_md(ctx);
84 if (!EVP_DigestInit_ex(ctx, md,
NULL))
94 ossl_digest_alloc(
VALUE klass)
136 if (!EVP_DigestInit_ex(ctx, md,
NULL))
146 EVP_MD_CTX *ctx1, *ctx2;
149 if (
self == other)
return self;
159 if (!EVP_MD_CTX_copy(ctx1, ctx2)) {
174 ossl_digest_reset(
VALUE self)
179 if (EVP_DigestInit_ex(ctx, EVP_MD_CTX_md(ctx),
NULL) != 1) {
229 out_len = EVP_MD_CTX_size(ctx);
256 ossl_digest_name(
VALUE self)
262 return rb_str_new2(EVP_MD_name(EVP_MD_CTX_md(ctx)));
278 ossl_digest_size(
VALUE self)
284 return INT2NUM(EVP_MD_CTX_size(ctx));
301 ossl_digest_block_length(
VALUE self)
307 return INT2NUM(EVP_MD_CTX_block_size(ctx));
#define TypedData_Wrap_Struct(klass, data_type, sval)
void Init_ossl_digest(void)
VALUE rb_str_resize(VALUE, long)
VALUE rb_define_module(const char *name)
#define RSTRING_LEN(string)
void rb_define_alias(VALUE klass, const char *name1, const char *name2)
Defines an alias of a method.
#define rb_str_new(str, len)
@ RUBY_TYPED_FREE_IMMEDIATELY
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE ossl_digest_update(VALUE, VALUE)
void ossl_raise(VALUE exc, const char *fmt,...)
#define rb_define_private_method(klass, mid, func, arity)
Defines klass#mid and makes it private.
#define RTYPEDDATA_DATA(v)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
#define GetDigest(obj, ctx)
#define RSTRING_PTR(string)
char str[HTML_ESCAPE_MAX_LEN+1]
VALUE rb_require(const char *)
#define TypedData_Get_Struct(obj, type, data_type, sval)
VALUE rb_path2class(const char *)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
#define StringValueCStr(v)
#define rb_define_method(klass, mid, func, arity)
Defines klass#mid.
VALUE ossl_digest_new(const EVP_MD *md)
const EVP_MD * ossl_evp_get_digestbyname(VALUE obj)
VALUE type(ANYARGS)
ANYARGS-ed function type.