aboutsummaryrefslogtreecommitdiff
path: root/src/libcrypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcrypto.c')
-rw-r--r--src/libcrypto.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libcrypto.c b/src/libcrypto.c
index 44b0fb36..bb1d96ad 100644
--- a/src/libcrypto.c
+++ b/src/libcrypto.c
@@ -123,6 +123,30 @@ void evp(int nid, unsigned char *digest, int len, unsigned char *hash, unsigned
EVP_DigestUpdate(&md, digest, len);
EVP_DigestFinal(&md, hash, hlen);
}
+
+EVPCTX evp_init(int nid)
+{
+ const EVP_MD *evp_md = nid_to_evpmd(nid);
+
+ EVPCTX ctx = malloc(sizeof(EVP_MD_CTX));
+ if (ctx == NULL) {
+ return NULL;
+ }
+
+ EVP_DigestInit(ctx, evp_md);
+
+ return ctx;
+}
+
+void evp_update(EVPCTX ctx, const void *data, unsigned long len)
+{
+ EVP_DigestUpdate(ctx, data, len);
+}
+
+void evp_final(EVPCTX ctx, unsigned char *md, unsigned int *mdlen)
+{
+ EVP_DigestFinal(ctx, md, mdlen);
+}
#endif
SHA256CTX sha256_init(void){