@@ -101,6 +101,10 @@ type
101
101
PASN1_UTCTIME* = SslPtr
102
102
PASN1_cInt* = SslPtr
103
103
PPasswdCb* = SslPtr
104
+ EVP_MD* = SslPtr
105
+ EVP_MD_CTX* = SslPtr
106
+ EVP_PKEY_CTX* = SslPtr
107
+ ENGINE* = SslPtr
104
108
PFunction* = proc () {.cdecl.}
105
109
DES_cblock* = array [0 .. 7 , int8 ]
106
110
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
535
539
proc RSA_verify*(kind: cint , origMsg: pointer , origMsgLen: cuint , signature: pointer ,
536
540
signatureLen: cuint , rsa: PRSA): cint {.cdecl, dynlib: DLLSSLName, importc.}
537
541
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
+
538
581
# <openssl/md5.h>
539
582
type
540
583
MD5_LONG* = cuint
0 commit comments