Provided by: libcanlock-dev_3.3.0-1_amd64 bug


       cl_get_key - Create Cancel-Key with libcanlock


       #include <libcanlock-3/canlock.h>

       char *cl_get_key(cl_hash_version hash,
                        const unsigned char *sec, size_t sec_len,
                        const unsigned char *msg, size_t msg_len);

       Supported values for hash (by version 3.0.0 of libcanlock):
       CL_SHA1 CL_SHA224 CL_SHA256 CL_SHA384 CL_SHA512


       The cl_get_key() function creates a <c-key> element according to the algorithm recommended
       by RFC 8315 in Section 4. The hash algorithm selected for <scheme> is used  for  the  HMAC
       operation too.

       The hash algorithm for <scheme> is selected with hash.

       The local secret is specified with sec (sec_len must be set to the length of sec).
       The length of the local secret should be at least the length of the hash that was selected
       for <scheme> (32 octets for SHA256).

       The Message-ID of the target article (the one that should be cancelled or  superseded)  is
       specified with msg (msg_len must be set to the length of msg).

       The  Message-ID  msg  can be prepended with an optional User-ID. The length of the User-ID
       must be added to msg_len.  The User-ID must not contain angle brackets.


       Upon successful completion a pointer to the result string is returned.  Otherwise, NULL is

       On success the caller is responsible to call free() for the pointer returned as result.


       Dennis Preiser
       (Based in part on the implementation from G. J. Andruk for Version 2)

       The  base64  implementation  is written by Kungliga Tekniska Hogskolan (Royal Institute of
       Technology, Stockholm, Sweden)

       The hash algorithms are implemented with code from RFC 6234


       Report bugs to <>.


       libcanlock tries to comply with the following standards:

       RFC 5537, RFC 6234, RFC 8315


       free(3),     cl_clear_secret(3),      cl_get_lock(3),      cl_split(3),      cl_verify(3),
       cl_verify_multi(3), canlock(1)