003 File Manager
Current Path:
/usr/src/crypto/openssl/crypto/asn1
usr
/
src
/
crypto
/
openssl
/
crypto
/
asn1
/
📁
..
📄
a_bitstr.c
(5.34 KB)
📄
a_d2i_fp.c
(6.33 KB)
📄
a_digest.c
(1.52 KB)
📄
a_dup.c
(1.51 KB)
📄
a_gentm.c
(2.12 KB)
📄
a_i2d_fp.c
(2.25 KB)
📄
a_int.c
(16.55 KB)
📄
a_mbstr.c
(9.55 KB)
📄
a_object.c
(10.16 KB)
📄
a_octet.c
(813 B)
📄
a_print.c
(2.14 KB)
📄
a_sign.c
(7.08 KB)
📄
a_strex.c
(17.37 KB)
📄
a_strnid.c
(5.95 KB)
📄
a_time.c
(14.91 KB)
📄
a_type.c
(3.51 KB)
📄
a_utctm.c
(2.23 KB)
📄
a_utf8.c
(5.89 KB)
📄
a_verify.c
(4.92 KB)
📄
ameth_lib.c
(14.51 KB)
📄
asn1_err.c
(18.92 KB)
📄
asn1_gen.c
(22.63 KB)
📄
asn1_item_list.c
(1.06 KB)
📄
asn1_item_list.h
(5.5 KB)
📄
asn1_lib.c
(9.38 KB)
📄
asn1_local.h
(3.27 KB)
📄
asn1_par.c
(13 KB)
📄
asn_mime.c
(27.92 KB)
📄
asn_moid.c
(2.46 KB)
📄
asn_mstbl.c
(3.43 KB)
📄
asn_pack.c
(1.59 KB)
📄
bio_asn1.c
(11.09 KB)
📄
bio_ndef.c
(5.29 KB)
📄
build.info
(837 B)
📄
charmap.h
(1.41 KB)
📄
charmap.pl
(3.58 KB)
📄
d2i_pr.c
(3.64 KB)
📄
d2i_pu.c
(2.01 KB)
📄
evp_asn1.c
(2.89 KB)
📄
f_int.c
(3.94 KB)
📄
f_string.c
(3.44 KB)
📄
i2d_pr.c
(1006 B)
📄
i2d_pu.c
(1.05 KB)
📄
n_pkey.c
(1.89 KB)
📄
nsseq.c
(1.11 KB)
📄
p5_pbe.c
(2.52 KB)
📄
p5_pbev2.c
(6 KB)
📄
p5_scrypt.c
(7.76 KB)
📄
p8_pkey.c
(2.53 KB)
📄
standard_methods.h
(1.35 KB)
📄
t_bitst.c
(1.56 KB)
📄
t_pkey.c
(2.52 KB)
📄
t_spki.c
(1.75 KB)
📄
tasn_dec.c
(36.99 KB)
📄
tasn_enc.c
(18.86 KB)
📄
tasn_fre.c
(5.34 KB)
📄
tasn_new.c
(8.95 KB)
📄
tasn_prn.c
(14.63 KB)
📄
tasn_scn.c
(1.37 KB)
📄
tasn_typ.c
(2.94 KB)
📄
tasn_utl.c
(6.64 KB)
📄
tbl_standard.h
(2.7 KB)
📄
x_algor.c
(3.31 KB)
📄
x_bignum.c
(4.05 KB)
📄
x_info.c
(895 B)
📄
x_int64.c
(7.83 KB)
📄
x_long.c
(5.42 KB)
📄
x_pkey.c
(1.12 KB)
📄
x_sig.c
(1.05 KB)
📄
x_spki.c
(961 B)
📄
x_val.c
(636 B)
Editing: a_strnid.c
/* * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/asn1.h> #include <openssl/objects.h> static STACK_OF(ASN1_STRING_TABLE) *stable = NULL; static void st_free(ASN1_STRING_TABLE *tbl); static int sk_table_cmp(const ASN1_STRING_TABLE *const *a, const ASN1_STRING_TABLE *const *b); /* * This is the global mask for the mbstring functions: this is use to mask * out certain types (such as BMPString and UTF8String) because certain * software (e.g. Netscape) has problems with them. */ static unsigned long global_mask = B_ASN1_UTF8STRING; void ASN1_STRING_set_default_mask(unsigned long mask) { global_mask = mask; } unsigned long ASN1_STRING_get_default_mask(void) { return global_mask; } /*- * This function sets the default to various "flavours" of configuration. * based on an ASCII string. Currently this is: * MASK:XXXX : a numerical mask value. * nobmp : Don't use BMPStrings (just Printable, T61). * pkix : PKIX recommendation in RFC2459. * utf8only : only use UTF8Strings (RFC2459 recommendation for 2004). * default: the default value, Printable, T61, BMP. */ int ASN1_STRING_set_default_mask_asc(const char *p) { unsigned long mask; char *end; if (strncmp(p, "MASK:", 5) == 0) { if (!p[5]) return 0; mask = strtoul(p + 5, &end, 0); if (*end) return 0; } else if (strcmp(p, "nombstr") == 0) mask = ~((unsigned long)(B_ASN1_BMPSTRING | B_ASN1_UTF8STRING)); else if (strcmp(p, "pkix") == 0) mask = ~((unsigned long)B_ASN1_T61STRING); else if (strcmp(p, "utf8only") == 0) mask = B_ASN1_UTF8STRING; else if (strcmp(p, "default") == 0) mask = 0xFFFFFFFFL; else return 0; ASN1_STRING_set_default_mask(mask); return 1; } /* * The following function generates an ASN1_STRING based on limits in a * table. Frequently the types and length of an ASN1_STRING are restricted by * a corresponding OID. For example certificates and certificate requests. */ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in, int inlen, int inform, int nid) { ASN1_STRING_TABLE *tbl; ASN1_STRING *str = NULL; unsigned long mask; int ret; if (out == NULL) out = &str; tbl = ASN1_STRING_TABLE_get(nid); if (tbl != NULL) { mask = tbl->mask; if (!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask; ret = ASN1_mbstring_ncopy(out, in, inlen, inform, mask, tbl->minsize, tbl->maxsize); } else { ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask); } if (ret <= 0) return NULL; return *out; } /* * Now the tables and helper functions for the string table: */ #include "tbl_standard.h" static int sk_table_cmp(const ASN1_STRING_TABLE *const *a, const ASN1_STRING_TABLE *const *b) { return (*a)->nid - (*b)->nid; } DECLARE_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table); static int table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b) { return a->nid - b->nid; } IMPLEMENT_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table); ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid) { int idx; ASN1_STRING_TABLE fnd; fnd.nid = nid; if (stable) { idx = sk_ASN1_STRING_TABLE_find(stable, &fnd); if (idx >= 0) return sk_ASN1_STRING_TABLE_value(stable, idx); } return OBJ_bsearch_table(&fnd, tbl_standard, OSSL_NELEM(tbl_standard)); } /* * Return a string table pointer which can be modified: either directly from * table or a copy of an internal value added to the table. */ static ASN1_STRING_TABLE *stable_get(int nid) { ASN1_STRING_TABLE *tmp, *rv; /* Always need a string table so allocate one if NULL */ if (stable == NULL) { stable = sk_ASN1_STRING_TABLE_new(sk_table_cmp); if (stable == NULL) return NULL; } tmp = ASN1_STRING_TABLE_get(nid); if (tmp != NULL && tmp->flags & STABLE_FLAGS_MALLOC) return tmp; if ((rv = OPENSSL_zalloc(sizeof(*rv))) == NULL) { ASN1err(ASN1_F_STABLE_GET, ERR_R_MALLOC_FAILURE); return NULL; } if (!sk_ASN1_STRING_TABLE_push(stable, rv)) { OPENSSL_free(rv); return NULL; } if (tmp != NULL) { rv->nid = tmp->nid; rv->minsize = tmp->minsize; rv->maxsize = tmp->maxsize; rv->mask = tmp->mask; rv->flags = tmp->flags | STABLE_FLAGS_MALLOC; } else { rv->nid = nid; rv->minsize = -1; rv->maxsize = -1; rv->flags = STABLE_FLAGS_MALLOC; } return rv; } int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize, unsigned long mask, unsigned long flags) { ASN1_STRING_TABLE *tmp; tmp = stable_get(nid); if (tmp == NULL) { ASN1err(ASN1_F_ASN1_STRING_TABLE_ADD, ERR_R_MALLOC_FAILURE); return 0; } if (minsize >= 0) tmp->minsize = minsize; if (maxsize >= 0) tmp->maxsize = maxsize; if (mask) tmp->mask = mask; if (flags) tmp->flags = STABLE_FLAGS_MALLOC | flags; return 1; } void ASN1_STRING_TABLE_cleanup(void) { STACK_OF(ASN1_STRING_TABLE) *tmp; tmp = stable; if (tmp == NULL) return; stable = NULL; sk_ASN1_STRING_TABLE_pop_free(tmp, st_free); } static void st_free(ASN1_STRING_TABLE *tbl) { if (tbl->flags & STABLE_FLAGS_MALLOC) OPENSSL_free(tbl); }
Upload File
Create Folder