diff options
author | PMunch <peterme@peterme.net> | 2020-04-27 21:01:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-27 21:01:56 +0200 |
commit | 2f1aad02642576d13df018c9e5869c8de7e3a539 (patch) | |
tree | 67cc4877d9938c05a73a6291e61d4d7d3e2b0f94 | |
parent | d38853c504d89d6e361f064a17391afaf42d74b8 (diff) | |
download | Nim-2f1aad02642576d13df018c9e5869c8de7e3a539.tar.gz |
Add RSA key reading and encrypt/decrypt to openssl (#14137)
This adds the procedures to read RSA keys and encrypt/decrypt messages with both public and private keys.
-rw-r--r-- | lib/wrappers/openssl.nim | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/wrappers/openssl.nim b/lib/wrappers/openssl.nim index 32e3b9e3a..e76aabc8f 100644 --- a/lib/wrappers/openssl.nim +++ b/lib/wrappers/openssl.nim @@ -116,6 +116,15 @@ type pem_password_cb* = proc(buf: cstring, size, rwflag: cint, userdata: pointer): cint {.cdecl.} + PaddingType* = enum + RSA_PKCS1_PADDING = 1.cint, + RSA_SSLV23_PADDING = 2.cint, + RSA_NO_PADDING = 3.cint, + RSA_PKCS1_OAEP_PADDING = 4.cint, + RSA_X931_PADDING = 5.cint, + RSA_PKCS1_PSS_PADDING = 6.cint + + const SSL_SENT_SHUTDOWN* = 1 SSL_RECEIVED_SHUTDOWN* = 2 @@ -589,6 +598,20 @@ proc PEM_read_bio_RSA_PUBKEY*(bp: BIO, x: ptr PRSA, pw: pem_password_cb, u: poin proc RSA_verify*(kind: cint, origMsg: pointer, origMsgLen: cuint, signature: pointer, signatureLen: cuint, rsa: PRSA): cint {.cdecl, dynlib: DLLSSLName, importc.} +proc PEM_read_RSAPrivateKey*(fp: pointer; x: ptr PRSA; cb: pem_password_cb, u: pointer): PRSA {.cdecl, + dynlib: DLLSSLName, importc.} +proc PEM_read_RSAPublicKey*(fp: pointer; x: ptr PRSA; cb: pem_password_cb, u: pointer): PRSA {.cdecl, + dynlib: DLLSSLName, importc.} +proc RSA_private_encrypt*(flen: cint, fr: ptr cuchar, to: ptr cuchar, rsa: PRSA, padding: PaddingType): cint {.cdecl, + dynlib: DLLSSLName, importc.} +proc RSA_public_encrypt*(flen: cint, fr: ptr cuchar, to: ptr cuchar, rsa: PRSA, padding: PaddingType): cint {.cdecl, + dynlib: DLLSSLName, importc.} +proc RSA_private_decrypt*(flen: cint, fr: ptr cuchar, to: ptr cuchar, rsa: PRSA, padding: PaddingType): cint {.cdecl, + dynlib: DLLSSLName, importc.} +proc RSA_public_decrypt*(flen: cint, fr: ptr cuchar, to: ptr cuchar, rsa: PRSA, padding: PaddingType): cint {.cdecl, + dynlib: DLLSSLName, importc.} +proc RSA_free*(rsa: PRSA) {.cdecl, dynlib: DLLSSLName, importc.} +proc RSA_size*(rsa: PRSA): cint {.cdecl, dynlib: DLLSSLName, importc.} # sha types proc EVP_md_null*(): EVP_MD {.cdecl, importc.} |