47 lines
1.1 KiB
Nim
47 lines
1.1 KiB
Nim
import os
|
|
import strutils
|
|
|
|
import nimterop/[build, cimport]
|
|
|
|
setDefines(@["cryptoStd"])
|
|
getHeader("openssl/crypto.h")
|
|
|
|
const
|
|
basePath = cryptoPath.parentDir
|
|
FLAGS {.strdefine.} = ""
|
|
|
|
static:
|
|
cSkipSymbol(@["ERR_load_crypto_strings", "OpenSSLDie"])
|
|
|
|
cPlugin:
|
|
import strutils
|
|
|
|
proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
|
|
sym.name = sym.name.strip(chars = {'_'}).replace("__", "_")
|
|
|
|
if sym.name in [
|
|
"AES_ENCRYPT", "AES_DECRYPT",
|
|
"BIO_CTRL_PENDING", "BIO_CTRL_WPENDING",
|
|
"BN_F_BNRAND", "BN_F_BNRAND_RANGE",
|
|
"CRYPTO_LOCK", "CRYPTO_NUM_LOCKS", "CRYPTO_THREADID",
|
|
"EVP_CIPHER",
|
|
"OPENSSL_VERSION",
|
|
"PKCS7_ENCRYPT", "PKCS7_STREAM",
|
|
"SSLEAY_VERSION",
|
|
"SSL_TXT_ADH", "SSL_TXT_AECDH", "SSL_TXT_kECDHE"
|
|
]:
|
|
sym.name = "C_" & sym.name
|
|
|
|
cOverride:
|
|
proc OPENSSL_die*(assertion: cstring; file: cstring; line: cint) {.importc.}
|
|
|
|
cPassL(cryptoLPath)
|
|
|
|
# Skip comments for https://github.com/tree-sitter/tree-sitter-c/issues/44
|
|
cImport(@[
|
|
basePath / "rsa.h",
|
|
basePath / "err.h",
|
|
], recurse = true, flags = "-s -c " & FLAGS)
|
|
|
|
OpensslInit()
|
|
echo $OPENSSL_VERSION_TEXT
|