nim-bearssl/bearssl/abi/brssl.nim
Jacek Sieka c4aec8b664
split decls into separate modules in bearssl/abi (#27)
* split `decls.nim` into smaller modules - allows using parts of the ABI
without compiling all of `bearssl`
* deprecate functions with `Br` prefix - there are duplicate exports
both with and without `Br` for the same function and we use both in
consumers like `chronos` and `libp2p`
* fix several cases of incorrectly mapped types
* use `var` for certain arguments that can't be `nil`
* add script to regenerate ABI with `c2nim`
* consistently use `uint` for length (`int` was sometimes used)

The Split likely needs more cleanup work - this is a first cut to get
the idea in place.

In the new layout, `bearssl/abi/` contains "raw" nim mappings while
hand-written helpers are in `bearssl/`.
2022-06-14 19:33:00 +02:00

25 lines
733 B
Nim

import
"."/[csources, bearssl_x509]
{.pragma: importcFunc, cdecl, gcsafe, noSideEffect, raises: [].}
{.pragma: headerFunc, importcFunc, header: "brssl.h".}
{.used.}
const
bearToolsPath = bearPath / "tools"
{.compile: bearToolsPath / "vector.c".}
{.compile: bearToolsPath / "xmem.c".}
{.compile: bearToolsPath / "names.c".}
{.compile: bearToolsPath / "certs.c".}
{.compile: bearToolsPath / "files.c".}
type
X509NoAnchorContext* {.importc: "x509_noanchor_context",
header: "brssl.h", bycopy.} = object
vtable* {.importc: "vtable".}: ptr X509Class
proc initNoAnchor*(xwc: var X509NoAnchorContext, inner: ptr ptr X509Class) {.
importcFunc, importc: "x509_noanchor_init", header: "brssl.h".}