tasn_scn.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #include <stddef.h>
  10. #include "internal/cryptlib.h"
  11. #include <openssl/asn1.h>
  12. #include <openssl/asn1t.h>
  13. #include <openssl/objects.h>
  14. #include <openssl/buffer.h>
  15. #include <openssl/err.h>
  16. #include <openssl/x509v3.h>
  17. #include "asn1_local.h"
  18. /*
  19. * General ASN1 structure recursive scanner: iterate through all fields
  20. * passing details to a callback.
  21. */
  22. ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx))
  23. {
  24. ASN1_SCTX *ret = OPENSSL_zalloc(sizeof(*ret));
  25. if (ret == NULL) {
  26. ERR_raise(ERR_LIB_ASN1, ERR_R_MALLOC_FAILURE);
  27. return NULL;
  28. }
  29. ret->scan_cb = scan_cb;
  30. return ret;
  31. }
  32. void ASN1_SCTX_free(ASN1_SCTX *p)
  33. {
  34. OPENSSL_free(p);
  35. }
  36. const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p)
  37. {
  38. return p->it;
  39. }
  40. const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p)
  41. {
  42. return p->tt;
  43. }
  44. unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p)
  45. {
  46. return p->flags;
  47. }
  48. void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data)
  49. {
  50. p->app_data = data;
  51. }
  52. void *ASN1_SCTX_get_app_data(ASN1_SCTX *p)
  53. {
  54. return p->app_data;
  55. }