1e1051a39Sopenharmony_ci/* 2e1051a39Sopenharmony_ci * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. 3e1051a39Sopenharmony_ci * 4e1051a39Sopenharmony_ci * Licensed under the Apache License 2.0 (the "License"). You may not use 5e1051a39Sopenharmony_ci * this file except in compliance with the License. You can obtain a copy 6e1051a39Sopenharmony_ci * in the file LICENSE in the source distribution or at 7e1051a39Sopenharmony_ci * https://www.openssl.org/source/license.html 8e1051a39Sopenharmony_ci */ 9e1051a39Sopenharmony_ci 10e1051a39Sopenharmony_ci#include <stdio.h> 11e1051a39Sopenharmony_ci#include "internal/cryptlib.h" 12e1051a39Sopenharmony_ci#include <openssl/objects.h> 13e1051a39Sopenharmony_ci#include <openssl/ts.h> 14e1051a39Sopenharmony_ci#include <openssl/pkcs7.h> 15e1051a39Sopenharmony_ci#include "ts_local.h" 16e1051a39Sopenharmony_ci 17e1051a39Sopenharmony_ciint TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *status_info) 18e1051a39Sopenharmony_ci{ 19e1051a39Sopenharmony_ci TS_STATUS_INFO *new_status_info; 20e1051a39Sopenharmony_ci 21e1051a39Sopenharmony_ci if (a->status_info == status_info) 22e1051a39Sopenharmony_ci return 1; 23e1051a39Sopenharmony_ci new_status_info = TS_STATUS_INFO_dup(status_info); 24e1051a39Sopenharmony_ci if (new_status_info == NULL) { 25e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 26e1051a39Sopenharmony_ci return 0; 27e1051a39Sopenharmony_ci } 28e1051a39Sopenharmony_ci TS_STATUS_INFO_free(a->status_info); 29e1051a39Sopenharmony_ci a->status_info = new_status_info; 30e1051a39Sopenharmony_ci 31e1051a39Sopenharmony_ci return 1; 32e1051a39Sopenharmony_ci} 33e1051a39Sopenharmony_ci 34e1051a39Sopenharmony_ciTS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a) 35e1051a39Sopenharmony_ci{ 36e1051a39Sopenharmony_ci return a->status_info; 37e1051a39Sopenharmony_ci} 38e1051a39Sopenharmony_ci 39e1051a39Sopenharmony_ci/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ 40e1051a39Sopenharmony_civoid TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info) 41e1051a39Sopenharmony_ci{ 42e1051a39Sopenharmony_ci PKCS7_free(a->token); 43e1051a39Sopenharmony_ci a->token = p7; 44e1051a39Sopenharmony_ci TS_TST_INFO_free(a->tst_info); 45e1051a39Sopenharmony_ci a->tst_info = tst_info; 46e1051a39Sopenharmony_ci} 47e1051a39Sopenharmony_ci 48e1051a39Sopenharmony_ciPKCS7 *TS_RESP_get_token(TS_RESP *a) 49e1051a39Sopenharmony_ci{ 50e1051a39Sopenharmony_ci return a->token; 51e1051a39Sopenharmony_ci} 52e1051a39Sopenharmony_ci 53e1051a39Sopenharmony_ciTS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a) 54e1051a39Sopenharmony_ci{ 55e1051a39Sopenharmony_ci return a->tst_info; 56e1051a39Sopenharmony_ci} 57e1051a39Sopenharmony_ci 58e1051a39Sopenharmony_ciint TS_TST_INFO_set_version(TS_TST_INFO *a, long version) 59e1051a39Sopenharmony_ci{ 60e1051a39Sopenharmony_ci return ASN1_INTEGER_set(a->version, version); 61e1051a39Sopenharmony_ci} 62e1051a39Sopenharmony_ci 63e1051a39Sopenharmony_cilong TS_TST_INFO_get_version(const TS_TST_INFO *a) 64e1051a39Sopenharmony_ci{ 65e1051a39Sopenharmony_ci return ASN1_INTEGER_get(a->version); 66e1051a39Sopenharmony_ci} 67e1051a39Sopenharmony_ci 68e1051a39Sopenharmony_ciint TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy) 69e1051a39Sopenharmony_ci{ 70e1051a39Sopenharmony_ci ASN1_OBJECT *new_policy; 71e1051a39Sopenharmony_ci 72e1051a39Sopenharmony_ci if (a->policy_id == policy) 73e1051a39Sopenharmony_ci return 1; 74e1051a39Sopenharmony_ci new_policy = OBJ_dup(policy); 75e1051a39Sopenharmony_ci if (new_policy == NULL) { 76e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 77e1051a39Sopenharmony_ci return 0; 78e1051a39Sopenharmony_ci } 79e1051a39Sopenharmony_ci ASN1_OBJECT_free(a->policy_id); 80e1051a39Sopenharmony_ci a->policy_id = new_policy; 81e1051a39Sopenharmony_ci return 1; 82e1051a39Sopenharmony_ci} 83e1051a39Sopenharmony_ci 84e1051a39Sopenharmony_ciASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a) 85e1051a39Sopenharmony_ci{ 86e1051a39Sopenharmony_ci return a->policy_id; 87e1051a39Sopenharmony_ci} 88e1051a39Sopenharmony_ci 89e1051a39Sopenharmony_ciint TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint) 90e1051a39Sopenharmony_ci{ 91e1051a39Sopenharmony_ci TS_MSG_IMPRINT *new_msg_imprint; 92e1051a39Sopenharmony_ci 93e1051a39Sopenharmony_ci if (a->msg_imprint == msg_imprint) 94e1051a39Sopenharmony_ci return 1; 95e1051a39Sopenharmony_ci new_msg_imprint = TS_MSG_IMPRINT_dup(msg_imprint); 96e1051a39Sopenharmony_ci if (new_msg_imprint == NULL) { 97e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 98e1051a39Sopenharmony_ci return 0; 99e1051a39Sopenharmony_ci } 100e1051a39Sopenharmony_ci TS_MSG_IMPRINT_free(a->msg_imprint); 101e1051a39Sopenharmony_ci a->msg_imprint = new_msg_imprint; 102e1051a39Sopenharmony_ci return 1; 103e1051a39Sopenharmony_ci} 104e1051a39Sopenharmony_ci 105e1051a39Sopenharmony_ciTS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a) 106e1051a39Sopenharmony_ci{ 107e1051a39Sopenharmony_ci return a->msg_imprint; 108e1051a39Sopenharmony_ci} 109e1051a39Sopenharmony_ci 110e1051a39Sopenharmony_ciint TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial) 111e1051a39Sopenharmony_ci{ 112e1051a39Sopenharmony_ci ASN1_INTEGER *new_serial; 113e1051a39Sopenharmony_ci 114e1051a39Sopenharmony_ci if (a->serial == serial) 115e1051a39Sopenharmony_ci return 1; 116e1051a39Sopenharmony_ci new_serial = ASN1_INTEGER_dup(serial); 117e1051a39Sopenharmony_ci if (new_serial == NULL) { 118e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 119e1051a39Sopenharmony_ci return 0; 120e1051a39Sopenharmony_ci } 121e1051a39Sopenharmony_ci ASN1_INTEGER_free(a->serial); 122e1051a39Sopenharmony_ci a->serial = new_serial; 123e1051a39Sopenharmony_ci return 1; 124e1051a39Sopenharmony_ci} 125e1051a39Sopenharmony_ci 126e1051a39Sopenharmony_ciconst ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a) 127e1051a39Sopenharmony_ci{ 128e1051a39Sopenharmony_ci return a->serial; 129e1051a39Sopenharmony_ci} 130e1051a39Sopenharmony_ci 131e1051a39Sopenharmony_ciint TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime) 132e1051a39Sopenharmony_ci{ 133e1051a39Sopenharmony_ci ASN1_GENERALIZEDTIME *new_time; 134e1051a39Sopenharmony_ci 135e1051a39Sopenharmony_ci if (a->time == gtime) 136e1051a39Sopenharmony_ci return 1; 137e1051a39Sopenharmony_ci new_time = ASN1_STRING_dup(gtime); 138e1051a39Sopenharmony_ci if (new_time == NULL) { 139e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 140e1051a39Sopenharmony_ci return 0; 141e1051a39Sopenharmony_ci } 142e1051a39Sopenharmony_ci ASN1_GENERALIZEDTIME_free(a->time); 143e1051a39Sopenharmony_ci a->time = new_time; 144e1051a39Sopenharmony_ci return 1; 145e1051a39Sopenharmony_ci} 146e1051a39Sopenharmony_ci 147e1051a39Sopenharmony_ciconst ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a) 148e1051a39Sopenharmony_ci{ 149e1051a39Sopenharmony_ci return a->time; 150e1051a39Sopenharmony_ci} 151e1051a39Sopenharmony_ci 152e1051a39Sopenharmony_ciint TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy) 153e1051a39Sopenharmony_ci{ 154e1051a39Sopenharmony_ci TS_ACCURACY *new_accuracy; 155e1051a39Sopenharmony_ci 156e1051a39Sopenharmony_ci if (a->accuracy == accuracy) 157e1051a39Sopenharmony_ci return 1; 158e1051a39Sopenharmony_ci new_accuracy = TS_ACCURACY_dup(accuracy); 159e1051a39Sopenharmony_ci if (new_accuracy == NULL) { 160e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 161e1051a39Sopenharmony_ci return 0; 162e1051a39Sopenharmony_ci } 163e1051a39Sopenharmony_ci TS_ACCURACY_free(a->accuracy); 164e1051a39Sopenharmony_ci a->accuracy = new_accuracy; 165e1051a39Sopenharmony_ci return 1; 166e1051a39Sopenharmony_ci} 167e1051a39Sopenharmony_ci 168e1051a39Sopenharmony_ciTS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a) 169e1051a39Sopenharmony_ci{ 170e1051a39Sopenharmony_ci return a->accuracy; 171e1051a39Sopenharmony_ci} 172e1051a39Sopenharmony_ci 173e1051a39Sopenharmony_ciint TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds) 174e1051a39Sopenharmony_ci{ 175e1051a39Sopenharmony_ci ASN1_INTEGER *new_seconds; 176e1051a39Sopenharmony_ci 177e1051a39Sopenharmony_ci if (a->seconds == seconds) 178e1051a39Sopenharmony_ci return 1; 179e1051a39Sopenharmony_ci new_seconds = ASN1_INTEGER_dup(seconds); 180e1051a39Sopenharmony_ci if (new_seconds == NULL) { 181e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 182e1051a39Sopenharmony_ci return 0; 183e1051a39Sopenharmony_ci } 184e1051a39Sopenharmony_ci ASN1_INTEGER_free(a->seconds); 185e1051a39Sopenharmony_ci a->seconds = new_seconds; 186e1051a39Sopenharmony_ci return 1; 187e1051a39Sopenharmony_ci} 188e1051a39Sopenharmony_ci 189e1051a39Sopenharmony_ciconst ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a) 190e1051a39Sopenharmony_ci{ 191e1051a39Sopenharmony_ci return a->seconds; 192e1051a39Sopenharmony_ci} 193e1051a39Sopenharmony_ci 194e1051a39Sopenharmony_ciint TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis) 195e1051a39Sopenharmony_ci{ 196e1051a39Sopenharmony_ci ASN1_INTEGER *new_millis = NULL; 197e1051a39Sopenharmony_ci 198e1051a39Sopenharmony_ci if (a->millis == millis) 199e1051a39Sopenharmony_ci return 1; 200e1051a39Sopenharmony_ci if (millis != NULL) { 201e1051a39Sopenharmony_ci new_millis = ASN1_INTEGER_dup(millis); 202e1051a39Sopenharmony_ci if (new_millis == NULL) { 203e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 204e1051a39Sopenharmony_ci return 0; 205e1051a39Sopenharmony_ci } 206e1051a39Sopenharmony_ci } 207e1051a39Sopenharmony_ci ASN1_INTEGER_free(a->millis); 208e1051a39Sopenharmony_ci a->millis = new_millis; 209e1051a39Sopenharmony_ci return 1; 210e1051a39Sopenharmony_ci} 211e1051a39Sopenharmony_ci 212e1051a39Sopenharmony_ciconst ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a) 213e1051a39Sopenharmony_ci{ 214e1051a39Sopenharmony_ci return a->millis; 215e1051a39Sopenharmony_ci} 216e1051a39Sopenharmony_ci 217e1051a39Sopenharmony_ciint TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros) 218e1051a39Sopenharmony_ci{ 219e1051a39Sopenharmony_ci ASN1_INTEGER *new_micros = NULL; 220e1051a39Sopenharmony_ci 221e1051a39Sopenharmony_ci if (a->micros == micros) 222e1051a39Sopenharmony_ci return 1; 223e1051a39Sopenharmony_ci if (micros != NULL) { 224e1051a39Sopenharmony_ci new_micros = ASN1_INTEGER_dup(micros); 225e1051a39Sopenharmony_ci if (new_micros == NULL) { 226e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 227e1051a39Sopenharmony_ci return 0; 228e1051a39Sopenharmony_ci } 229e1051a39Sopenharmony_ci } 230e1051a39Sopenharmony_ci ASN1_INTEGER_free(a->micros); 231e1051a39Sopenharmony_ci a->micros = new_micros; 232e1051a39Sopenharmony_ci return 1; 233e1051a39Sopenharmony_ci} 234e1051a39Sopenharmony_ci 235e1051a39Sopenharmony_ciconst ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a) 236e1051a39Sopenharmony_ci{ 237e1051a39Sopenharmony_ci return a->micros; 238e1051a39Sopenharmony_ci} 239e1051a39Sopenharmony_ci 240e1051a39Sopenharmony_ciint TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering) 241e1051a39Sopenharmony_ci{ 242e1051a39Sopenharmony_ci a->ordering = ordering ? 0xFF : 0x00; 243e1051a39Sopenharmony_ci return 1; 244e1051a39Sopenharmony_ci} 245e1051a39Sopenharmony_ci 246e1051a39Sopenharmony_ciint TS_TST_INFO_get_ordering(const TS_TST_INFO *a) 247e1051a39Sopenharmony_ci{ 248e1051a39Sopenharmony_ci return a->ordering ? 1 : 0; 249e1051a39Sopenharmony_ci} 250e1051a39Sopenharmony_ci 251e1051a39Sopenharmony_ciint TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce) 252e1051a39Sopenharmony_ci{ 253e1051a39Sopenharmony_ci ASN1_INTEGER *new_nonce; 254e1051a39Sopenharmony_ci 255e1051a39Sopenharmony_ci if (a->nonce == nonce) 256e1051a39Sopenharmony_ci return 1; 257e1051a39Sopenharmony_ci new_nonce = ASN1_INTEGER_dup(nonce); 258e1051a39Sopenharmony_ci if (new_nonce == NULL) { 259e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 260e1051a39Sopenharmony_ci return 0; 261e1051a39Sopenharmony_ci } 262e1051a39Sopenharmony_ci ASN1_INTEGER_free(a->nonce); 263e1051a39Sopenharmony_ci a->nonce = new_nonce; 264e1051a39Sopenharmony_ci return 1; 265e1051a39Sopenharmony_ci} 266e1051a39Sopenharmony_ci 267e1051a39Sopenharmony_ciconst ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a) 268e1051a39Sopenharmony_ci{ 269e1051a39Sopenharmony_ci return a->nonce; 270e1051a39Sopenharmony_ci} 271e1051a39Sopenharmony_ci 272e1051a39Sopenharmony_ciint TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa) 273e1051a39Sopenharmony_ci{ 274e1051a39Sopenharmony_ci GENERAL_NAME *new_tsa; 275e1051a39Sopenharmony_ci 276e1051a39Sopenharmony_ci if (a->tsa == tsa) 277e1051a39Sopenharmony_ci return 1; 278e1051a39Sopenharmony_ci new_tsa = GENERAL_NAME_dup(tsa); 279e1051a39Sopenharmony_ci if (new_tsa == NULL) { 280e1051a39Sopenharmony_ci ERR_raise(ERR_LIB_TS, ERR_R_MALLOC_FAILURE); 281e1051a39Sopenharmony_ci return 0; 282e1051a39Sopenharmony_ci } 283e1051a39Sopenharmony_ci GENERAL_NAME_free(a->tsa); 284e1051a39Sopenharmony_ci a->tsa = new_tsa; 285e1051a39Sopenharmony_ci return 1; 286e1051a39Sopenharmony_ci} 287e1051a39Sopenharmony_ci 288e1051a39Sopenharmony_ciGENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a) 289e1051a39Sopenharmony_ci{ 290e1051a39Sopenharmony_ci return a->tsa; 291e1051a39Sopenharmony_ci} 292e1051a39Sopenharmony_ci 293e1051a39Sopenharmony_ciSTACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a) 294e1051a39Sopenharmony_ci{ 295e1051a39Sopenharmony_ci return a->extensions; 296e1051a39Sopenharmony_ci} 297e1051a39Sopenharmony_ci 298e1051a39Sopenharmony_civoid TS_TST_INFO_ext_free(TS_TST_INFO *a) 299e1051a39Sopenharmony_ci{ 300e1051a39Sopenharmony_ci if (!a) 301e1051a39Sopenharmony_ci return; 302e1051a39Sopenharmony_ci sk_X509_EXTENSION_pop_free(a->extensions, X509_EXTENSION_free); 303e1051a39Sopenharmony_ci a->extensions = NULL; 304e1051a39Sopenharmony_ci} 305e1051a39Sopenharmony_ci 306e1051a39Sopenharmony_ciint TS_TST_INFO_get_ext_count(TS_TST_INFO *a) 307e1051a39Sopenharmony_ci{ 308e1051a39Sopenharmony_ci return X509v3_get_ext_count(a->extensions); 309e1051a39Sopenharmony_ci} 310e1051a39Sopenharmony_ci 311e1051a39Sopenharmony_ciint TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos) 312e1051a39Sopenharmony_ci{ 313e1051a39Sopenharmony_ci return X509v3_get_ext_by_NID(a->extensions, nid, lastpos); 314e1051a39Sopenharmony_ci} 315e1051a39Sopenharmony_ci 316e1051a39Sopenharmony_ciint TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, int lastpos) 317e1051a39Sopenharmony_ci{ 318e1051a39Sopenharmony_ci return X509v3_get_ext_by_OBJ(a->extensions, obj, lastpos); 319e1051a39Sopenharmony_ci} 320e1051a39Sopenharmony_ci 321e1051a39Sopenharmony_ciint TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos) 322e1051a39Sopenharmony_ci{ 323e1051a39Sopenharmony_ci return X509v3_get_ext_by_critical(a->extensions, crit, lastpos); 324e1051a39Sopenharmony_ci} 325e1051a39Sopenharmony_ci 326e1051a39Sopenharmony_ciX509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc) 327e1051a39Sopenharmony_ci{ 328e1051a39Sopenharmony_ci return X509v3_get_ext(a->extensions, loc); 329e1051a39Sopenharmony_ci} 330e1051a39Sopenharmony_ci 331e1051a39Sopenharmony_ciX509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc) 332e1051a39Sopenharmony_ci{ 333e1051a39Sopenharmony_ci return X509v3_delete_ext(a->extensions, loc); 334e1051a39Sopenharmony_ci} 335e1051a39Sopenharmony_ci 336e1051a39Sopenharmony_ciint TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc) 337e1051a39Sopenharmony_ci{ 338e1051a39Sopenharmony_ci return X509v3_add_ext(&a->extensions, ex, loc) != NULL; 339e1051a39Sopenharmony_ci} 340e1051a39Sopenharmony_ci 341e1051a39Sopenharmony_civoid *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx) 342e1051a39Sopenharmony_ci{ 343e1051a39Sopenharmony_ci return X509V3_get_d2i(a->extensions, nid, crit, idx); 344e1051a39Sopenharmony_ci} 345e1051a39Sopenharmony_ci 346e1051a39Sopenharmony_ciint TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i) 347e1051a39Sopenharmony_ci{ 348e1051a39Sopenharmony_ci return ASN1_INTEGER_set(a->status, i); 349e1051a39Sopenharmony_ci} 350e1051a39Sopenharmony_ci 351e1051a39Sopenharmony_ciconst ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a) 352e1051a39Sopenharmony_ci{ 353e1051a39Sopenharmony_ci return a->status; 354e1051a39Sopenharmony_ci} 355e1051a39Sopenharmony_ci 356e1051a39Sopenharmony_ciconst STACK_OF(ASN1_UTF8STRING) * 357e1051a39Sopenharmony_ciTS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a) 358e1051a39Sopenharmony_ci{ 359e1051a39Sopenharmony_ci return a->text; 360e1051a39Sopenharmony_ci} 361e1051a39Sopenharmony_ci 362e1051a39Sopenharmony_ciconst ASN1_BIT_STRING *TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a) 363e1051a39Sopenharmony_ci{ 364e1051a39Sopenharmony_ci return a->failure_info; 365e1051a39Sopenharmony_ci} 366