Skip to content
/ alg Public

Package alg provides access to Linux AF_ALG sockets for communication with the Linux kernel crypto API. MIT Licensed.

License

Notifications You must be signed in to change notification settings

mdlayher/alg

Repository files navigation

alg Build Status GoDoc Go Report Card

Package alg provides access to Linux AF_ALG sockets for communication with the Linux kernel crypto API. MIT Licensed.

This package should be considered experimental, and should almost certainly not be used in place of Go's built-in cryptographic cipher and hash packages.

The benefit of AF_ALG sockets is that they enable access to the Linux kernel's cryptography API, and may be able to use hardware acceleration to perform certain transformations. On systems with dedicated cryptography processing hardware (or systems without assembly implementations of certain transformations), using this package may result in a performance boost.

If this package does end up being useful for you, please do reach out! I'd love to hear what you're doing with it.

Benchmarking

To benchmark AF_ALG transformations vs. the Go standard library equivalents on a given system, run the following commands:

$ go test -c
$ ./alg.test -bench.std -test.bench . | tee std.txt
$ ./alg.test -bench.alg -test.bench . | tee alg.txt
$ benchcmp std.txt alg.txt

The benchcmp utility can be installed using:

$ go get golang.org/x/tools/cmd/benchcmp

About

Package alg provides access to Linux AF_ALG sockets for communication with the Linux kernel crypto API. MIT Licensed.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages