boringssl

BoringSSL

This is BoringSSL, packaged for Zig.

Installation

First, update your build.zig.zon:

# Initialize a `zig build` project if you haven't already
zig init
zig fetch --save git+https://github.com/lukaskastern/boringssl.git

You can then import boringssl in your build.zig with:

const boringssl_dependency = b.dependency("boringssl", .{
    .target = target,
    .optimize = optimize,
});
your_exe.linkLibrary(boringssl_dependency.artifact("bcm"));
your_exe.linkLibrary(boringssl_dependency.artifact("ssl"));
your_exe.linkLibrary(boringssl_dependency.artifact("crypto"));

And use the library like this:

const ssl = @cImport({
    @cInclude("openssl/ssl.h");
});

const ctx = ssl.EVP_CIPHER_CTX_new();
...
...

Notes

Windows support:

At the moment only x86_64-windows-gnu is functional. MSVC doesn’t work!

GNU doesn’t seem an official target by boringssl for windows which is why we need the patch.

Zig Version

The target zig version is 0.16.0

Updating upstream boringssl

We build boringssl by utilizing the sources.json it provides.

This file is used to generate the build graph. Sadly I haven’t found a way to access it directly from the dependency.

Meaning it has to be manually copied into sources.json in this repository.