gnutls_priority_init2(3)
๐ gnutls_priority_init2(3) ๐
okay bestie, welcome to the gnutls manual, and today's main character is gnutls_priority_init2 ๐ this is from the gnutls crew, version 3.8.13, and it's the glow-up version of setting up your priority cache. let's get into it, no cap โจ
โจ NAME โจ
gnutls_priority_init2 โ it's an API function, and it's giving "set up all my crypto priorities in one go" ๐
๐ธ SYNOPSIS ๐ธ
#include <gnutls/gnutls.h>
int gnutls_priority_init2(gnutls_priority_t * priority_cache, const char
* priorities, const char ** err_pos, unsigned flags);
like. look at that signature. she's iconic ๐
๐ฆ ARGUMENTS ๐ฆ
gnutls_priority_t * priority_cacheโ bestie this is agnutls_priority_ttype, it's the lil container that holds all ur vibesconst char * prioritiesโ a string describing priorities. and yes, she may beNULL, she's flexible like thatconst char ** err_posโ if something goes wrong, this points at the exact position in the string where the error happened. it's literally the "who did this" receipt ๐unsigned flagsโ either zero, orGNUTLS_PRIORITY_INIT_DEF_APPEND. that's the whole menu
๐ DESCRIPTION ๐
okay so. this function sets priorities for the ciphers, key exchange methods, and macs. and listen โ the priority_cache should be deinitialized using gnutls_priority_deinit(). don't forget that part, that's the cleanup era ๐งน
the priorities option lets you specify a colon separated list of the cipher priorities to enable. some keywords are defined to provide quick access to common preferences, which is so convenient of them fr fr ๐ซถ
when flags is set to GNUTLS_PRIORITY_INIT_DEF_APPEND then the priorities specified will be appended to the default options. it's additive, it's generous, it's the friend who brings extra snacks ๐
unless there is a special need, use the "NORMAL" keyword to apply a reasonable security level, or "NORMAL:%COMPAT" for compatibility. that's the advice, take it ๐
"PERFORMANCE"means all the"secure"ciphersuites are enabled, limited to 128 bit ciphers and sorted by terms of speed performance. zoom zoom ๐๏ธ"LEGACY"โ the NORMAL settings for GnuTLS 3.2.x or earlier. There is no verification profile set, and the allowed DH primes are considered weak today. so like... vintage, but not in the cute way ๐ญ"NORMAL"means all"secure"ciphersuites. The 256-bit ciphers are included as a fallback only. The ciphers are sorted by security margin. balanced, sensible, the main character of defaults โจ"PFS"means all"secure"ciphersuites that support perfect forward secrecy. The 256-bit ciphers are included as a fallback only. The ciphers are sorted by security margin."SECURE128"means all"secure"ciphersuites of security level 128-bit or more."SECURE192"means all"secure"ciphersuites of security level 192-bit or more."SUITEB128"means all the NSA SuiteB ciphersuites with security level of 128."SUITEB192"means all the NSA SuiteB ciphersuites with security level of 192."NONE"means nothing is enabled. This disables everything, including protocols. it's the "close all the tabs" of priority strings ๐
๐ฎ the @KEYWORD1,KEYWORD2,... situation ๐ฎ
okay this one needs its own moment because it's lowkey a whole system:
"@KEYWORD1,KEYWORD2,..." โ The system administrator imposed settings. The provided keyword(s) will be expanded from a configuration-time provided file โ default is: /etc/gnutls/config. Any attributes that follow it, will be appended to the expanded string.
If multiple keywords are provided, separated by commas, then the first keyword that exists in the configuration file will be used. At least one of the keywords must exist, or this function will return an error. no exceptions bestie, that's the rule ๐ค
Typical usage would be to specify an application specified keyword first, followed by "SYSTEM" as a default fallback. e.g., " LIBVIRT ,SYSTEM:!-VERS-SSL3.0" will first try to find a config file entry matching "LIBVIRT", but if that does not exist will use the entry for "SYSTEM". If "SYSTEM" does not exist either, an error will be returned. In all cases, the SSL3.0 protocol will be disabled. The system priority file entries should be formatted as "KEYWORD=VALUE", e.g., "SYSTEM=NORMAL:+ARCFOUR-128".
โจ special keywords โจ
Special keywords are "!", "-" and "+".
"!"or"-"appended with an algorithm will remove this algorithm"+"appended with an algorithm will add this algorithm
Check the GnuTLS manual section "Priority strings" for detailed information. iykyk ๐
๐ EXAMPLES ๐
"NONE:+VERS-TLS-ALL:+MAC-ALL:+RSA:+AES-128-CBC:+SIGN-ALL:+COMP-NULL"
"NORMAL:+ARCFOUR-128" means normal ciphers plus ARCFOUR-128.
"SECURE128:-VERS-SSL3.0" means that only secure ciphers are and enabled, SSL3.0 is disabled.
"NONE:+VERS-TLS-ALL:+AES-128-CBC:+RSA:+SHA1:+COMP-NULL:+SIGN-RSA-SHA1",
"NONE:+VERS-TLS-ALL:+AES-128-CBC:+ECDHE-RSA:+SHA1:+COMP-NULL:+SIGN-RSA-SHA1:+CURVE-SECP256R1",
"SECURE256:+SECURE128",
Note that "NORMAL:%COMPAT" is the most compatible mode. she plays nice with everyone ๐ซถ
A NULL priorities string indicates the default priorities to be used (this is available since GnuTLS 3.3.0). so if you're like "idk just pick for me", that's valid ๐
โญ RETURNS โญ
- On syntax error,
GNUTLS_E_INVALID_REQUESTis returned ๐ญ GNUTLS_E_SUCCESSon success ๐- or an error code. could be anything, it's mysterious like that
๐ SINCE ๐
3.6.3 โ she's been around, she's established, she's a veteran ๐
๐ REPORTING BUGS ๐
Report bugs to <bugs@gnutls.org>. Home page: https://www.gnutls.org
if something's broken it's not you, it's the code, go tell them ๐จ
๐ COPYRIGHT ๐
Copyright ยฉ 2001-2023 Free Software Foundation, Inc., and others.
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.
(that's the legal bit, keep it intact bestie, it's important ๐ซก)
๐ SEE ALSO ๐
The full documentation for gnutls is maintained as a Texinfo manual. If the /usr/share/doc/gnutls/ directory does not contain the HTML form visit
https://www.gnutls.org/manual/
and that's the whole page, bestie!! โจ this was gnutls version 3.8.13 talking about gnutls_priority_init2(3) โ go forth and configure ur ciphers responsibly, stay secure, and don't forget to gnutls_priority_deinit() when you're done ๐๐ bye!!
๐ฆ where this page comes from
- alpine 3.22: gnutls-doc 3.8.13-r0 ยท LGPL-2.1-or-later
- alpine 3.23: gnutls-doc 3.8.13-r0 ยท LGPL-2.1-or-later
- alpine 3.24: gnutls-doc 3.8.13-r0 ยท LGPL-2.1-or-later
- arch rolling: gnutls 3.8.13-3 ยท GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 43: gnutls-devel 3.8.13-1.fc43 ยท GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 43: gnutls-devel 3.8.13-1.fc43 ยท GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 44: gnutls-devel 3.8.13-1.fc44 ยท GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 44: gnutls-devel 3.8.13-1.fc44 ยท GPL-3.0-or-later AND LGPL-2.1-or-later
- ubuntu stonking: gnutls-doc 3.8.13-1ubuntu1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms