TS_VERIFY_CTX(3SSL)
β¨ NAME β¨
okay so bestie, welcome to the TS_VERIFY_CTX family π β this whole crew is about managing the TS response verification context, and the squad is, in order:
TS_VERIFY_CTX, TS_VERIFY_CTX_new, TS_VERIFY_CTX_init, TS_VERIFY_CTX_free, TS_VERIFY_CTX_cleanup, TS_VERIFY_CTX_set_flags, TS_VERIFY_CTX_add_flags, TS_VERIFY_CTX_set0_data, TS_VERIFY_CTX_set0_imprint, TS_VERIFY_CTX_set0_store, TS_VERIFY_CTX_set0_certs, TS_VERIFY_CTX_set_certs, TS_VERIFY_CTS_set_certs, TS_VERIFY_CTX_set_data, TS_VERIFY_CTX_set_imprint, TS_VERIFY_CTX_set_store
yes the names are giving β¨committee meetingβ¨ but that's the OpenSSL 3SSL manual life, we move π«Ά
πΈ SYNOPSIS πΈ
#include <openssl/ts.h>
typedef struct TS_verify_ctx TS_VERIFY_CTX;
TS_VERIFY_CTX *TS_VERIFY_CTX_new(void);
void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx);
void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx);
void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx);
int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f);
int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f);
int TS_VERIFY_CTX_set0_data(TS_VERIFY_CTX *ctx, BIO *b);
int TS_VERIFY_CTX_set0_imprint(TS_VERIFY_CTX *ctx,
unsigned char *hexstr, long len);
int TS_VERIFY_CTX_set0_store(TS_VERIFY_CTX *ctx, X509_STORE *s);
int TS_VERIFY_CTX_set0_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs);
The following functions have been deprecated since OpenSSL 3.4:
BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b);
unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx,
unsigned char *hexstr, long len);
X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s);
STACK_OF(X509) *TS_VERIFY_CTX_set_certs(TS_VERIFY_CTX *ctx,
STACK_OF(X509) *certs);
The following function has been deprecated since OpenSSL 3.0:
STACK_OF(X509) *TS_VERIFY_CTS_set_certs(TS_VERIFY_CTX *ctx,
STACK_OF(X509) *certs);
π¦ DESCRIPTION π¦
So, the Time-Stamp Protocol (TSP) is defined by RFC 3161. TSP is a protocol used to provide long-term proof of the existence of certain data before a particular time. TSP defines a Time Stamping Authority (TSA) and an entity that makes requests to the TSA. Usually, the TSA is referred to as the server side, and the requesting entity is referred to as the client. it's giving very much "prove you were there" energy π
In TSP, when a server sends a response to a client, the server normally needs to sign the response data β the TimeStampToken (TST) β with its private key. Then the client verifies the received TST using the server's certificate chain. like a little handshake with receipts π₯
π«Ά heads up bestie: for all the following methods, unless noted otherwise, ctx is the verification context created in advance.
TS_VERIFY_CTX_new()β returns an allocatedTS_VERIFY_CTXstructure. fresh out the box, brand new πTS_VERIFY_CTX_init()β initializes a verification context.TS_VERIFY_CTX_free()β frees up aTS_VERIFY_CTXobject. ctx is the verification context to be freed. If ctx isNULL, the call is ignored. no crash, no drama, we simply do not engage πTS_VERIFY_CTX_set_flags()β sets the flags in the verification context. f are the flags to be set.TS_VERIFY_CTX_add_flags()β adds flags to the verification context. f are the flags to be added (OR'd).TS_VERIFY_CTX_set0_data()β sets the data to be verified. b is theBIOwith the data. A previously assignedBIOis freed. theset0naming literally means it takes ownership, periodt.TS_VERIFY_CTX_set0_imprint()β sets the message imprint. hexstr is the message imprint to be assigned. A previously assigned imprint is freed.TS_VERIFY_CTX_set0_store()β sets the store for the verification context. s is the store to be assigned. A previously assigned store is freed.TS_VERIFY_CTX_set0_certs()β is used to set the server's certificate chain when verifying aTST. certs is a stack ofX509certificates.TS_VERIFY_CTX_cleanup()β frees all data associated with the givenTS_VERIFY_CTXobject and initializes it. ctx is the verification context created in advance. If ctx isNULL, the call is ignored.
π the deprecated era (all of the following, bestie) π
All of the following functions described are deprecated. Applications should instead use the functions TS_VERIFY_CTX_set0_data(3), TS_VERIFY_CTX_set0_imprint(3), TS_VERIFY_CTX_set0_store(3), TS_VERIFY_CTX_set0_certs(3). glow up, use the set0 ones β¨
TS_VERIFY_CTX_set_data()β is used to set theBIOwith the data to be verified. A previously assignedBIOis not freed by this call. b is theBIOwith the data to assign.TS_VERIFY_CTX_set_imprint()β is used to set the message imprint. A previously assigned imprint is freed by this call. hexstr is the string with the message imprint to assign.TS_VERIFY_CTX_set_store()β is used to set the certificate store. A previously assigned store is not freed by this call. s is the store to assign.TS_VERIFY_CTX_set_certs()β is used to set the server's certificate chain. A previously assigned stack is not freed by this call. certs is a stack ofX509certificates.TS_VERIFY_CTS_set_certs()β is a misspelled version ofTS_VERIFY_CTX_set_certs()which takes the same parameters and returns the same result. yes bestie, a typo that got shipped. iconic behavior honestly π
π RETURN VALUES π
TS_VERIFY_CTX_new()β returns an allocatedTS_VERIFY_CTXstructure.TS_VERIFY_CTX_set_flags()β returns the flags passed via parameter f.TS_VERIFY_CTX_add_flags()β returns the flags of the context after the ones passed via parameter f are added to it.TS_VERIFY_CTX_set0_data(),TS_VERIFY_CTX_set0_imprint(),TS_VERIFY_CTX_set0_store(), andTS_VERIFY_CTX_set0_certs()β return1if the value could be successfully set and0in case of any error. slay or flop, no in between π- The deprecated functions
TS_VERIFY_CTX_set_data(),TS_VERIFY_CTX_set_imprint(),TS_VERIFY_CTX_set_store(),TS_VERIFY_CTX_set_certs()β return the parameter the user passes via parameter bio, hexstr, s or certs.
π SEE ALSO π
OSSL_ESS_check_signing_certs(3)β go read it, bestie, it's the sibling π«Ά
π HISTORY π
TS_VERIFY_CTX_set0_data(),TS_VERIFY_CTX_set0_imprint(),TS_VERIFY_CTX_set0_store(),TS_VERIFY_CTX_set0_certs()replace the functionsTS_VERIFY_CTX_set_data(),TS_VERIFY_CTX_set_imprint(),TS_VERIFY_CTX_set_store(),TS_VERIFY_CTX_set_certs()that were deprecated in OpenSSL 3.4.0.- The spelling of
TS_VERIFY_CTX_set_certs()was corrected in OpenSSL 3.0.0. The misspelled versionTS_VERIFY_CTS_set_certs()has been retained for compatibility reasons, but it is deprecated in OpenSSL 3.0.0.
π COPYRIGHT π
Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
and that's the whole page bestie, no cap π«Ά this was the OpenSSL 4.0.3 manual, dated 2026-09-29 β the TS_VERIFY_CTX(3SSL) one. go verify some timestamps, you've got this β¨πππ¦
π¦ where this page comes from
- ubuntu stonking: libssl-doc 4.0.3-1ubuntu1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms