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 ERR_raise(ERR_LIB_ASN1, ERR_R_MALLOC_FAILURE); 31 return NULL; 32 } 33 ret->scan_cb = scan_cb; 34 return ret; 35 } 36 ASN1_SCTX_free(ASN1_SCTX * p)37void ASN1_SCTX_free(ASN1_SCTX *p) 38 { 39 OPENSSL_free(p); 40 } 41 ASN1_SCTX_get_item(ASN1_SCTX * p)42const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p) 43 { 44 return p->it; 45 } 46 ASN1_SCTX_get_template(ASN1_SCTX * p)47const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p) 48 { 49 return p->tt; 50 } 51 ASN1_SCTX_get_flags(ASN1_SCTX * p)52unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p) 53 { 54 return p->flags; 55 } 56 ASN1_SCTX_set_app_data(ASN1_SCTX * p,void * data)57void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data) 58 { 59 p->app_data = data; 60 } 61 ASN1_SCTX_get_app_data(ASN1_SCTX * p)62void *ASN1_SCTX_get_app_data(ASN1_SCTX *p) 63 { 64 return p->app_data; 65 } 66