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!"); \
28ossl_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);
78 ret = ossl_digest_alloc(
cDigest);
84 if (!EVP_DigestInit_ex(ctx, md,
NULL))
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)) {
174ossl_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);
256ossl_digest_name(
VALUE self)
262 return rb_str_new2(EVP_MD_name(EVP_MD_CTX_md(ctx)));
278ossl_digest_size(
VALUE self)
284 return INT2NUM(EVP_MD_CTX_size(ctx));
301ossl_digest_block_length(
VALUE self)
307 return INT2NUM(EVP_MD_CTX_block_size(ctx));
char str[HTML_ESCAPE_MAX_LEN+1]
VALUE rb_define_class_under(VALUE, const char *, VALUE)
Defines a class under the namespace of outer.
VALUE rb_define_module(const char *)
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
VALUE type(ANYARGS)
ANYARGS-ed function type.
void ossl_raise(VALUE exc, const char *fmt,...)
#define GetDigest(obj, ctx)
const EVP_MD * ossl_evp_get_digestbyname(VALUE obj)
VALUE ossl_digest_update(VALUE, VALUE)
VALUE ossl_digest_new(const EVP_MD *md)
void Init_ossl_digest(void)