KRB5_DIGEST(3)
π KRB5_DIGEST β remote digest support, bestie edition π
okay so you know how this is from the Library Functions Manual? yeah. it's the one and only KRB5_DIGEST(3). sit down, hydrate, we're doing remote digest (HTTP-DIGEST, SASL, CHAP) support together π«Ά
β¨ NAME β¨
krb5_digest, krb5_digest_alloc, krb5_digest_free, krb5_digest_set_server_cb, krb5_digest_set_type, krb5_digest_set_hostname, krb5_digest_get_server_nonce, krb5_digest_set_server_nonce, krb5_digest_get_opaque, krb5_digest_set_opaque, krb5_digest_get_identifier, krb5_digest_set_identifier, krb5_digest_init_request, krb5_digest_set_client_nonce, krb5_digest_set_digest, krb5_digest_set_username, krb5_digest_set_authid, krb5_digest_set_authentication_user, krb5_digest_set_realm, krb5_digest_set_method, krb5_digest_set_uri, krb5_digest_set_nonceCount, krb5_digest_set_qop, krb5_digest_request, krb5_digest_get_responseData, krb5_digest_get_rsp, krb5_digest_get_tickets, krb5_digest_get_client_binding, krb5_digest_get_a1_hash
β¦and what do they all do? remote digest (HTTP-DIGEST, SASL, CHAP) support. that's the whole vibe. no cap. π
π LIBRARY π
Kerberos 5 Library (libkrb5, -lkrb5) β that's the one you link against, mwah π
π SYNOPSIS π
like, here's literally every single signature, verbatim, because I am not about to paraphrase function prototypes and break your build, bestie π
#include <krb5.h>
typedef struct krb5_digest *krb5_digest;
krb5_error_code
krb5_digest_alloc(krb5_context context, krb5_digest *digest);
void
krb5_digest_free(krb5_digest digest);
krb5_error_code
krb5_digest_set_type(krb5_context context, krb5_digest digest,
const char *type);
krb5_error_code
krb5_digest_set_server_cb(krb5_context context, krb5_digest digest,
const char *type, const char *binding);
krb5_error_code
krb5_digest_set_hostname(krb5_context context, krb5_digest digest,
const char *hostname);
const char *
krb5_digest_get_server_nonce(krb5_context context, krb5_digest digest);
krb5_error_code
krb5_digest_set_server_nonce(krb5_context context, krb5_digest digest,
const char *nonce);
const char *
krb5_digest_get_opaque(krb5_context context, krb5_digest digest);
krb5_error_code
krb5_digest_set_opaque(krb5_context context, krb5_digest digest,
const char *opaque);
const char *
krb5_digest_get_identifier(krb5_context context, krb5_digest digest);
krb5_error_code
krb5_digest_set_identifier(krb5_context context, krb5_digest digest,
const char *id);
krb5_error_code
krb5_digest_init_request(krb5_context context, krb5_digest digest,
krb5_realm realm, krb5_ccache ccache);
krb5_error_code
krb5_digest_set_client_nonce(krb5_context context, krb5_digest digest,
const char *nonce);
krb5_error_code
krb5_digest_set_digest(krb5_context context, krb5_digest digest,
const char *dgst);
krb5_error_code
krb5_digest_set_username(krb5_context context, krb5_digest digest,
const char *username);
krb5_error_code
krb5_digest_set_authid(krb5_context context, krb5_digest digest,
const char *authid);
krb5_error_code
krb5_digest_set_authentication_user(krb5_context context,
krb5_digest digest, krb5_principal authentication_user);
krb5_error_code
krb5_digest_set_realm(krb5_context context, krb5_digest digest,
const char *realm);
krb5_error_code
krb5_digest_set_method(krb5_context context, krb5_digest digest,
const char *method);
krb5_error_code
krb5_digest_set_uri(krb5_context context, krb5_digest digest,
const char *uri);
krb5_error_code
krb5_digest_set_nonceCount(krb5_context context, krb5_digest digest,
const char *nonce_count);
krb5_error_code
krb5_digest_set_qop(krb5_context context, krb5_digest digest,
const char *qop);
krb5_error_code
krb5_digest_request(krb5_context context, krb5_digest digest,
krb5_realm realm, krb5_ccache ccache);
const char *
krb5_digest_get_responseData(krb5_context context, krb5_digest digest);
const char *
krb5_digest_get_rsp(krb5_context context, krb5_digest digest);
krb5_error_code
krb5_digest_get_tickets(krb5_context context, krb5_digest digest,
Ticket **tickets);
krb5_error_code
krb5_digest_get_client_binding(krb5_context context, krb5_digest digest,
char **type, char **binding);
krb5_error_code
krb5_digest_get_a1_hash(krb5_context context, krb5_digest digest,
krb5_data *data);
πΈ DESCRIPTION πΈ
ok so here's the tea. there are only three things this page actually explains in prose, and I'm giving you all of them, no gatekeeping π
krb5_digest_alloc()β this one allocates the digest structure. that's it, that's the job. and bestie, listen: when you're done with it, you must free it withkrb5_digest_free(). don't be the person who leaks. don't be them. π«Άkrb5_digest_alloc()returns0to say success β¨ otherwise it hands you back a Kerberos error code, and the pointer that digest points to gets set toNULL. so like, no dangling nonsense, she's tidy like that πkrb5_digest_free()β frees the structure digest. that's the whole sentence. short, sweet, iconic. π
lowkey a reminder: alloc without free is giving "I'll text back later" energy and we both know how that ends π
π SEE ALSO π
iykyk β go read those next, they're the supporting cast π¦
and that's the whole page, bestie!! this was HEIMDAL, dated February 18, 2007 β yeah she's an elder but she ate and left no crumbs πβ go free your digest structs. periodt. πβ¨π
π¦ where this page comes from
- alpine 3.22: heimdal-doc 7.8.0-r4 Β· BSD-3-Clause
- alpine 3.23: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- alpine 3.24: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- debian bookworm: heimdal-dev 7.8.git20221117.28daf24+dfsg-2 Β· BSD-3-Clause
- debian trixie: heimdal-dev 7.8.git20221117.28daf24+dfsg-9+deb13u1 Β· BSD-3-Clause
- epel 10: heimdal-devel 7.8.0-26.el10_2 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- epel 9: heimdal-devel 7.8.0-5.el9 Β· BSD and MIT
- fedora 43: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 43: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-devel 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- nixpkgs unstable: heimdal 7.8.0-unstable-2024-09-10
- ubuntu jammy: heimdal-dev 7.7.0+dfsg-3ubuntu1 Β· BSD-3-Clause
- ubuntu noble: heimdal-dev 7.8.git20221117.28daf24+dfsg-5ubuntu3 Β· BSD-3-Clause
- ubuntu questing: heimdal-dev 7.8.git20221117.28daf24+dfsg-9ubuntu1
- ubuntu resolute: heimdal-dev 7.8.git20221117.28daf24+dfsg-11ubuntu1 Β· BSD-3-Clause
- ubuntu stonking: heimdal-dev 7.8.git20240113.1b4565a+dfsg-2ubuntu1 Β· BSD-3-Clause
- Copyright (c) 2006 - 2007 Kungliga Tekniska HΓΆgskolan
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms