kmod/libkmod
Yauheni Kaliuta 391b4714b4 libkmod-signature: implement pkcs7 parsing with openssl
The patch adds data fetching from the PKCS#7 certificate using
openssl library (which is used by scripts/sign-file.c in the linux
kernel to sign modules).

In general the certificate can contain many signatures, but since
kmod (modinfo) supports only one signature at the moment, only first
one is taken.

With the current sign-file.c certificate doesn't contain signer
key's fingerprint, so "serial number" is used for the key id.

Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
2019-02-04 13:51:27 -08:00
..
docs libkmod: fix integration with gtk-doc 2016-06-28 12:15:38 -03:00
python
.gitignore
COPYING
Makefile
README
libkmod-config.c libkmod-config: fix parsing quoted kernel cmdline on params 2017-02-16 09:18:35 -08:00
libkmod-elf.c libkmod-elf: resolve CRC if module is built with MODULE_REL_CRCS 2017-08-04 08:20:24 -07:00
libkmod-file.c
libkmod-index.c Check return of fseek while reading index 2015-02-28 16:11:53 -03:00
libkmod-index.h
libkmod-internal.h libkmod-signature: implement pkcs7 parsing with openssl 2019-02-04 13:51:27 -08:00
libkmod-list.c
libkmod-module.c libkmod-signature: implement pkcs7 parsing with openssl 2019-02-04 13:51:27 -08:00
libkmod-signature.c libkmod-signature: implement pkcs7 parsing with openssl 2019-02-04 13:51:27 -08:00
libkmod.c libkmod: export new kmod_get_dirname() function 2015-09-30 15:28:24 -03:00
libkmod.h kmod: build: cure compiler warnings showing up externally 2018-06-18 09:46:56 -07:00
libkmod.pc.in
libkmod.sym libkmod: export new kmod_get_dirname() function 2015-09-30 15:28:24 -03:00

README

libkmod - linux kernel module handling library

ABSTRACT
========

libkmod was created to allow programs to easily insert, remove and
list modules, also checking its properties, dependencies and aliases.

there is no shared/global context information and it can be used by
multiple sites on a single program, also being able to be used from
threads, although it's not thread safe (you must lock explicitly).


OVERVIEW
========

Every user should create and manage it's own library context with:

   struct kmod_ctx *ctx = kmod_new(kernel_dirname);
   kmod_unref(ctx);


Modules can be created by various means:

   struct kmod_module *mod;
   int err;

   err = kmod_module_new_from_path(ctx, path, &mod);
   if (err < 0) {
      /* code */
   } else {
      /* code */
      kmod_module_unref(mod);
   }

   err = kmod_module_new_from_name(ctx, name, &mod);
   if (err < 0) {
      /* code */
   } else {
      /* code */
      kmod_module_unref(mod);
   }


Or could be resolved from a known alias to a list of alternatives:

   struct kmod_list *list, *itr;
   int err;
   err = kmod_module_new_from_lookup(ctx, alias, &list);
   if (err < 0) {
      /* code */
   } else {
      kmod_list_foreach(itr, list) {
         struct kmod_module *mod = kmod_module_get_module(itr);
         /* code */
      }
   }