OLD | NEW |
1 /* v3_pmaps.c */ | 1 /* v3_pmaps.c */ |
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. | 3 * project. |
4 */ | 4 */ |
5 /* ==================================================================== | 5 /* ==================================================================== |
6 * Copyright (c) 2003 The OpenSSL Project. All rights reserved. | 6 * Copyright (c) 2003 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: |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 * | 56 * |
57 */ | 57 */ |
58 | 58 |
59 | 59 |
60 #include <stdio.h> | 60 #include <stdio.h> |
61 #include "cryptlib.h" | 61 #include "cryptlib.h" |
62 #include <openssl/asn1t.h> | 62 #include <openssl/asn1t.h> |
63 #include <openssl/conf.h> | 63 #include <openssl/conf.h> |
64 #include <openssl/x509v3.h> | 64 #include <openssl/x509v3.h> |
65 | 65 |
66 static void *v2i_POLICY_MAPPINGS(X509V3_EXT_METHOD *method, | 66 static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, |
67 » » » » X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); | 67 » » » » X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
68 static STACK_OF(CONF_VALUE) *i2v_POLICY_MAPPINGS(X509V3_EXT_METHOD *method, | 68 static STACK_OF(CONF_VALUE) * |
69 » » » » void *pmps, STACK_OF(CONF_VALUE) *extlist); | 69 i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *pmps, |
| 70 » » STACK_OF(CONF_VALUE) *extlist); |
70 | 71 |
71 const X509V3_EXT_METHOD v3_policy_mappings = { | 72 const X509V3_EXT_METHOD v3_policy_mappings = { |
72 NID_policy_mappings, 0, | 73 NID_policy_mappings, 0, |
73 ASN1_ITEM_ref(POLICY_MAPPINGS), | 74 ASN1_ITEM_ref(POLICY_MAPPINGS), |
74 0,0,0,0, | 75 0,0,0,0, |
75 0,0, | 76 0,0, |
76 i2v_POLICY_MAPPINGS, | 77 i2v_POLICY_MAPPINGS, |
77 v2i_POLICY_MAPPINGS, | 78 v2i_POLICY_MAPPINGS, |
78 0,0, | 79 0,0, |
79 NULL | 80 NULL |
80 }; | 81 }; |
81 | 82 |
82 ASN1_SEQUENCE(POLICY_MAPPING) = { | 83 ASN1_SEQUENCE(POLICY_MAPPING) = { |
83 ASN1_SIMPLE(POLICY_MAPPING, issuerDomainPolicy, ASN1_OBJECT), | 84 ASN1_SIMPLE(POLICY_MAPPING, issuerDomainPolicy, ASN1_OBJECT), |
84 ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT) | 85 ASN1_SIMPLE(POLICY_MAPPING, subjectDomainPolicy, ASN1_OBJECT) |
85 } ASN1_SEQUENCE_END(POLICY_MAPPING) | 86 } ASN1_SEQUENCE_END(POLICY_MAPPING) |
86 | 87 |
87 ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) = | 88 ASN1_ITEM_TEMPLATE(POLICY_MAPPINGS) = |
88 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS, | 89 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, POLICY_MAPPINGS, |
89 POLICY_MAPPING) | 90 POLICY_MAPPING) |
90 ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS) | 91 ASN1_ITEM_TEMPLATE_END(POLICY_MAPPINGS) |
91 | 92 |
92 IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) | 93 IMPLEMENT_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) |
93 | 94 |
94 | 95 |
95 static STACK_OF(CONF_VALUE) *i2v_POLICY_MAPPINGS(X509V3_EXT_METHOD *method, | 96 static STACK_OF(CONF_VALUE) * |
96 » » void *a, STACK_OF(CONF_VALUE) *ext_list) | 97 i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *a, |
| 98 » » STACK_OF(CONF_VALUE) *ext_list) |
97 { | 99 { |
98 POLICY_MAPPINGS *pmaps = a; | 100 POLICY_MAPPINGS *pmaps = a; |
99 POLICY_MAPPING *pmap; | 101 POLICY_MAPPING *pmap; |
100 int i; | 102 int i; |
101 char obj_tmp1[80]; | 103 char obj_tmp1[80]; |
102 char obj_tmp2[80]; | 104 char obj_tmp2[80]; |
103 for(i = 0; i < sk_POLICY_MAPPING_num(pmaps); i++) { | 105 for(i = 0; i < sk_POLICY_MAPPING_num(pmaps); i++) { |
104 pmap = sk_POLICY_MAPPING_value(pmaps, i); | 106 pmap = sk_POLICY_MAPPING_value(pmaps, i); |
105 i2t_ASN1_OBJECT(obj_tmp1, 80, pmap->issuerDomainPolicy); | 107 i2t_ASN1_OBJECT(obj_tmp1, 80, pmap->issuerDomainPolicy); |
106 i2t_ASN1_OBJECT(obj_tmp2, 80, pmap->subjectDomainPolicy); | 108 i2t_ASN1_OBJECT(obj_tmp2, 80, pmap->subjectDomainPolicy); |
107 X509V3_add_value(obj_tmp1, obj_tmp2, &ext_list); | 109 X509V3_add_value(obj_tmp1, obj_tmp2, &ext_list); |
108 } | 110 } |
109 return ext_list; | 111 return ext_list; |
110 } | 112 } |
111 | 113 |
112 static void *v2i_POLICY_MAPPINGS(X509V3_EXT_METHOD *method, | 114 static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, |
113 » » » » X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) | 115 » » » » X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) |
114 { | 116 { |
115 POLICY_MAPPINGS *pmaps; | 117 POLICY_MAPPINGS *pmaps; |
116 POLICY_MAPPING *pmap; | 118 POLICY_MAPPING *pmap; |
117 ASN1_OBJECT *obj1, *obj2; | 119 ASN1_OBJECT *obj1, *obj2; |
118 CONF_VALUE *val; | 120 CONF_VALUE *val; |
119 int i; | 121 int i; |
120 | 122 |
121 if(!(pmaps = sk_POLICY_MAPPING_new_null())) { | 123 if(!(pmaps = sk_POLICY_MAPPING_new_null())) { |
122 X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,ERR_R_MALLOC_FAILURE); | 124 X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,ERR_R_MALLOC_FAILURE); |
123 return NULL; | 125 return NULL; |
(...skipping 20 matching lines...) Expand all Loading... |
144 sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); | 146 sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free); |
145 X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,ERR_R_MALLOC_FAIL
URE); | 147 X509V3err(X509V3_F_V2I_POLICY_MAPPINGS,ERR_R_MALLOC_FAIL
URE); |
146 return NULL; | 148 return NULL; |
147 } | 149 } |
148 pmap->issuerDomainPolicy = obj1; | 150 pmap->issuerDomainPolicy = obj1; |
149 pmap->subjectDomainPolicy = obj2; | 151 pmap->subjectDomainPolicy = obj2; |
150 sk_POLICY_MAPPING_push(pmaps, pmap); | 152 sk_POLICY_MAPPING_push(pmaps, pmap); |
151 } | 153 } |
152 return pmaps; | 154 return pmaps; |
153 } | 155 } |
OLD | NEW |