1 /* 2 * Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 #include <stddef.h> 11 #include "internal/cryptlib.h" 12 #include <openssl/asn1.h> 13 #include <openssl/asn1t.h> 14 #include <openssl/objects.h> 15 #include <openssl/buffer.h> 16 #include <openssl/err.h> 17 #include <openssl/x509v3.h> 18 #include "asn1_local.h" 19 20 /* 21 * General ASN1 structure recursive scanner: iterate through all fields 22 * passing details to a callback. 23 */ 24 ASN1_SCTX_new(int (* scan_cb)(ASN1_SCTX * ctx))25ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)) 26 { 27 ASN1_SCTX *ret = OPENSSL_zalloc(sizeof(*ret)); 28 29 if (ret == NULL) 30 return NULL; 31 ret->scan_cb = scan_cb; 32 return ret; 33 } 34 ASN1_SCTX_free(ASN1_SCTX * p)35void ASN1_SCTX_free(ASN1_SCTX *p) 36 { 37 OPENSSL_free(p); 38 } 39 ASN1_SCTX_get_item(ASN1_SCTX * p)40const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p) 41 { 42 return p->it; 43 } 44 ASN1_SCTX_get_template(ASN1_SCTX * p)45const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p) 46 { 47 return p->tt; 48 } 49 ASN1_SCTX_get_flags(ASN1_SCTX * p)50unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p) 51 { 52 return p->flags; 53 } 54 ASN1_SCTX_set_app_data(ASN1_SCTX * p,void * data)55void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data) 56 { 57 p->app_data = data; 58 } 59 ASN1_SCTX_get_app_data(ASN1_SCTX * p)60void *ASN1_SCTX_get_app_data(ASN1_SCTX *p) 61 { 62 return p->app_data; 63 } 64