v3_sxnet.c (55714) | v3_sxnet.c (59191) |
---|---|
1/* v3_sxnet.c */ 2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL 3 * project 1999. 4 */ 5/* ==================================================================== 6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 97 unchanged lines hidden (view full) --- 106 M_ASN1_I2D_finish(); 107} 108 109SXNET *SXNET_new(void) 110{ 111 SXNET *ret=NULL; 112 ASN1_CTX c; 113 M_ASN1_New_Malloc(ret, SXNET); | 1/* v3_sxnet.c */ 2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL 3 * project 1999. 4 */ 5/* ==================================================================== 6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 97 unchanged lines hidden (view full) --- 106 M_ASN1_I2D_finish(); 107} 108 109SXNET *SXNET_new(void) 110{ 111 SXNET *ret=NULL; 112 ASN1_CTX c; 113 M_ASN1_New_Malloc(ret, SXNET); |
114 M_ASN1_New(ret->version,ASN1_INTEGER_new); | 114 M_ASN1_New(ret->version,M_ASN1_INTEGER_new); |
115 M_ASN1_New(ret->ids,sk_SXNETID_new_null); 116 return (ret); 117 M_ASN1_New_Error(ASN1_F_SXNET_NEW); 118} 119 120SXNET *d2i_SXNET(SXNET **a, unsigned char **pp, long length) 121{ 122 M_ASN1_D2I_vars(a,SXNET *,SXNET_new); 123 M_ASN1_D2I_Init(); 124 M_ASN1_D2I_start_sequence(); 125 M_ASN1_D2I_get (ret->version, d2i_ASN1_INTEGER); 126 M_ASN1_D2I_get_seq_type (SXNETID, ret->ids, d2i_SXNETID, SXNETID_free); 127 M_ASN1_D2I_Finish(a, SXNET_free, ASN1_F_D2I_SXNET); 128} 129 130void SXNET_free(SXNET *a) 131{ 132 if (a == NULL) return; | 115 M_ASN1_New(ret->ids,sk_SXNETID_new_null); 116 return (ret); 117 M_ASN1_New_Error(ASN1_F_SXNET_NEW); 118} 119 120SXNET *d2i_SXNET(SXNET **a, unsigned char **pp, long length) 121{ 122 M_ASN1_D2I_vars(a,SXNET *,SXNET_new); 123 M_ASN1_D2I_Init(); 124 M_ASN1_D2I_start_sequence(); 125 M_ASN1_D2I_get (ret->version, d2i_ASN1_INTEGER); 126 M_ASN1_D2I_get_seq_type (SXNETID, ret->ids, d2i_SXNETID, SXNETID_free); 127 M_ASN1_D2I_Finish(a, SXNET_free, ASN1_F_D2I_SXNET); 128} 129 130void SXNET_free(SXNET *a) 131{ 132 if (a == NULL) return; |
133 ASN1_INTEGER_free(a->version); | 133 M_ASN1_INTEGER_free(a->version); |
134 sk_SXNETID_pop_free(a->ids, SXNETID_free); 135 Free (a); 136} 137 138int i2d_SXNETID(SXNETID *a, unsigned char **pp) 139{ 140 M_ASN1_I2D_vars(a); 141 --- 9 unchanged lines hidden (view full) --- 151} 152 153SXNETID *SXNETID_new(void) 154{ 155 SXNETID *ret=NULL; 156 ASN1_CTX c; 157 M_ASN1_New_Malloc(ret, SXNETID); 158 ret->zone = NULL; | 134 sk_SXNETID_pop_free(a->ids, SXNETID_free); 135 Free (a); 136} 137 138int i2d_SXNETID(SXNETID *a, unsigned char **pp) 139{ 140 M_ASN1_I2D_vars(a); 141 --- 9 unchanged lines hidden (view full) --- 151} 152 153SXNETID *SXNETID_new(void) 154{ 155 SXNETID *ret=NULL; 156 ASN1_CTX c; 157 M_ASN1_New_Malloc(ret, SXNETID); 158 ret->zone = NULL; |
159 M_ASN1_New(ret->user,ASN1_OCTET_STRING_new); | 159 M_ASN1_New(ret->user,M_ASN1_OCTET_STRING_new); |
160 return (ret); 161 M_ASN1_New_Error(ASN1_F_SXNETID_NEW); 162} 163 164SXNETID *d2i_SXNETID(SXNETID **a, unsigned char **pp, long length) 165{ 166 M_ASN1_D2I_vars(a,SXNETID *,SXNETID_new); 167 M_ASN1_D2I_Init(); 168 M_ASN1_D2I_start_sequence(); 169 M_ASN1_D2I_get(ret->zone, d2i_ASN1_INTEGER); 170 M_ASN1_D2I_get(ret->user, d2i_ASN1_OCTET_STRING); 171 M_ASN1_D2I_Finish(a, SXNETID_free, ASN1_F_D2I_SXNETID); 172} 173 174void SXNETID_free(SXNETID *a) 175{ 176 if (a == NULL) return; | 160 return (ret); 161 M_ASN1_New_Error(ASN1_F_SXNETID_NEW); 162} 163 164SXNETID *d2i_SXNETID(SXNETID **a, unsigned char **pp, long length) 165{ 166 M_ASN1_D2I_vars(a,SXNETID *,SXNETID_new); 167 M_ASN1_D2I_Init(); 168 M_ASN1_D2I_start_sequence(); 169 M_ASN1_D2I_get(ret->zone, d2i_ASN1_INTEGER); 170 M_ASN1_D2I_get(ret->user, d2i_ASN1_OCTET_STRING); 171 M_ASN1_D2I_Finish(a, SXNETID_free, ASN1_F_D2I_SXNETID); 172} 173 174void SXNETID_free(SXNETID *a) 175{ 176 if (a == NULL) return; |
177 ASN1_INTEGER_free(a->zone); 178 ASN1_OCTET_STRING_free(a->user); | 177 M_ASN1_INTEGER_free(a->zone); 178 M_ASN1_OCTET_STRING_free(a->user); |
179 Free (a); 180} 181 182static int sxnet_i2r(X509V3_EXT_METHOD *method, SXNET *sx, BIO *out, 183 int indent) 184{ 185 long v; 186 char *tmp; 187 SXNETID *id; 188 int i; 189 v = ASN1_INTEGER_get(sx->version); 190 BIO_printf(out, "%*sVersion: %d (0x%X)", indent, "", v + 1, v); 191 for(i = 0; i < sk_SXNETID_num(sx->ids); i++) { 192 id = sk_SXNETID_value(sx->ids, i); 193 tmp = i2s_ASN1_INTEGER(NULL, id->zone); 194 BIO_printf(out, "\n%*sZone: %s, User: ", indent, "", tmp); 195 Free(tmp); | 179 Free (a); 180} 181 182static int sxnet_i2r(X509V3_EXT_METHOD *method, SXNET *sx, BIO *out, 183 int indent) 184{ 185 long v; 186 char *tmp; 187 SXNETID *id; 188 int i; 189 v = ASN1_INTEGER_get(sx->version); 190 BIO_printf(out, "%*sVersion: %d (0x%X)", indent, "", v + 1, v); 191 for(i = 0; i < sk_SXNETID_num(sx->ids); i++) { 192 id = sk_SXNETID_value(sx->ids, i); 193 tmp = i2s_ASN1_INTEGER(NULL, id->zone); 194 BIO_printf(out, "\n%*sZone: %s, User: ", indent, "", tmp); 195 Free(tmp); |
196 ASN1_OCTET_STRING_print(out, id->user); | 196 M_ASN1_OCTET_STRING_print(out, id->user); |
197 } 198 return 1; 199} 200 201#ifdef SXNET_TEST 202 203/* NBB: this is used for testing only. It should *not* be used for anything 204 * else because it will just take static IDs from the configuration file and --- 34 unchanged lines hidden (view full) --- 239} 240 241/* Add an id given the zone as an unsigned long */ 242 243int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, 244 int userlen) 245{ 246 ASN1_INTEGER *izone = NULL; | 197 } 198 return 1; 199} 200 201#ifdef SXNET_TEST 202 203/* NBB: this is used for testing only. It should *not* be used for anything 204 * else because it will just take static IDs from the configuration file and --- 34 unchanged lines hidden (view full) --- 239} 240 241/* Add an id given the zone as an unsigned long */ 242 243int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, 244 int userlen) 245{ 246 ASN1_INTEGER *izone = NULL; |
247 if(!(izone = ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) { | 247 if(!(izone = M_ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) { |
248 X509V3err(X509V3_F_SXNET_ADD_ID_ULONG,ERR_R_MALLOC_FAILURE); | 248 X509V3err(X509V3_F_SXNET_ADD_ID_ULONG,ERR_R_MALLOC_FAILURE); |
249 ASN1_INTEGER_free(izone); | 249 M_ASN1_INTEGER_free(izone); |
250 return 0; 251 } 252 return SXNET_add_id_INTEGER(psx, izone, user, userlen); 253 254} 255 256/* Add an id given the zone as an ASN1_INTEGER. 257 * Note this version uses the passed integer and doesn't make a copy so don't --- 22 unchanged lines hidden (view full) --- 280 if(SXNET_get_id_INTEGER(sx, zone)) { 281 X509V3err(X509V3_F_SXNET_ADD_ID_INTEGER,X509V3_R_DUPLICATE_ZONE_ID); 282 return 0; 283 } 284 285 if(!(id = SXNETID_new())) goto err; 286 if(userlen == -1) userlen = strlen(user); 287 | 250 return 0; 251 } 252 return SXNET_add_id_INTEGER(psx, izone, user, userlen); 253 254} 255 256/* Add an id given the zone as an ASN1_INTEGER. 257 * Note this version uses the passed integer and doesn't make a copy so don't --- 22 unchanged lines hidden (view full) --- 280 if(SXNET_get_id_INTEGER(sx, zone)) { 281 X509V3err(X509V3_F_SXNET_ADD_ID_INTEGER,X509V3_R_DUPLICATE_ZONE_ID); 282 return 0; 283 } 284 285 if(!(id = SXNETID_new())) goto err; 286 if(userlen == -1) userlen = strlen(user); 287 |
288 if(!ASN1_OCTET_STRING_set(id->user, user, userlen)) goto err; | 288 if(!M_ASN1_OCTET_STRING_set(id->user, user, userlen)) goto err; |
289 if(!sk_SXNETID_push(sx->ids, id)) goto err; 290 id->zone = zone; 291 return 1; 292 293 err: 294 X509V3err(X509V3_F_SXNET_ADD_ID_INTEGER,ERR_R_MALLOC_FAILURE); 295 SXNETID_free(id); 296 SXNET_free(sx); --- 5 unchanged lines hidden (view full) --- 302{ 303 ASN1_INTEGER *izone = NULL; 304 ASN1_OCTET_STRING *oct; 305 if(!(izone = s2i_ASN1_INTEGER(NULL, zone))) { 306 X509V3err(X509V3_F_SXNET_GET_ID_ASC,X509V3_R_ERROR_CONVERTING_ZONE); 307 return NULL; 308 } 309 oct = SXNET_get_id_INTEGER(sx, izone); | 289 if(!sk_SXNETID_push(sx->ids, id)) goto err; 290 id->zone = zone; 291 return 1; 292 293 err: 294 X509V3err(X509V3_F_SXNET_ADD_ID_INTEGER,ERR_R_MALLOC_FAILURE); 295 SXNETID_free(id); 296 SXNET_free(sx); --- 5 unchanged lines hidden (view full) --- 302{ 303 ASN1_INTEGER *izone = NULL; 304 ASN1_OCTET_STRING *oct; 305 if(!(izone = s2i_ASN1_INTEGER(NULL, zone))) { 306 X509V3err(X509V3_F_SXNET_GET_ID_ASC,X509V3_R_ERROR_CONVERTING_ZONE); 307 return NULL; 308 } 309 oct = SXNET_get_id_INTEGER(sx, izone); |
310 ASN1_INTEGER_free(izone); | 310 M_ASN1_INTEGER_free(izone); |
311 return oct; 312} 313 314ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone) 315{ 316 ASN1_INTEGER *izone = NULL; 317 ASN1_OCTET_STRING *oct; | 311 return oct; 312} 313 314ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone) 315{ 316 ASN1_INTEGER *izone = NULL; 317 ASN1_OCTET_STRING *oct; |
318 if(!(izone = ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) { | 318 if(!(izone = M_ASN1_INTEGER_new()) || !ASN1_INTEGER_set(izone, lzone)) { |
319 X509V3err(X509V3_F_SXNET_GET_ID_ULONG,ERR_R_MALLOC_FAILURE); | 319 X509V3err(X509V3_F_SXNET_GET_ID_ULONG,ERR_R_MALLOC_FAILURE); |
320 ASN1_INTEGER_free(izone); | 320 M_ASN1_INTEGER_free(izone); |
321 return NULL; 322 } 323 oct = SXNET_get_id_INTEGER(sx, izone); | 321 return NULL; 322 } 323 oct = SXNET_get_id_INTEGER(sx, izone); |
324 ASN1_INTEGER_free(izone); | 324 M_ASN1_INTEGER_free(izone); |
325 return oct; 326} 327 328ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone) 329{ 330 SXNETID *id; 331 int i; 332 for(i = 0; i < sk_SXNETID_num(sx->ids); i++) { 333 id = sk_SXNETID_value(sx->ids, i); | 325 return oct; 326} 327 328ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone) 329{ 330 SXNETID *id; 331 int i; 332 for(i = 0; i < sk_SXNETID_num(sx->ids); i++) { 333 id = sk_SXNETID_value(sx->ids, i); |
334 if(!ASN1_INTEGER_cmp(id->zone, zone)) return id->user; | 334 if(!M_ASN1_INTEGER_cmp(id->zone, zone)) return id->user; |
335 } 336 return NULL; 337} 338 339IMPLEMENT_STACK_OF(SXNETID) 340IMPLEMENT_ASN1_SET_OF(SXNETID) | 335 } 336 return NULL; 337} 338 339IMPLEMENT_STACK_OF(SXNETID) 340IMPLEMENT_ASN1_SET_OF(SXNETID) |