Libgcrypt’s API for asymmetric cryptography is based on data structures called S-expressions (see http://people.csail.mit.edu/rivest/sexp.html) and does not work with contexts/handles as most of the other building blocks of Libgcrypt do.
The following information are stored in S-expressions:
To describe how Libgcrypt expect keys, we use examples. Note that words in uppercase indicate parameters, whereas lowercase words are literals.
Note that all MPI (multi-precision-integers) values are expected to be in
GCRYMPI_FMT_USG format. An easy way to create S-expressions is
gcry_sexp_build which allows to pass a string with
printf-like escapes to insert MPI values.
|• RSA key parameters:||Parameters used with an RSA key.|
|• DSA key parameters:||Parameters used with a DSA key.|
|• ECC key parameters:||Parameters used with ECC keys.|