1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-13 04:42:23 +03:00

wrapper: Add more evp functions.

This commit is contained in:
Andreas Schneider
2013-10-18 23:21:52 +02:00
parent 2e81dd61dd
commit 15e31eb464
3 changed files with 30 additions and 0 deletions

View File

@@ -38,6 +38,9 @@ typedef SHA_CTX* SHACTX;
typedef SHA256_CTX* SHA256CTX; typedef SHA256_CTX* SHA256CTX;
typedef MD5_CTX* MD5CTX; typedef MD5_CTX* MD5CTX;
typedef HMAC_CTX* HMACCTX; typedef HMAC_CTX* HMACCTX;
#ifdef HAVE_ECC
typedef EVP_MD_CTX *EVPCTX;
#endif
#define SHA_DIGEST_LEN SHA_DIGEST_LENGTH #define SHA_DIGEST_LEN SHA_DIGEST_LENGTH
#ifdef MD5_DIGEST_LEN #ifdef MD5_DIGEST_LEN

View File

@@ -53,6 +53,9 @@ void sha1(unsigned char *digest,int len,unsigned char *hash);
void sha256(unsigned char *digest, int len, unsigned char *hash); void sha256(unsigned char *digest, int len, unsigned char *hash);
void evp(int nid, unsigned char *digest, int len, unsigned char *hash, unsigned int *hlen); void evp(int nid, unsigned char *digest, int len, unsigned char *hash, unsigned int *hlen);
EVPCTX evp_init(int nid);
void evp_update(EVPCTX ctx, const void *data, unsigned long len);
void evp_final(EVPCTX ctx, unsigned char *md, unsigned int *mdlen);
ssh_mac_ctx ssh_mac_ctx_init(enum ssh_mac_e type); ssh_mac_ctx ssh_mac_ctx_init(enum ssh_mac_e type);
void ssh_mac_update(ssh_mac_ctx ctx, const void *data, unsigned long len); void ssh_mac_update(ssh_mac_ctx ctx, const void *data, unsigned long len);

View File

@@ -123,6 +123,30 @@ void evp(int nid, unsigned char *digest, int len, unsigned char *hash, unsigned
EVP_DigestUpdate(&md, digest, len); EVP_DigestUpdate(&md, digest, len);
EVP_DigestFinal(&md, hash, hlen); 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 #endif
SHA256CTX sha256_init(void){ SHA256CTX sha256_init(void){