Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: openssl/crypto/asn1/asn1t.h

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/asn1/asn1_par.c ('k') | openssl/crypto/asn1/asn_mime.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* asn1t.h */ 1 /* asn1t.h */
2 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
5 /* ==================================================================== 5 /* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
11 * 11 *
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 14 *
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in 16 * notice, this list of conditions and the following disclaimer in
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 ASN1_ITEM_start(tname) \ 211 ASN1_ITEM_start(tname) \
212 ASN1_ITYPE_SEQUENCE,\ 212 ASN1_ITYPE_SEQUENCE,\
213 V_ASN1_SEQUENCE,\ 213 V_ASN1_SEQUENCE,\
214 tname##_seq_tt,\ 214 tname##_seq_tt,\
215 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ 215 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
216 &tname##_aux,\ 216 &tname##_aux,\
217 sizeof(stname),\ 217 sizeof(stname),\
218 #stname \ 218 #stname \
219 ASN1_ITEM_end(tname) 219 ASN1_ITEM_end(tname)
220 220
221 #define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
222 ;\
223 ASN1_ITEM_start(tname) \
224 ASN1_ITYPE_NDEF_SEQUENCE,\
225 V_ASN1_SEQUENCE,\
226 tname##_seq_tt,\
227 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
228 &tname##_aux,\
229 sizeof(stname),\
230 #stname \
231 ASN1_ITEM_end(tname)
232
221 233
222 /* This pair helps declare a CHOICE type. We can do: 234 /* This pair helps declare a CHOICE type. We can do:
223 * 235 *
224 * ASN1_CHOICE(chname) = { 236 * ASN1_CHOICE(chname) = {
225 * ... CHOICE options ... 237 * ... CHOICE options ...
226 * ASN1_CHOICE_END(chname) 238 * ASN1_CHOICE_END(chname)
227 * 239 *
228 * This will produce an ASN1_ITEM called chname_it 240 * This will produce an ASN1_ITEM called chname_it
229 * for a structure called chname. The structure 241 * for a structure called chname. The structure
230 * definition must look like this: 242 * definition must look like this:
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 typedef ASN1_VALUE * ASN1_d2i_func(ASN1_VALUE **a, const unsigned char ** in, lo ng length); 656 typedef ASN1_VALUE * ASN1_d2i_func(ASN1_VALUE **a, const unsigned char ** in, lo ng length);
645 typedef int ASN1_i2d_func(ASN1_VALUE * a, unsigned char **in); 657 typedef int ASN1_i2d_func(ASN1_VALUE * a, unsigned char **in);
646 658
647 typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, c onst ASN1_ITEM *it, 659 typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, c onst ASN1_ITEM *it,
648 int tag, int aclass, char opt, ASN1_TLC *ctx); 660 int tag, int aclass, char opt, ASN1_TLC *ctx);
649 661
650 typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass); 662 typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass);
651 typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); 663 typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
652 typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); 664 typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
653 665
666 typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval,
667 int indent, const char *fname,
668 const ASN1_PCTX *pctx);
669
654 typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *puty pe, const ASN1_ITEM *it); 670 typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *puty pe, const ASN1_ITEM *it);
655 typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it); 671 typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
672 typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *i t, int indent, const ASN1_PCTX *pctx);
656 673
657 typedef struct ASN1_COMPAT_FUNCS_st { 674 typedef struct ASN1_COMPAT_FUNCS_st {
658 ASN1_new_func *asn1_new; 675 ASN1_new_func *asn1_new;
659 ASN1_free_func *asn1_free; 676 ASN1_free_func *asn1_free;
660 ASN1_d2i_func *asn1_d2i; 677 ASN1_d2i_func *asn1_d2i;
661 ASN1_i2d_func *asn1_i2d; 678 ASN1_i2d_func *asn1_i2d;
662 } ASN1_COMPAT_FUNCS; 679 } ASN1_COMPAT_FUNCS;
663 680
664 typedef struct ASN1_EXTERN_FUNCS_st { 681 typedef struct ASN1_EXTERN_FUNCS_st {
665 void *app_data; 682 void *app_data;
666 ASN1_ex_new_func *asn1_ex_new; 683 ASN1_ex_new_func *asn1_ex_new;
667 ASN1_ex_free_func *asn1_ex_free; 684 ASN1_ex_free_func *asn1_ex_free;
668 ASN1_ex_free_func *asn1_ex_clear; 685 ASN1_ex_free_func *asn1_ex_clear;
669 ASN1_ex_d2i *asn1_ex_d2i; 686 ASN1_ex_d2i *asn1_ex_d2i;
670 ASN1_ex_i2d *asn1_ex_i2d; 687 ASN1_ex_i2d *asn1_ex_i2d;
688 ASN1_ex_print_func *asn1_ex_print;
671 } ASN1_EXTERN_FUNCS; 689 } ASN1_EXTERN_FUNCS;
672 690
673 typedef struct ASN1_PRIMITIVE_FUNCS_st { 691 typedef struct ASN1_PRIMITIVE_FUNCS_st {
674 void *app_data; 692 void *app_data;
675 unsigned long flags; 693 unsigned long flags;
676 ASN1_ex_new_func *prim_new; 694 ASN1_ex_new_func *prim_new;
677 ASN1_ex_free_func *prim_free; 695 ASN1_ex_free_func *prim_free;
678 ASN1_ex_free_func *prim_clear; 696 ASN1_ex_free_func *prim_clear;
679 ASN1_primitive_c2i *prim_c2i; 697 ASN1_primitive_c2i *prim_c2i;
680 ASN1_primitive_i2c *prim_i2c; 698 ASN1_primitive_i2c *prim_i2c;
699 ASN1_primitive_print *prim_print;
681 } ASN1_PRIMITIVE_FUNCS; 700 } ASN1_PRIMITIVE_FUNCS;
682 701
683 /* This is the ASN1_AUX structure: it handles various 702 /* This is the ASN1_AUX structure: it handles various
684 * miscellaneous requirements. For example the use of 703 * miscellaneous requirements. For example the use of
685 * reference counts and an informational callback. 704 * reference counts and an informational callback.
686 * 705 *
687 * The "informational callback" is called at various 706 * The "informational callback" is called at various
688 * points during the ASN1 encoding and decoding. It can 707 * points during the ASN1 encoding and decoding. It can
689 * be used to provide minor customisation of the structures 708 * be used to provide minor customisation of the structures
690 * used. This is most useful where the supplied routines 709 * used. This is most useful where the supplied routines
691 * *almost* do the right thing but need some extra help 710 * *almost* do the right thing but need some extra help
692 * at a few points. If the callback returns zero then 711 * at a few points. If the callback returns zero then
693 * it is assumed a fatal error has occurred and the 712 * it is assumed a fatal error has occurred and the
694 * main operation should be abandoned. 713 * main operation should be abandoned.
695 * 714 *
696 * If major changes in the default behaviour are required 715 * If major changes in the default behaviour are required
697 * then an external type is more appropriate. 716 * then an external type is more appropriate.
698 */ 717 */
699 718
700 typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it); 719 typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
720 » » » » void *exarg);
701 721
702 typedef struct ASN1_AUX_st { 722 typedef struct ASN1_AUX_st {
703 void *app_data; 723 void *app_data;
704 int flags; 724 int flags;
705 int ref_offset; /* Offset of reference value */ 725 int ref_offset; /* Offset of reference value */
706 int ref_lock; /* Lock type to use */ 726 int ref_lock; /* Lock type to use */
707 ASN1_aux_cb *asn1_cb; 727 ASN1_aux_cb *asn1_cb;
708 int enc_offset; /* Offset of ASN1_ENCODING structure */ 728 int enc_offset; /* Offset of ASN1_ENCODING structure */
709 } ASN1_AUX; 729 } ASN1_AUX;
710 730
731 /* For print related callbacks exarg points to this structure */
732 typedef struct ASN1_PRINT_ARG_st {
733 BIO *out;
734 int indent;
735 const ASN1_PCTX *pctx;
736 } ASN1_PRINT_ARG;
737
738 /* For streaming related callbacks exarg points to this structure */
739 typedef struct ASN1_STREAM_ARG_st {
740 /* BIO to stream through */
741 BIO *out;
742 /* BIO with filters appended */
743 BIO *ndef_bio;
744 /* Streaming I/O boundary */
745 unsigned char **boundary;
746 } ASN1_STREAM_ARG;
747
711 /* Flags in ASN1_AUX */ 748 /* Flags in ASN1_AUX */
712 749
713 /* Use a reference count */ 750 /* Use a reference count */
714 #define ASN1_AFLG_REFCOUNT 1 751 #define ASN1_AFLG_REFCOUNT 1
715 /* Save the encoding of structure (useful for signatures) */ 752 /* Save the encoding of structure (useful for signatures) */
716 #define ASN1_AFLG_ENCODING 2 753 #define ASN1_AFLG_ENCODING 2
717 /* The Sequence length is invalid */ 754 /* The Sequence length is invalid */
718 #define ASN1_AFLG_BROKEN 4 755 #define ASN1_AFLG_BROKEN 4
719 756
720 /* operation values for asn1_cb */ 757 /* operation values for asn1_cb */
721 758
722 #define ASN1_OP_NEW_PRE 0 759 #define ASN1_OP_NEW_PRE 0
723 #define ASN1_OP_NEW_POST 1 760 #define ASN1_OP_NEW_POST 1
724 #define ASN1_OP_FREE_PRE 2 761 #define ASN1_OP_FREE_PRE 2
725 #define ASN1_OP_FREE_POST 3 762 #define ASN1_OP_FREE_POST 3
726 #define ASN1_OP_D2I_PRE 4 763 #define ASN1_OP_D2I_PRE 4
727 #define ASN1_OP_D2I_POST 5 764 #define ASN1_OP_D2I_POST 5
728 #define ASN1_OP_I2D_PRE 6 765 #define ASN1_OP_I2D_PRE 6
729 #define ASN1_OP_I2D_POST 7 766 #define ASN1_OP_I2D_POST 7
767 #define ASN1_OP_PRINT_PRE 8
768 #define ASN1_OP_PRINT_POST 9
769 #define ASN1_OP_STREAM_PRE 10
770 #define ASN1_OP_STREAM_POST 11
771 #define ASN1_OP_DETACHED_PRE 12
772 #define ASN1_OP_DETACHED_POST 13
730 773
731 /* Macro to implement a primitive type */ 774 /* Macro to implement a primitive type */
732 #define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) 775 #define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
733 #define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ 776 #define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
734 ASN1_ITEM_start(itname) \ 777 ASN1_ITEM_start(itname) \
735 ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0 , NULL, ex, #itname \ 778 ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0 , NULL, ex, #itname \
736 ASN1_ITEM_end(itname) 779 ASN1_ITEM_end(itname)
737 780
738 /* Macro to implement a multi string type */ 781 /* Macro to implement a multi string type */
739 #define IMPLEMENT_ASN1_MSTRING(itname, mask) \ 782 #define IMPLEMENT_ASN1_MSTRING(itname, mask) \
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 818
776 /* Macro to implement standard functions in terms of ASN1_ITEM structures */ 819 /* Macro to implement standard functions in terms of ASN1_ITEM structures */
777 820
778 #define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) 821 #define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
779 822
780 #define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_f name(stname, itname, itname) 823 #define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_f name(stname, itname, itname)
781 824
782 #define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ 825 #define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
783 IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, it name) 826 IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, it name)
784 827
828 #define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
829 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, st name)
830
785 #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ 831 #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
786 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) 832 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
787 833
834 #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
835 pre stname *fname##_new(void) \
836 { \
837 return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
838 } \
839 pre void fname##_free(stname *a) \
840 { \
841 ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
842 }
843
788 #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ 844 #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
789 stname *fname##_new(void) \ 845 stname *fname##_new(void) \
790 { \ 846 { \
791 return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ 847 return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
792 } \ 848 } \
793 void fname##_free(stname *a) \ 849 void fname##_free(stname *a) \
794 { \ 850 { \
795 ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ 851 ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
796 } 852 }
797 853
(...skipping 29 matching lines...) Expand all
827 { \ 883 { \
828 return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname ));\ 884 return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname ));\
829 } 885 }
830 886
831 #define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ 887 #define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
832 stname * stname##_dup(stname *x) \ 888 stname * stname##_dup(stname *x) \
833 { \ 889 { \
834 return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ 890 return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
835 } 891 }
836 892
893 #define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
894 IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
895
896 #define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
897 int fname##_print_ctx(BIO *out, stname *x, int indent, \
898 const ASN1_PCTX *pctx) \
899 { \
900 return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \
901 ASN1_ITEM_rptr(itname), pctx); \
902 }
903
837 #define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ 904 #define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
838 IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) 905 IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
839 906
840 #define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \ 907 #define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \
841 IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ 908 IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
842 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) 909 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
843 910
844 /* external definitions for primitive types */ 911 /* external definitions for primitive types */
845 912
846 DECLARE_ASN1_ITEM(ASN1_BOOLEAN) 913 DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 951
885 void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it); 952 void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
886 void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it); 953 void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
887 int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, const ASN 1_ITEM *it); 954 int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, const ASN 1_ITEM *it);
888 int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen, const A SN1_ITEM *it); 955 int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen, const A SN1_ITEM *it);
889 956
890 #ifdef __cplusplus 957 #ifdef __cplusplus
891 } 958 }
892 #endif 959 #endif
893 #endif 960 #endif
OLDNEW
« no previous file with comments | « openssl/crypto/asn1/asn1_par.c ('k') | openssl/crypto/asn1/asn_mime.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698