Blame README.md

Packit 56e23f
![Enhanced Seccomp Helper Library](https://github.com/seccomp/libseccomp-artwork/blob/master/logo/libseccomp-color_text.png)
Packit 56e23f
===============================================================================
Packit 56e23f
https://github.com/seccomp/libseccomp
Packit 56e23f
Packit 56e23f
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/608/badge)](https://bestpractices.coreinfrastructure.org/projects/608)
Packit 56e23f
[![Build Status](https://img.shields.io/travis/seccomp/libseccomp/master.svg)](https://travis-ci.org/seccomp/libseccomp)
Packit 56e23f
[![Coverage Status](https://img.shields.io/coveralls/github/seccomp/libseccomp/master.svg)](https://coveralls.io/github/seccomp/libseccomp?branch=master)
Packit 56e23f
Packit 56e23f
The libseccomp library provides an easy to use, platform independent, interface
Packit 56e23f
to the Linux Kernel's syscall filtering mechanism.  The libseccomp API is
Packit 56e23f
designed to abstract away the underlying BPF based syscall filter language and
Packit 56e23f
present a more conventional function-call based filtering interface that should
Packit 56e23f
be familiar to, and easily adopted by, application developers.
Packit 56e23f
Packit 56e23f
## Online Resources
Packit 56e23f
Packit 56e23f
The library source repository currently lives on GitHub at the following URL:
Packit 56e23f
Packit 56e23f
* https://github.com/seccomp/libseccomp
Packit 56e23f
Packit 56e23f
The Go language bindings repository currently lives on GitHub at the following
Packit 56e23f
URL:
Packit 56e23f
Packit 56e23f
* https://github.com/seccomp/libseccomp-golang
Packit 56e23f
Packit 56e23f
The project mailing list is currently hosted on Google Groups at the URL below,
Packit 56e23f
please note that a Google account is not required to subscribe to the mailing
Packit 56e23f
list.
Packit 56e23f
Packit 56e23f
* https://groups.google.com/forum/#!forum/libseccomp
Packit 56e23f
* https://groups.google.com/forum/#!forum/libseccomp/join
Packit 56e23f
Packit 56e23f
## Supported Architectures
Packit 56e23f
Packit 56e23f
The libseccomp library currently supports the architectures listed below:
Packit 56e23f
Packit 56e23f
* 32-bit x86 (x86)
Packit 56e23f
* 64-bit x86 (x86_64)
Packit 56e23f
* 64-bit x86 x32 ABI (x32)
Packit 56e23f
* 32-bit ARM EABI (arm)
Packit 56e23f
* 64-bit ARM (aarch64)
Packit 56e23f
* 32-bit MIPS (mips)
Packit 56e23f
* 32-bit MIPS little endian (mipsel)
Packit 56e23f
* 64-bit MIPS (mips64)
Packit 56e23f
* 64-bit MIPS little endian (mipsel64)
Packit 56e23f
* 64-bit MIPS n32 ABI (mips64n32)
Packit 56e23f
* 64-bit MIPS n32 ABI little endian (mipsel64n32)
Packit 56e23f
* 32-bit PA-RISC (parisc)
Packit 56e23f
* 64-bit PA-RISC (parisc64)
Packit 56e23f
* 32-bit PowerPC (ppc)
Packit 56e23f
* 64-bit PowerPC (ppc64)
Packit 56e23f
* 64-bit PowerPC little endian (ppc64le)
Packit 56e23f
* 32-bit s390 (s390)
Packit 56e23f
* 64-bit s390x (s390x)
Packit 56e23f
Packit 56e23f
## Documentation
Packit 56e23f
Packit 56e23f
The "doc/" directory contains all of the currently available documentation,
Packit 56e23f
mostly in the form of manpages.  The top level directory also contains a README
Packit 56e23f
file (this file) as well as the LICENSE, CREDITS, CONTRIBUTING, and
Packit 56e23f
CHANGELOG files.
Packit 56e23f
Packit 56e23f
Those who are interested in contributing to the the project are encouraged to
Packit 56e23f
read the CONTRIBUTING in the top level directory.
Packit 56e23f
Packit 56e23f
## Verifying Release Tarballs
Packit 56e23f
Packit 56e23f
Before use you should verify the downloaded release tarballs and checksums
Packit 56e23f
using the detached signatures supplied as part of the release; the detached
Packit 56e23f
signature files are the "*.asc" files.  If you have GnuPG installed you can
Packit 56e23f
verify detached signatures using the following command:
Packit 56e23f
Packit 56e23f
	# gpg --verify file.asc file
Packit 56e23f
Packit 56e23f
At present, only the following keys are authorized to sign official libseccomp
Packit 56e23f
releases:
Packit 56e23f
Packit 56e23f
	Paul Moore <paul@paul-moore.com>
Packit 56e23f
	7100 AADF AE6E 6E94 0D2E  0AD6 55E4 5A5A E8CA 7C8A
Packit 56e23f
Packit 56e23f
	Tom Hromatka <tom.hromatka@oracle.com>
Packit 56e23f
	47A6 8FCE 37C7 D702 4FD6  5E11 356C E62C 2B52 4099
Packit 56e23f
Packit 56e23f
## Building and Installing the Library
Packit 56e23f
Packit 56e23f
If you are building the libseccomp library from an official release tarball,
Packit 56e23f
you should follow the familiar three step process used by most autotools based
Packit 56e23f
applications:
Packit 56e23f
Packit 56e23f
	# ./configure
Packit 56e23f
	# make [V=0|1]
Packit 56e23f
	# make install
Packit 56e23f
Packit 56e23f
However, if you are building the library from sources retrieved from the source
Packit 56e23f
repository you may need to run the autogen.sh script before running configure.
Packit 56e23f
In both cases, running "./configure -h" will display a list of build-time
Packit 56e23f
configuration options.
Packit 56e23f
Packit 56e23f
## Testing the Library
Packit 56e23f
Packit 56e23f
There are a number of tests located in the "tests/" directory and a make target
Packit 56e23f
which can be used to help automate their execution.  If you want to run the
Packit 56e23f
standard regression tests you can execute the following after building the
Packit 56e23f
library:
Packit 56e23f
Packit 56e23f
	# make check
Packit 56e23f
Packit 56e23f
These tests can be safely run on any Linux system, even those where the kernel
Packit 56e23f
does not support seccomp-bpf (seccomp mode 2).  However, be warned that the
Packit 56e23f
test run can take a while to run and produces a lot of output.
Packit 56e23f
Packit 56e23f
The generated seccomp-bpf filters can be tested on a live system using the
Packit 56e23f
"live" tests; they can be executed using the following commands:
Packit 56e23f
Packit 56e23f
	# make check-build
Packit 56e23f
	# (cd tests; ./regression -T live)
Packit 56e23f
Packit 56e23f
These tests will fail if the running Linux Kernel does not provide the
Packit 56e23f
necessary support.
Packit 56e23f
Packit 56e23f
## Developer Tools
Packit 56e23f
Packit 56e23f
The "tools/" directory includes a number of tools which may be helpful in the
Packit 56e23f
development of the library, or applications using the library.  Not all of
Packit 56e23f
these tools are installed by default.
Packit 56e23f
Packit 56e23f
## Bug and Vulnerability Reporting
Packit 56e23f
Packit 56e23f
Problems with the libseccomp library can be reported using the GitHub issue
Packit 56e23f
tracking system or the mailing list.  Those who wish to privately report
Packit 56e23f
potential vulnerabilities should follow the directions in SECURITY.md.