c825f470cb
redbear-ci / check (push) Has been cancelled
kf6-kwallet's kwalletbackend hard-requires LibGcrypt 1.5.0 for PBKDF2 key derivation and the GPG-backed wallet format. Vendor both libraries under the full-fork model (committed source/, offline-reproducible) and add libgcrypt to kf6-kwallet's dependencies. Release tarballs ship a pre-generated configure and a config.sub that already recognises the *-redox triple, so no autotools regeneration is needed at cook time. libgpg-error supplies a generic pthread-backed gpgrt_lock_t for Redox via its build script; the test-only redox.patch (tms/times stub) is baked into libgcrypt's source and kept alongside for future version bumps. Promoted from the stale recipes/wip copies (now .disabled).
116 lines
3.6 KiB
Plaintext
116 lines
3.6 KiB
Plaintext
README.apichanges 2003-07-28
|
|
|
|
NOTE: THESE ARE API CHANGES DONE BEFORE THE FIRST STABLE RELEASE SO
|
|
THEY ARE NOT RELEVANT ANYMORE [stable is 1.2.4 right now]
|
|
|
|
We decided to change a couple of annoying things in Libgcrypt and to
|
|
cleanup the API. The new API better fits into a multi-threaded
|
|
environment and is more consistent. One import change is that all
|
|
functions return error codes from a set of error codes shared between
|
|
GnuPG, GPGME and Libgcrypt.
|
|
|
|
This file contains some hints on how to port your application from
|
|
libgcrypt <= 1.1.12 to the current API as of 1.1.42. We hope that
|
|
there won't be another need for such a major change.
|
|
|
|
|
|
* Types
|
|
|
|
All types definitions changed to a foo_t scheme; for some time we
|
|
will support the old names but you better start to rename them:
|
|
|
|
s/GCRY_MPI/gcry_mpi_t/
|
|
s/GcryMPI/gcry_mpi_t/
|
|
s/GCRY_SEXP/gcry_sexp_t/
|
|
s/GcrySexp/gcry_sexp_t/
|
|
s/GCRY_CIPHER_HD/gcry_cipher_hd_t/
|
|
s/GcryCipherHd/gcry_cipher_hd_t/
|
|
s/GCRY_MD_HD/gcry_md_hd_t/
|
|
s/GcryMDHd/gcry_md_hd_t/
|
|
|
|
* Initialization
|
|
|
|
For proper initialization of the library, you must call
|
|
gcry_check_version() before calling any other function except for
|
|
these gcry_control operations:
|
|
GCRYCTL_SUSPEND_SECMEM_WARN
|
|
GCRYCTL_DISABLE_INTERNAL_LOCKING
|
|
GCRYCTL_ANY_INITIALIZATION_P
|
|
GCRYCTL_INITIALIZATION_FINISHED_P
|
|
|
|
|
|
* Handles
|
|
|
|
gcry_cipher_open and gcry_md_open do now return an error code
|
|
instead of a NULL handle; the handle is now returned by
|
|
asigning it to the first argument. Example on how to change your
|
|
code:
|
|
|
|
Old:
|
|
|
|
hd = gcry_md_open (algo, flags);
|
|
if (!hd)
|
|
{
|
|
fprintf (stderr, "md_open failed: %s\n", gcry_errno (-1));
|
|
....
|
|
|
|
New:
|
|
|
|
rc = gcry_md_open (&hd, algo, flags);
|
|
if (rc)
|
|
{
|
|
fprintf (stderr, "md_open failed: %s\n", gcry_strerror (rc));
|
|
....
|
|
|
|
If you are not interested in the error code, you can do it in a
|
|
simplified way:
|
|
|
|
gcry_md_open (&hd, algo, flags);
|
|
if (!hd)
|
|
abort ();
|
|
|
|
i.e. the function makes sure that HD points to NULL in case of an error.
|
|
The required change for gcry_cipher_open is similar.
|
|
|
|
* Message Digests
|
|
|
|
The order of the arguments to gcry_md_copy has been changed in order
|
|
to be more consistent with other functions of this type. This means
|
|
that the new message digest handle will be a copy of the message
|
|
handle specified by the second argument and stored at the address
|
|
pointed to by the first argument.
|
|
|
|
* Error codes
|
|
|
|
gcry_errno () has been removed because it is hard to use in
|
|
multi-threaded environment. You need to save the error code
|
|
returned by the functions and use it either numerical or passing it
|
|
to gcry_strerror (since gcry_strerror is a wrapper function for
|
|
gpg_strerror, the latter function can also be used).
|
|
|
|
Instead of using the error codes GCRYERR_*, you have to use the
|
|
GPG_ERR_* names.
|
|
|
|
* S-expressions
|
|
|
|
gcry_sexp_canon_len used to return a `historical' error code in
|
|
`errcode', this is not the case anymore; the value returned in
|
|
`errcode' is now a standard Libgcrypt (i.e. gpg-error) error code.
|
|
|
|
* MPI
|
|
|
|
gcry_mpi_scan and gcry_mpi_print need the size of a provided buffer
|
|
as input and return the number of bytes actually scanned/printed to
|
|
the user. The old API used a single size_t Pointer for both tasks,
|
|
the new API distinguishes between the input and the output values.
|
|
|
|
* Public Key cryptography
|
|
|
|
gcry_pk_decrypt used to return a `simple S-expression part' that
|
|
contains a single MPI value. In case the `data' S-expression
|
|
contains a `flags' element, the result S-expression is filled with a
|
|
complete S-expression of the following format:
|
|
|
|
(value PLAINTEXT)
|
|
|