@@ -101,6 +101,10 @@ type
101101 PASN1_UTCTIME * = SslPtr
102102 PASN1_cInt* = SslPtr
103103 PPasswdCb * = SslPtr
104+ EVP_MD * = SslPtr
105+ EVP_MD_CTX * = SslPtr
106+ EVP_PKEY_CTX * = SslPtr
107+ ENGINE * = SslPtr
104108 PFunction * = proc () {.cdecl .}
105109 DES_cblock* = array [0 .. 7 , int8 ]
106110 PDES_cblock* = ptr DES_cblock
@@ -535,6 +539,45 @@ proc PEM_read_bio_RSA_PUBKEY*(bp: BIO, x: ptr PRSA, pw: pem_password_cb, u: poin
535539proc RSA_verify * (kind: cint , origMsg: pointer , origMsgLen: cuint , signature: pointer ,
536540 signatureLen: cuint , rsa: PRSA ): cint {.cdecl , dynlib : DLLSSLName , importc .}
537541
542+ # sha types
543+ proc EVP_md_null * (): EVP_MD {.cdecl , importc .}
544+ proc EVP_md2 * (): EVP_MD {.cdecl , importc .}
545+ proc EVP_md4 * (): EVP_MD {.cdecl , importc .}
546+ proc EVP_md5 * (): EVP_MD {.cdecl , importc .}
547+ proc EVP_sha * (): EVP_MD {.cdecl , importc .}
548+ proc EVP_sha1 * (): EVP_MD {.cdecl , importc .}
549+ proc EVP_dss * (): EVP_MD {.cdecl , importc .}
550+ proc EVP_dss1 * (): EVP_MD {.cdecl , importc .}
551+ proc EVP_ecdsa * (): EVP_MD {.cdecl , importc .}
552+ proc EVP_sha224 * (): EVP_MD {.cdecl , importc .}
553+ proc EVP_sha256 * (): EVP_MD {.cdecl , importc .}
554+ proc EVP_sha384 * (): EVP_MD {.cdecl , importc .}
555+ proc EVP_sha512 * (): EVP_MD {.cdecl , importc .}
556+ proc EVP_mdc2 * (): EVP_MD {.cdecl , importc .}
557+ proc EVP_ripemd160 * (): EVP_MD {.cdecl , importc .}
558+ proc EVP_whirlpool * (): EVP_MD {.cdecl , importc .}
559+
560+ # hmac functions
561+ proc HMAC * (evp_md: EVP_MD ; key: pointer ; key_len: cint ; d: cstring ; n: csize_t ; md: cstring ; md_len: ptr cuint ): cstring {.cdecl , importc .}
562+
563+ # RSA key functions
564+ proc PEM_read_bio_PrivateKey * (bp: BIO , x: ptr EVP_PKEY , cb: pointer , u: pointer ): EVP_PKEY {.cdecl , importc .}
565+ proc EVP_PKEY_free * (p: EVP_PKEY ) {.cdecl , importc .}
566+ proc EVP_DigestSignInit * (ctx: EVP_MD_CTX , pctx: ptr EVP_PKEY_CTX , typ: EVP_MD , e: ENGINE , pkey: EVP_PKEY ): cint {.cdecl , importc .}
567+ proc EVP_DigestUpdate * (ctx: EVP_MD_CTX , data: pointer , len: cuint ): cint {.cdecl , importc .}
568+ proc EVP_DigestSignFinal * (ctx: EVP_MD_CTX , data: pointer , len: ptr csize_t ): cint {.cdecl , importc .}
569+ proc EVP_PKEY_CTX_new * (pkey: EVP_PKEY , e: ENGINE ): EVP_PKEY_CTX {.cdecl , importc .}
570+ proc EVP_PKEY_CTX_free * (pkeyCtx: EVP_PKEY_CTX ) {.cdecl , importc .}
571+ proc EVP_PKEY_sign_init * (c: EVP_PKEY_CTX ): cint {.cdecl , importc .}
572+
573+ when defined (macosx) or defined (windows):
574+ proc EVP_MD_CTX_create * (): EVP_MD_CTX {.cdecl , importc .}
575+ proc EVP_MD_CTX_destroy * (ctx: EVP_MD_CTX ) {.cdecl , importc .}
576+ else :
577+ # some times you will need this instead:
578+ proc EVP_MD_CTX_create * (): EVP_MD_CTX {.cdecl , importc : " EVP_MD_CTX_new" .}
579+ proc EVP_MD_CTX_destroy * (ctx: EVP_MD_CTX ) {.cdecl , importc : " EVP_MD_CTX_free" .}
580+
538581# <openssl/md5.h>
539582type
540583 MD5_LONG * = cuint
0 commit comments