This commit is contained in:
Zhi Guan
2015-08-15 15:02:15 +08:00
parent 06df2fab54
commit 3bdc0ea895
2536 changed files with 417052 additions and 271997 deletions

View File

@@ -74,6 +74,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
update: obj_dat.h obj_mac.h obj_xref.h depend
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)

View File

View File

@@ -8,7 +8,8 @@
#include <openssl/safestack.h>
#include <openssl/e_os2.h>
/* Later versions of DEC C has started to add lnkage information to certain
/*
* Later versions of DEC C has started to add lnkage information to certain
* functions, which makes it tricky to use them as values to regular function
* pointers. One way is to define a macro that takes care of casting them
* correctly.
@@ -19,354 +20,347 @@
# define OPENSSL_strcmp strcmp
#endif
/* I use the ex_data stuff to manage the identifiers for the obj_name_types
/*
* I use the ex_data stuff to manage the identifiers for the obj_name_types
* that applications may define. I only really use the free function field.
*/
DECLARE_LHASH_OF(OBJ_NAME);
static LHASH_OF(OBJ_NAME) *names_lh=NULL;
static int names_type_num=OBJ_NAME_TYPE_NUM;
static LHASH_OF(OBJ_NAME) *names_lh = NULL;
static int names_type_num = OBJ_NAME_TYPE_NUM;
typedef struct name_funcs_st
{
unsigned long (*hash_func)(const char *name);
int (*cmp_func)(const char *a,const char *b);
void (*free_func)(const char *, int, const char *);
} NAME_FUNCS;
typedef struct name_funcs_st {
unsigned long (*hash_func) (const char *name);
int (*cmp_func) (const char *a, const char *b);
void (*free_func) (const char *, int, const char *);
} NAME_FUNCS;
DECLARE_STACK_OF(NAME_FUNCS)
IMPLEMENT_STACK_OF(NAME_FUNCS)
static STACK_OF(NAME_FUNCS) *name_funcs_stack;
/* The LHASH callbacks now use the raw "void *" prototypes and do per-variable
* casting in the functions. This prevents function pointer casting without the
* need for macro-generated wrapper functions. */
/*
* The LHASH callbacks now use the raw "void *" prototypes and do
* per-variable casting in the functions. This prevents function pointer
* casting without the need for macro-generated wrapper functions.
*/
/* static unsigned long obj_name_hash(OBJ_NAME *a); */
static unsigned long obj_name_hash(const void *a_void);
/* static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); */
static int obj_name_cmp(const void *a_void,const void *b_void);
static int obj_name_cmp(const void *a_void, const void *b_void);
static IMPLEMENT_LHASH_HASH_FN(obj_name, OBJ_NAME)
static IMPLEMENT_LHASH_COMP_FN(obj_name, OBJ_NAME)
int OBJ_NAME_init(void)
{
if (names_lh != NULL) return(1);
MemCheck_off();
names_lh=lh_OBJ_NAME_new();
MemCheck_on();
return(names_lh != NULL);
}
{
if (names_lh != NULL)
return (1);
MemCheck_off();
names_lh = lh_OBJ_NAME_new();
MemCheck_on();
return (names_lh != NULL);
}
int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *),
int (*cmp_func)(const char *, const char *),
void (*free_func)(const char *, int, const char *))
{
int ret;
int i;
NAME_FUNCS *name_funcs;
int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *),
int (*cmp_func) (const char *, const char *),
void (*free_func) (const char *, int, const char *))
{
int ret;
int i;
NAME_FUNCS *name_funcs;
if (name_funcs_stack == NULL)
{
MemCheck_off();
name_funcs_stack=sk_NAME_FUNCS_new_null();
MemCheck_on();
}
if ((name_funcs_stack == NULL))
{
/* ERROR */
return(0);
}
ret=names_type_num;
names_type_num++;
for (i=sk_NAME_FUNCS_num(name_funcs_stack); i<names_type_num; i++)
{
MemCheck_off();
name_funcs = OPENSSL_malloc(sizeof(NAME_FUNCS));
MemCheck_on();
if (!name_funcs)
{
OBJerr(OBJ_F_OBJ_NAME_NEW_INDEX,ERR_R_MALLOC_FAILURE);
return(0);
}
name_funcs->hash_func = lh_strhash;
name_funcs->cmp_func = OPENSSL_strcmp;
name_funcs->free_func = 0; /* NULL is often declared to
* ((void *)0), which according
* to Compaq C is not really
* compatible with a function
* pointer. -- Richard Levitte*/
MemCheck_off();
sk_NAME_FUNCS_push(name_funcs_stack,name_funcs);
MemCheck_on();
}
name_funcs = sk_NAME_FUNCS_value(name_funcs_stack, ret);
if (hash_func != NULL)
name_funcs->hash_func = hash_func;
if (cmp_func != NULL)
name_funcs->cmp_func = cmp_func;
if (free_func != NULL)
name_funcs->free_func = free_func;
return(ret);
}
if (name_funcs_stack == NULL) {
MemCheck_off();
name_funcs_stack = sk_NAME_FUNCS_new_null();
MemCheck_on();
}
if (name_funcs_stack == NULL) {
/* ERROR */
return (0);
}
ret = names_type_num;
names_type_num++;
for (i = sk_NAME_FUNCS_num(name_funcs_stack); i < names_type_num; i++) {
MemCheck_off();
name_funcs = OPENSSL_malloc(sizeof(NAME_FUNCS));
MemCheck_on();
if (!name_funcs) {
OBJerr(OBJ_F_OBJ_NAME_NEW_INDEX, ERR_R_MALLOC_FAILURE);
return (0);
}
name_funcs->hash_func = lh_strhash;
name_funcs->cmp_func = OPENSSL_strcmp;
name_funcs->free_func = 0; /* NULL is often declared to * ((void
* *)0), which according * to Compaq C is
* not really * compatible with a function
* * pointer. -- Richard Levitte */
MemCheck_off();
sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
MemCheck_on();
}
name_funcs = sk_NAME_FUNCS_value(name_funcs_stack, ret);
if (hash_func != NULL)
name_funcs->hash_func = hash_func;
if (cmp_func != NULL)
name_funcs->cmp_func = cmp_func;
if (free_func != NULL)
name_funcs->free_func = free_func;
return (ret);
}
/* static int obj_name_cmp(OBJ_NAME *a, OBJ_NAME *b) */
static int obj_name_cmp(const void *a_void, const void *b_void)
{
int ret;
const OBJ_NAME *a = (const OBJ_NAME *)a_void;
const OBJ_NAME *b = (const OBJ_NAME *)b_void;
{
int ret;
const OBJ_NAME *a = (const OBJ_NAME *)a_void;
const OBJ_NAME *b = (const OBJ_NAME *)b_void;
ret=a->type-b->type;
if (ret == 0)
{
if ((name_funcs_stack != NULL)
&& (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
{
ret=sk_NAME_FUNCS_value(name_funcs_stack,
a->type)->cmp_func(a->name,b->name);
}
else
ret=strcmp(a->name,b->name);
}
return(ret);
}
ret = a->type - b->type;
if (ret == 0) {
if ((name_funcs_stack != NULL)
&& (sk_NAME_FUNCS_num(name_funcs_stack) > a->type)) {
ret = sk_NAME_FUNCS_value(name_funcs_stack,
a->type)->cmp_func(a->name, b->name);
} else
ret = strcmp(a->name, b->name);
}
return (ret);
}
/* static unsigned long obj_name_hash(OBJ_NAME *a) */
static unsigned long obj_name_hash(const void *a_void)
{
unsigned long ret;
const OBJ_NAME *a = (const OBJ_NAME *)a_void;
{
unsigned long ret;
const OBJ_NAME *a = (const OBJ_NAME *)a_void;
if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > a->type))
{
ret=sk_NAME_FUNCS_value(name_funcs_stack,
a->type)->hash_func(a->name);
}
else
{
ret=lh_strhash(a->name);
}
ret^=a->type;
return(ret);
}
if ((name_funcs_stack != NULL)
&& (sk_NAME_FUNCS_num(name_funcs_stack) > a->type)) {
ret =
sk_NAME_FUNCS_value(name_funcs_stack,
a->type)->hash_func(a->name);
} else {
ret = lh_strhash(a->name);
}
ret ^= a->type;
return (ret);
}
const char *OBJ_NAME_get(const char *name, int type)
{
OBJ_NAME on,*ret;
int num=0,alias;
{
OBJ_NAME on, *ret;
int num = 0, alias;
if (name == NULL) return(NULL);
if ((names_lh == NULL) && !OBJ_NAME_init()) return(NULL);
if (name == NULL)
return (NULL);
if ((names_lh == NULL) && !OBJ_NAME_init())
return (NULL);
alias=type&OBJ_NAME_ALIAS;
type&= ~OBJ_NAME_ALIAS;
alias = type & OBJ_NAME_ALIAS;
type &= ~OBJ_NAME_ALIAS;
on.name=name;
on.type=type;
on.name = name;
on.type = type;
for (;;)
{
ret=lh_OBJ_NAME_retrieve(names_lh,&on);
if (ret == NULL) return(NULL);
if ((ret->alias) && !alias)
{
if (++num > 10) return(NULL);
on.name=ret->data;
}
else
{
return(ret->data);
}
}
}
for (;;) {
ret = lh_OBJ_NAME_retrieve(names_lh, &on);
if (ret == NULL)
return (NULL);
if ((ret->alias) && !alias) {
if (++num > 10)
return (NULL);
on.name = ret->data;
} else {
return (ret->data);
}
}
}
int OBJ_NAME_add(const char *name, int type, const char *data)
{
OBJ_NAME *onp,*ret;
int alias;
{
OBJ_NAME *onp, *ret;
int alias;
if ((names_lh == NULL) && !OBJ_NAME_init()) return(0);
if ((names_lh == NULL) && !OBJ_NAME_init())
return (0);
alias=type&OBJ_NAME_ALIAS;
type&= ~OBJ_NAME_ALIAS;
alias = type & OBJ_NAME_ALIAS;
type &= ~OBJ_NAME_ALIAS;
onp=(OBJ_NAME *)OPENSSL_malloc(sizeof(OBJ_NAME));
if (onp == NULL)
{
/* ERROR */
return(0);
}
onp = (OBJ_NAME *)OPENSSL_malloc(sizeof(OBJ_NAME));
if (onp == NULL) {
/* ERROR */
return (0);
}
onp->name=name;
onp->alias=alias;
onp->type=type;
onp->data=data;
onp->name = name;
onp->alias = alias;
onp->type = type;
onp->data = data;
ret=lh_OBJ_NAME_insert(names_lh,onp);
if (ret != NULL)
{
/* free things */
if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
{
/* XXX: I'm not sure I understand why the free
* function should get three arguments...
* -- Richard Levitte
*/
sk_NAME_FUNCS_value(name_funcs_stack,
ret->type)->free_func(ret->name,ret->type,ret->data);
}
OPENSSL_free(ret);
}
else
{
if (lh_OBJ_NAME_error(names_lh))
{
/* ERROR */
return(0);
}
}
return(1);
}
ret = lh_OBJ_NAME_insert(names_lh, onp);
if (ret != NULL) {
/* free things */
if ((name_funcs_stack != NULL)
&& (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type)) {
/*
* XXX: I'm not sure I understand why the free function should
* get three arguments... -- Richard Levitte
*/
sk_NAME_FUNCS_value(name_funcs_stack,
ret->type)->free_func(ret->name, ret->type,
ret->data);
}
OPENSSL_free(ret);
} else {
if (lh_OBJ_NAME_error(names_lh)) {
/* ERROR */
return (0);
}
}
return (1);
}
int OBJ_NAME_remove(const char *name, int type)
{
OBJ_NAME on,*ret;
{
OBJ_NAME on, *ret;
if (names_lh == NULL) return(0);
if (names_lh == NULL)
return (0);
type&= ~OBJ_NAME_ALIAS;
on.name=name;
on.type=type;
ret=lh_OBJ_NAME_delete(names_lh,&on);
if (ret != NULL)
{
/* free things */
if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))
{
/* XXX: I'm not sure I understand why the free
* function should get three arguments...
* -- Richard Levitte
*/
sk_NAME_FUNCS_value(name_funcs_stack,
ret->type)->free_func(ret->name,ret->type,ret->data);
}
OPENSSL_free(ret);
return(1);
}
else
return(0);
}
type &= ~OBJ_NAME_ALIAS;
on.name = name;
on.type = type;
ret = lh_OBJ_NAME_delete(names_lh, &on);
if (ret != NULL) {
/* free things */
if ((name_funcs_stack != NULL)
&& (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type)) {
/*
* XXX: I'm not sure I understand why the free function should
* get three arguments... -- Richard Levitte
*/
sk_NAME_FUNCS_value(name_funcs_stack,
ret->type)->free_func(ret->name, ret->type,
ret->data);
}
OPENSSL_free(ret);
return (1);
} else
return (0);
}
struct doall
{
int type;
void (*fn)(const OBJ_NAME *,void *arg);
void *arg;
};
struct doall {
int type;
void (*fn) (const OBJ_NAME *, void *arg);
void *arg;
};
static void do_all_fn_doall_arg(const OBJ_NAME *name,struct doall *d)
{
if(name->type == d->type)
d->fn(name,d->arg);
}
static void do_all_fn_doall_arg(const OBJ_NAME *name, struct doall *d)
{
if (name->type == d->type)
d->fn(name, d->arg);
}
static IMPLEMENT_LHASH_DOALL_ARG_FN(do_all_fn, const OBJ_NAME, struct doall)
void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg)
{
struct doall d;
void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg),
void *arg)
{
struct doall d;
d.type=type;
d.fn=fn;
d.arg=arg;
d.type = type;
d.fn = fn;
d.arg = arg;
lh_OBJ_NAME_doall_arg(names_lh, LHASH_DOALL_ARG_FN(do_all_fn),
struct doall, &d);
}
lh_OBJ_NAME_doall_arg(names_lh, LHASH_DOALL_ARG_FN(do_all_fn),
struct doall, &d);
}
struct doall_sorted
{
int type;
int n;
const OBJ_NAME **names;
};
struct doall_sorted {
int type;
int n;
const OBJ_NAME **names;
};
static void do_all_sorted_fn(const OBJ_NAME *name,void *d_)
{
struct doall_sorted *d=d_;
static void do_all_sorted_fn(const OBJ_NAME *name, void *d_)
{
struct doall_sorted *d = d_;
if(name->type != d->type)
return;
if (name->type != d->type)
return;
d->names[d->n++]=name;
}
d->names[d->n++] = name;
}
static int do_all_sorted_cmp(const void *n1_,const void *n2_)
{
const OBJ_NAME * const *n1=n1_;
const OBJ_NAME * const *n2=n2_;
static int do_all_sorted_cmp(const void *n1_, const void *n2_)
{
const OBJ_NAME *const *n1 = n1_;
const OBJ_NAME *const *n2 = n2_;
return strcmp((*n1)->name,(*n2)->name);
}
return strcmp((*n1)->name, (*n2)->name);
}
void OBJ_NAME_do_all_sorted(int type,void (*fn)(const OBJ_NAME *,void *arg),
void *arg)
{
struct doall_sorted d;
int n;
void OBJ_NAME_do_all_sorted(int type,
void (*fn) (const OBJ_NAME *, void *arg),
void *arg)
{
struct doall_sorted d;
int n;
d.type=type;
d.names=OPENSSL_malloc(lh_OBJ_NAME_num_items(names_lh)*sizeof *d.names);
d.n=0;
OBJ_NAME_do_all(type,do_all_sorted_fn,&d);
d.type = type;
d.names =
OPENSSL_malloc(lh_OBJ_NAME_num_items(names_lh) * sizeof *d.names);
/* Really should return an error if !d.names...but its a void function! */
if (d.names) {
d.n = 0;
OBJ_NAME_do_all(type, do_all_sorted_fn, &d);
qsort((void *)d.names,d.n,sizeof *d.names,do_all_sorted_cmp);
qsort((void *)d.names, d.n, sizeof *d.names, do_all_sorted_cmp);
for(n=0 ; n < d.n ; ++n)
fn(d.names[n],arg);
for (n = 0; n < d.n; ++n)
fn(d.names[n], arg);
OPENSSL_free((void *)d.names);
}
OPENSSL_free((void *)d.names);
}
}
static int free_type;
static void names_lh_free_doall(OBJ_NAME *onp)
{
if (onp == NULL)
return;
{
if (onp == NULL)
return;
if (free_type < 0 || free_type == onp->type)
OBJ_NAME_remove(onp->name,onp->type);
}
if (free_type < 0 || free_type == onp->type)
OBJ_NAME_remove(onp->name, onp->type);
}
static IMPLEMENT_LHASH_DOALL_FN(names_lh_free, OBJ_NAME)
static void name_funcs_free(NAME_FUNCS *ptr)
{
OPENSSL_free(ptr);
}
{
OPENSSL_free(ptr);
}
void OBJ_NAME_cleanup(int type)
{
unsigned long down_load;
{
unsigned long down_load;
if (names_lh == NULL) return;
if (names_lh == NULL)
return;
free_type=type;
down_load=lh_OBJ_NAME_down_load(names_lh);
lh_OBJ_NAME_down_load(names_lh)=0;
lh_OBJ_NAME_doall(names_lh,LHASH_DOALL_FN(names_lh_free));
if (type < 0)
{
lh_OBJ_NAME_free(names_lh);
sk_NAME_FUNCS_pop_free(name_funcs_stack,name_funcs_free);
names_lh=NULL;
name_funcs_stack = NULL;
}
else
lh_OBJ_NAME_down_load(names_lh)=down_load;
}
free_type = type;
down_load = lh_OBJ_NAME_down_load(names_lh);
lh_OBJ_NAME_down_load(names_lh) = 0;
lh_OBJ_NAME_doall(names_lh, LHASH_DOALL_FN(names_lh_free));
if (type < 0) {
lh_OBJ_NAME_free(names_lh);
sk_NAME_FUNCS_pop_free(name_funcs_stack, name_funcs_free);
names_lh = NULL;
name_funcs_stack = NULL;
} else
lh_OBJ_NAME_down_load(names_lh) = down_load;
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -115,7 +115,7 @@ for ($i=0; $i<$n; $i++)
$out.="\"$sn\"";
$out.=","."\"$ln\"";
$out.=",NID_$nid{$i},";
if (defined($obj{$nid{$i}}))
if (defined($obj{$nid{$i}}) && $objd{$obj{$nid{$i}}} =~ /,/)
{
$v=$objd{$obj{$nid{$i}}};
$v =~ s/L//g;

View File

@@ -7,7 +7,7 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
@@ -53,7 +53,8 @@
*
*/
/* NOTE: this file was auto generated by the mkerr.pl script: any changes
/*
* NOTE: this file was auto generated by the mkerr.pl script: any changes
* made to it will be overwritten when the script next updates this file,
* only reason strings will be preserved.
*/
@@ -65,38 +66,35 @@
/* BEGIN ERROR CODES */
#ifndef OPENSSL_NO_ERR
#define ERR_FUNC(func) ERR_PACK(ERR_LIB_OBJ,func,0)
#define ERR_REASON(reason) ERR_PACK(ERR_LIB_OBJ,0,reason)
# define ERR_FUNC(func) ERR_PACK(ERR_LIB_OBJ,func,0)
# define ERR_REASON(reason) ERR_PACK(ERR_LIB_OBJ,0,reason)
static ERR_STRING_DATA OBJ_str_functs[]=
{
{ERR_FUNC(OBJ_F_OBJ_ADD_OBJECT), "OBJ_add_object"},
{ERR_FUNC(OBJ_F_OBJ_CREATE), "OBJ_create"},
{ERR_FUNC(OBJ_F_OBJ_DUP), "OBJ_dup"},
{ERR_FUNC(OBJ_F_OBJ_NAME_NEW_INDEX), "OBJ_NAME_new_index"},
{ERR_FUNC(OBJ_F_OBJ_NID2LN), "OBJ_nid2ln"},
{ERR_FUNC(OBJ_F_OBJ_NID2OBJ), "OBJ_nid2obj"},
{ERR_FUNC(OBJ_F_OBJ_NID2SN), "OBJ_nid2sn"},
{0,NULL}
};
static ERR_STRING_DATA OBJ_str_functs[] = {
{ERR_FUNC(OBJ_F_OBJ_ADD_OBJECT), "OBJ_add_object"},
{ERR_FUNC(OBJ_F_OBJ_CREATE), "OBJ_create"},
{ERR_FUNC(OBJ_F_OBJ_DUP), "OBJ_dup"},
{ERR_FUNC(OBJ_F_OBJ_NAME_NEW_INDEX), "OBJ_NAME_new_index"},
{ERR_FUNC(OBJ_F_OBJ_NID2LN), "OBJ_nid2ln"},
{ERR_FUNC(OBJ_F_OBJ_NID2OBJ), "OBJ_nid2obj"},
{ERR_FUNC(OBJ_F_OBJ_NID2SN), "OBJ_nid2sn"},
{0, NULL}
};
static ERR_STRING_DATA OBJ_str_reasons[]=
{
{ERR_REASON(OBJ_R_MALLOC_FAILURE) ,"malloc failure"},
{ERR_REASON(OBJ_R_UNKNOWN_NID) ,"unknown nid"},
{0,NULL}
};
static ERR_STRING_DATA OBJ_str_reasons[] = {
{ERR_REASON(OBJ_R_MALLOC_FAILURE), "malloc failure"},
{ERR_REASON(OBJ_R_UNKNOWN_NID), "unknown nid"},
{0, NULL}
};
#endif
void ERR_load_OBJ_strings(void)
{
{
#ifndef OPENSSL_NO_ERR
if (ERR_func_error_string(OBJ_str_functs[0].error) == NULL)
{
ERR_load_strings(0,OBJ_str_functs);
ERR_load_strings(0,OBJ_str_reasons);
}
if (ERR_func_error_string(OBJ_str_functs[0].error) == NULL) {
ERR_load_strings(0, OBJ_str_functs);
ERR_load_strings(0, OBJ_str_reasons);
}
#endif
}
}

Binary file not shown.

View File

@@ -5,21 +5,21 @@
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -34,10 +34,10 @@
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
@@ -63,67 +63,73 @@
#include <openssl/buffer.h>
ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o)
{
ASN1_OBJECT *r;
int i;
char *ln=NULL,*sn=NULL;
unsigned char *data=NULL;
{
ASN1_OBJECT *r;
int i;
char *ln = NULL, *sn = NULL;
unsigned char *data = NULL;
if (o == NULL) return(NULL);
if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
return((ASN1_OBJECT *)o); /* XXX: ugh! Why? What kind of
duplication is this??? */
if (o == NULL)
return (NULL);
if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
return ((ASN1_OBJECT *)o); /* XXX: ugh! Why? What kind of duplication
* is this??? */
r=ASN1_OBJECT_new();
if (r == NULL)
{
OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB);
return(NULL);
}
data=OPENSSL_malloc(o->length);
if (data == NULL)
goto err;
if (o->data != NULL)
memcpy(data,o->data,o->length);
/* once data attached to object it remains const */
r->data = data;
r->length=o->length;
r->nid=o->nid;
r->ln=r->sn=NULL;
if (o->ln != NULL)
{
i=strlen(o->ln)+1;
ln=OPENSSL_malloc(i);
if (ln == NULL) goto err;
memcpy(ln,o->ln,i);
r->ln=ln;
}
r = ASN1_OBJECT_new();
if (r == NULL) {
OBJerr(OBJ_F_OBJ_DUP, ERR_R_ASN1_LIB);
return (NULL);
}
data = OPENSSL_malloc(o->length);
if (data == NULL)
goto err;
if (o->data != NULL)
memcpy(data, o->data, o->length);
/* once data attached to object it remains const */
r->data = data;
r->length = o->length;
r->nid = o->nid;
r->ln = r->sn = NULL;
if (o->ln != NULL) {
i = strlen(o->ln) + 1;
ln = OPENSSL_malloc(i);
if (ln == NULL)
goto err;
memcpy(ln, o->ln, i);
r->ln = ln;
}
if (o->sn != NULL)
{
i=strlen(o->sn)+1;
sn=OPENSSL_malloc(i);
if (sn == NULL) goto err;
memcpy(sn,o->sn,i);
r->sn=sn;
}
r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC|
ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA);
return(r);
err:
OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE);
if (ln != NULL) OPENSSL_free(ln);
if (sn != NULL) OPENSSL_free(sn);
if (data != NULL) OPENSSL_free(data);
if (r != NULL) OPENSSL_free(r);
return(NULL);
}
if (o->sn != NULL) {
i = strlen(o->sn) + 1;
sn = OPENSSL_malloc(i);
if (sn == NULL)
goto err;
memcpy(sn, o->sn, i);
r->sn = sn;
}
r->flags = o->flags | (ASN1_OBJECT_FLAG_DYNAMIC |
ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
ASN1_OBJECT_FLAG_DYNAMIC_DATA);
return (r);
err:
OBJerr(OBJ_F_OBJ_DUP, ERR_R_MALLOC_FAILURE);
if (ln != NULL)
OPENSSL_free(ln);
if (sn != NULL)
OPENSSL_free(sn);
if (data != NULL)
OPENSSL_free(data);
if (r != NULL)
OPENSSL_free(r);
return (NULL);
}
int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b)
{
int ret;
{
int ret;
ret=(a->length-b->length);
if (ret) return(ret);
return(memcmp(a->data,b->data,a->length));
}
ret = (a->length - b->length);
if (ret)
return (ret);
return (memcmp(a->data, b->data, a->length));
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -890,25 +890,93 @@ houseIdentifier 889
supportedAlgorithms 890
deltaRevocationList 891
dmdName 892
ecies_recommendedParameters 893
ecies_specifiedParameters 894
x9_63_kdf 895
nist_concatenation_kdf 896
tls_kdf 897
ikev2_kdf 898
xor_in_ecies 899
aes128_cbc_in_ecies 900
aes192_cbc_in_ecies 901
aes256_cbc_in_ecies 902
aes128_ctr_in_ecies 903
aes192_ctr_in_ecies 904
aes256_ctr_in_ecies 905
hmac_full_ecies 906
hmac_half_ecies 907
cmac_aes128_ecies 908
cmac_aes192_ecies 909
wapi192v1 910
sm2p256v1 911
sm2p256v2 912
sm2t257v1 913
SM2DSA_with_SM3 914
id_alg_PWRI_KEK 893
cmac 894
aes_128_gcm 895
aes_128_ccm 896
id_aes128_wrap_pad 897
aes_192_gcm 898
aes_192_ccm 899
id_aes192_wrap_pad 900
aes_256_gcm 901
aes_256_ccm 902
id_aes256_wrap_pad 903
aes_128_ctr 904
aes_192_ctr 905
aes_256_ctr 906
id_camellia128_wrap 907
id_camellia192_wrap 908
id_camellia256_wrap 909
anyExtendedKeyUsage 910
mgf1 911
rsassaPss 912
aes_128_xts 913
aes_256_xts 914
rc4_hmac_md5 915
aes_128_cbc_hmac_sha1 916
aes_192_cbc_hmac_sha1 917
aes_256_cbc_hmac_sha1 918
rsaesOaep 919
dhpublicnumber 920
brainpoolP160r1 921
brainpoolP160t1 922
brainpoolP192r1 923
brainpoolP192t1 924
brainpoolP224r1 925
brainpoolP224t1 926
brainpoolP256r1 927
brainpoolP256t1 928
brainpoolP320r1 929
brainpoolP320t1 930
brainpoolP384r1 931
brainpoolP384t1 932
brainpoolP512r1 933
brainpoolP512t1 934
pSpecified 935
dhSinglePass_stdDH_sha1kdf_scheme 936
dhSinglePass_stdDH_sha224kdf_scheme 937
dhSinglePass_stdDH_sha256kdf_scheme 938
dhSinglePass_stdDH_sha384kdf_scheme 939
dhSinglePass_stdDH_sha512kdf_scheme 940
dhSinglePass_cofactorDH_sha1kdf_scheme 941
dhSinglePass_cofactorDH_sha224kdf_scheme 942
dhSinglePass_cofactorDH_sha256kdf_scheme 943
dhSinglePass_cofactorDH_sha384kdf_scheme 944
dhSinglePass_cofactorDH_sha512kdf_scheme 945
dh_std_kdf 946
dh_cofactor_kdf 947
aes_128_cbc_hmac_sha256 948
aes_192_cbc_hmac_sha256 949
aes_256_cbc_hmac_sha256 950
ct_precert_scts 951
ct_precert_poison 952
ct_precert_signer 953
ct_cert_scts 954
jurisdictionLocalityName 955
jurisdictionStateOrProvinceName 956
jurisdictionCountryName 957
sm2p256v1 958
SM2_with_SM3 959
ISO_CN 960
oscca 961
sm3 962
hmac_sm3 963
sm4 964
sm2_with_sm3 965
sm2_with_SHA1 966
sm2_with_SHA256 967
sm 968
sm2 969
sm2sign 970
sm2keyagreement 971
sm2encrypt 972
sm2sign_with_sm3 973
sm2sign_with_sha1 974
sm2sign_with_sha256 975
sms4 976
sms4_ecb 977
sms4_cbc 978
sms4_cfb 979
sms4_ofb 980
sms4_ofb128 981
sms4_cfb128 982

View File

@@ -1,6 +1,7 @@
/* crypto/objects/obj_xref.c */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
/*
* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
* 2006.
*/
/* ====================================================================
* Copyright (c) 2006 The OpenSSL Project. All rights reserved.
@@ -10,7 +11,7 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
@@ -63,169 +64,159 @@ DECLARE_STACK_OF(nid_triple)
STACK_OF(nid_triple) *sig_app, *sigx_app;
static int sig_cmp(const nid_triple *a, const nid_triple *b)
{
return a->sign_id - b->sign_id;
}
{
return a->sign_id - b->sign_id;
}
DECLARE_OBJ_BSEARCH_CMP_FN(nid_triple, nid_triple, sig);
IMPLEMENT_OBJ_BSEARCH_CMP_FN(nid_triple, nid_triple, sig);
static int sig_sk_cmp(const nid_triple * const *a, const nid_triple * const *b)
{
return (*a)->sign_id - (*b)->sign_id;
}
static int sig_sk_cmp(const nid_triple *const *a, const nid_triple *const *b)
{
return (*a)->sign_id - (*b)->sign_id;
}
DECLARE_OBJ_BSEARCH_CMP_FN(const nid_triple *, const nid_triple *, sigx);
static int sigx_cmp(const nid_triple * const *a, const nid_triple * const *b)
{
int ret;
ret = (*a)->hash_id - (*b)->hash_id;
if (ret)
return ret;
return (*a)->pkey_id - (*b)->pkey_id;
}
static int sigx_cmp(const nid_triple *const *a, const nid_triple *const *b)
{
int ret;
ret = (*a)->hash_id - (*b)->hash_id;
if (ret)
return ret;
return (*a)->pkey_id - (*b)->pkey_id;
}
IMPLEMENT_OBJ_BSEARCH_CMP_FN(const nid_triple *, const nid_triple *, sigx);
int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid)
{
nid_triple tmp;
const nid_triple *rv = NULL;
tmp.sign_id = signid;
if (sig_app)
{
int idx = sk_nid_triple_find(sig_app, &tmp);
if (idx >= 0)
rv = sk_nid_triple_value(sig_app, idx);
}
{
nid_triple tmp;
const nid_triple *rv = NULL;
tmp.sign_id = signid;
if (sig_app) {
int idx = sk_nid_triple_find(sig_app, &tmp);
if (idx >= 0)
rv = sk_nid_triple_value(sig_app, idx);
}
#ifndef OBJ_XREF_TEST2
if (rv == NULL)
{
rv = OBJ_bsearch_sig(&tmp, sigoid_srt,
sizeof(sigoid_srt) / sizeof(nid_triple));
}
if (rv == NULL) {
rv = OBJ_bsearch_sig(&tmp, sigoid_srt,
sizeof(sigoid_srt) / sizeof(nid_triple));
}
#endif
if (rv == NULL)
return 0;
*pdig_nid = rv->hash_id;
*ppkey_nid = rv->pkey_id;
return 1;
}
if (rv == NULL)
return 0;
if (pdig_nid)
*pdig_nid = rv->hash_id;
if (ppkey_nid)
*ppkey_nid = rv->pkey_id;
return 1;
}
int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid)
{
nid_triple tmp;
const nid_triple *t=&tmp;
const nid_triple **rv = NULL;
{
nid_triple tmp;
const nid_triple *t = &tmp;
const nid_triple **rv = NULL;
tmp.hash_id = dig_nid;
tmp.pkey_id = pkey_nid;
if (sigx_app)
{
int idx = sk_nid_triple_find(sigx_app, &tmp);
if (idx >= 0)
{
t = sk_nid_triple_value(sigx_app, idx);
rv = &t;
}
}
tmp.hash_id = dig_nid;
tmp.pkey_id = pkey_nid;
if (sigx_app) {
int idx = sk_nid_triple_find(sigx_app, &tmp);
if (idx >= 0) {
t = sk_nid_triple_value(sigx_app, idx);
rv = &t;
}
}
#ifndef OBJ_XREF_TEST2
if (rv == NULL)
{
rv = OBJ_bsearch_sigx(&t, sigoid_srt_xref,
sizeof(sigoid_srt_xref) / sizeof(nid_triple *)
);
}
if (rv == NULL) {
rv = OBJ_bsearch_sigx(&t, sigoid_srt_xref,
sizeof(sigoid_srt_xref) / sizeof(nid_triple *)
);
}
#endif
if (rv == NULL)
return 0;
*psignid = (*rv)->sign_id;
return 1;
}
if (rv == NULL)
return 0;
if (psignid)
*psignid = (*rv)->sign_id;
return 1;
}
int OBJ_add_sigid(int signid, int dig_id, int pkey_id)
{
nid_triple *ntr;
if (!sig_app)
sig_app = sk_nid_triple_new(sig_sk_cmp);
if (!sig_app)
return 0;
if (!sigx_app)
sigx_app = sk_nid_triple_new(sigx_cmp);
if (!sigx_app)
return 0;
ntr = OPENSSL_malloc(sizeof(int) * 3);
if (!ntr)
return 0;
ntr->sign_id = signid;
ntr->hash_id = dig_id;
ntr->pkey_id = pkey_id;
{
nid_triple *ntr;
if (!sig_app)
sig_app = sk_nid_triple_new(sig_sk_cmp);
if (!sig_app)
return 0;
if (!sigx_app)
sigx_app = sk_nid_triple_new(sigx_cmp);
if (!sigx_app)
return 0;
ntr = OPENSSL_malloc(sizeof(int) * 3);
if (!ntr)
return 0;
ntr->sign_id = signid;
ntr->hash_id = dig_id;
ntr->pkey_id = pkey_id;
if (!sk_nid_triple_push(sig_app, ntr))
{
OPENSSL_free(ntr);
return 0;
}
if (!sk_nid_triple_push(sig_app, ntr)) {
OPENSSL_free(ntr);
return 0;
}
if (!sk_nid_triple_push(sigx_app, ntr))
return 0;
if (!sk_nid_triple_push(sigx_app, ntr))
return 0;
sk_nid_triple_sort(sig_app);
sk_nid_triple_sort(sigx_app);
sk_nid_triple_sort(sig_app);
sk_nid_triple_sort(sigx_app);
return 1;
}
return 1;
}
static void sid_free(nid_triple *tt)
{
OPENSSL_free(tt);
}
{
OPENSSL_free(tt);
}
void OBJ_sigid_free(void)
{
if (sig_app)
{
sk_nid_triple_pop_free(sig_app, sid_free);
sig_app = NULL;
}
if (sigx_app)
{
sk_nid_triple_free(sigx_app);
sigx_app = NULL;
}
}
{
if (sig_app) {
sk_nid_triple_pop_free(sig_app, sid_free);
sig_app = NULL;
}
if (sigx_app) {
sk_nid_triple_free(sigx_app);
sigx_app = NULL;
}
}
#ifdef OBJ_XREF_TEST
main()
{
int n1, n2, n3;
{
int n1, n2, n3;
int i, rv;
#ifdef OBJ_XREF_TEST2
for (i = 0; i < sizeof(sigoid_srt) / sizeof(nid_triple); i++)
{
OBJ_add_sigid(sigoid_srt[i][0], sigoid_srt[i][1],
sigoid_srt[i][2]);
}
#endif
int i, rv;
# ifdef OBJ_XREF_TEST2
for (i = 0; i < sizeof(sigoid_srt) / sizeof(nid_triple); i++) {
OBJ_add_sigid(sigoid_srt[i][0], sigoid_srt[i][1], sigoid_srt[i][2]);
}
# endif
for (i = 0; i < sizeof(sigoid_srt) / sizeof(nid_triple); i++) {
n1 = sigoid_srt[i][0];
rv = OBJ_find_sigid_algs(n1, &n2, &n3);
printf("Forward: %d, %s %s %s\n", rv,
OBJ_nid2ln(n1), OBJ_nid2ln(n2), OBJ_nid2ln(n3));
n1 = 0;
rv = OBJ_find_sigid_by_algs(&n1, n2, n3);
printf("Reverse: %d, %s %s %s\n", rv,
OBJ_nid2ln(n1), OBJ_nid2ln(n2), OBJ_nid2ln(n3));
}
}
for (i = 0; i < sizeof(sigoid_srt) / sizeof(nid_triple); i++)
{
n1 = sigoid_srt[i][0];
rv = OBJ_find_sigid_algs(n1, &n2, &n3);
printf("Forward: %d, %s %s %s\n", rv,
OBJ_nid2ln(n1), OBJ_nid2ln(n2), OBJ_nid2ln(n3));
n1=0;
rv = OBJ_find_sigid_by_algs(&n1, n2, n3);
printf("Reverse: %d, %s %s %s\n", rv,
OBJ_nid2ln(n1), OBJ_nid2ln(n2), OBJ_nid2ln(n3));
}
}
#endif

View File

@@ -1,75 +1,99 @@
/* AUTOGENERATED BY objxref.pl, DO NOT EDIT */
typedef struct
{
int sign_id;
int hash_id;
int pkey_id;
} nid_triple;
typedef struct {
int sign_id;
int hash_id;
int pkey_id;
} nid_triple;
static const nid_triple sigoid_srt[] =
{
{NID_md2WithRSAEncryption, NID_md2, NID_rsaEncryption},
{NID_md5WithRSAEncryption, NID_md5, NID_rsaEncryption},
{NID_shaWithRSAEncryption, NID_sha, NID_rsaEncryption},
{NID_sha1WithRSAEncryption, NID_sha1, NID_rsaEncryption},
{NID_dsaWithSHA, NID_sha, NID_dsa},
{NID_dsaWithSHA1_2, NID_sha1, NID_dsa_2},
{NID_mdc2WithRSA, NID_mdc2, NID_rsaEncryption},
{NID_md5WithRSA, NID_md5, NID_rsa},
{NID_dsaWithSHA1, NID_sha1, NID_dsa},
{NID_sha1WithRSA, NID_sha1, NID_rsa},
{NID_ripemd160WithRSA, NID_ripemd160, NID_rsaEncryption},
{NID_md4WithRSAEncryption, NID_md4, NID_rsaEncryption},
{NID_ecdsa_with_SHA1, NID_sha1, NID_X9_62_id_ecPublicKey},
{NID_sha256WithRSAEncryption, NID_sha256, NID_rsaEncryption},
{NID_sha384WithRSAEncryption, NID_sha384, NID_rsaEncryption},
{NID_sha512WithRSAEncryption, NID_sha512, NID_rsaEncryption},
{NID_sha224WithRSAEncryption, NID_sha224, NID_rsaEncryption},
{NID_ecdsa_with_Recommended, NID_undef, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_Specified, NID_undef, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA224, NID_sha224, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA256, NID_sha256, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA384, NID_sha384, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA512, NID_sha512, NID_X9_62_id_ecPublicKey},
{NID_dsa_with_SHA224, NID_sha224, NID_dsa},
{NID_dsa_with_SHA256, NID_sha256, NID_dsa},
{NID_id_GostR3411_94_with_GostR3410_2001, NID_id_GostR3411_94, NID_id_GostR3410_2001},
{NID_id_GostR3411_94_with_GostR3410_94, NID_id_GostR3411_94, NID_id_GostR3410_94},
{NID_id_GostR3411_94_with_GostR3410_94_cc, NID_id_GostR3411_94, NID_id_GostR3410_94_cc},
{NID_id_GostR3411_94_with_GostR3410_2001_cc, NID_id_GostR3411_94, NID_id_GostR3410_2001_cc},
};
static const nid_triple * const sigoid_srt_xref[] =
{
&sigoid_srt[18],
&sigoid_srt[17],
&sigoid_srt[0],
&sigoid_srt[1],
&sigoid_srt[7],
&sigoid_srt[2],
&sigoid_srt[4],
&sigoid_srt[3],
&sigoid_srt[9],
&sigoid_srt[5],
&sigoid_srt[8],
&sigoid_srt[12],
&sigoid_srt[6],
&sigoid_srt[10],
&sigoid_srt[11],
&sigoid_srt[13],
&sigoid_srt[24],
&sigoid_srt[20],
&sigoid_srt[14],
&sigoid_srt[21],
&sigoid_srt[15],
&sigoid_srt[22],
&sigoid_srt[16],
&sigoid_srt[23],
&sigoid_srt[19],
&sigoid_srt[25],
&sigoid_srt[26],
&sigoid_srt[27],
&sigoid_srt[28],
};
static const nid_triple sigoid_srt[] = {
{NID_md2WithRSAEncryption, NID_md2, NID_rsaEncryption},
{NID_md5WithRSAEncryption, NID_md5, NID_rsaEncryption},
{NID_shaWithRSAEncryption, NID_sha, NID_rsaEncryption},
{NID_sha1WithRSAEncryption, NID_sha1, NID_rsaEncryption},
{NID_dsaWithSHA, NID_sha, NID_dsa},
{NID_dsaWithSHA1_2, NID_sha1, NID_dsa_2},
{NID_mdc2WithRSA, NID_mdc2, NID_rsaEncryption},
{NID_md5WithRSA, NID_md5, NID_rsa},
{NID_dsaWithSHA1, NID_sha1, NID_dsa},
{NID_sha1WithRSA, NID_sha1, NID_rsa},
{NID_ripemd160WithRSA, NID_ripemd160, NID_rsaEncryption},
{NID_md4WithRSAEncryption, NID_md4, NID_rsaEncryption},
{NID_ecdsa_with_SHA1, NID_sha1, NID_X9_62_id_ecPublicKey},
{NID_sha256WithRSAEncryption, NID_sha256, NID_rsaEncryption},
{NID_sha384WithRSAEncryption, NID_sha384, NID_rsaEncryption},
{NID_sha512WithRSAEncryption, NID_sha512, NID_rsaEncryption},
{NID_sha224WithRSAEncryption, NID_sha224, NID_rsaEncryption},
{NID_ecdsa_with_Recommended, NID_undef, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_Specified, NID_undef, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA224, NID_sha224, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA256, NID_sha256, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA384, NID_sha384, NID_X9_62_id_ecPublicKey},
{NID_ecdsa_with_SHA512, NID_sha512, NID_X9_62_id_ecPublicKey},
{NID_dsa_with_SHA224, NID_sha224, NID_dsa},
{NID_dsa_with_SHA256, NID_sha256, NID_dsa},
{NID_id_GostR3411_94_with_GostR3410_2001, NID_id_GostR3411_94,
NID_id_GostR3410_2001},
{NID_id_GostR3411_94_with_GostR3410_94, NID_id_GostR3411_94,
NID_id_GostR3410_94},
{NID_id_GostR3411_94_with_GostR3410_94_cc, NID_id_GostR3411_94,
NID_id_GostR3410_94_cc},
{NID_id_GostR3411_94_with_GostR3410_2001_cc, NID_id_GostR3411_94,
NID_id_GostR3410_2001_cc},
{NID_rsassaPss, NID_undef, NID_rsaEncryption},
{NID_dhSinglePass_stdDH_sha1kdf_scheme, NID_sha1, NID_dh_std_kdf},
{NID_dhSinglePass_stdDH_sha224kdf_scheme, NID_sha224, NID_dh_std_kdf},
{NID_dhSinglePass_stdDH_sha256kdf_scheme, NID_sha256, NID_dh_std_kdf},
{NID_dhSinglePass_stdDH_sha384kdf_scheme, NID_sha384, NID_dh_std_kdf},
{NID_dhSinglePass_stdDH_sha512kdf_scheme, NID_sha512, NID_dh_std_kdf},
{NID_dhSinglePass_cofactorDH_sha1kdf_scheme, NID_sha1,
NID_dh_cofactor_kdf},
{NID_dhSinglePass_cofactorDH_sha224kdf_scheme, NID_sha224,
NID_dh_cofactor_kdf},
{NID_dhSinglePass_cofactorDH_sha256kdf_scheme, NID_sha256,
NID_dh_cofactor_kdf},
{NID_dhSinglePass_cofactorDH_sha384kdf_scheme, NID_sha384,
NID_dh_cofactor_kdf},
{NID_dhSinglePass_cofactorDH_sha512kdf_scheme, NID_sha512,
NID_dh_cofactor_kdf},
};
static const nid_triple *const sigoid_srt_xref[] = {
&sigoid_srt[0],
&sigoid_srt[1],
&sigoid_srt[7],
&sigoid_srt[2],
&sigoid_srt[4],
&sigoid_srt[3],
&sigoid_srt[9],
&sigoid_srt[5],
&sigoid_srt[8],
&sigoid_srt[12],
&sigoid_srt[30],
&sigoid_srt[35],
&sigoid_srt[6],
&sigoid_srt[10],
&sigoid_srt[11],
&sigoid_srt[13],
&sigoid_srt[24],
&sigoid_srt[20],
&sigoid_srt[32],
&sigoid_srt[37],
&sigoid_srt[14],
&sigoid_srt[21],
&sigoid_srt[33],
&sigoid_srt[38],
&sigoid_srt[15],
&sigoid_srt[22],
&sigoid_srt[34],
&sigoid_srt[39],
&sigoid_srt[16],
&sigoid_srt[23],
&sigoid_srt[19],
&sigoid_srt[31],
&sigoid_srt[36],
&sigoid_srt[25],
&sigoid_srt[26],
&sigoid_srt[27],
&sigoid_srt[28],
};

Binary file not shown.

View File

@@ -13,6 +13,10 @@ sha512WithRSAEncryption sha512 rsaEncryption
sha224WithRSAEncryption sha224 rsaEncryption
mdc2WithRSA mdc2 rsaEncryption
ripemd160WithRSA ripemd160 rsaEncryption
# For PSS the digest algorithm can vary and depends on the included
# AlgorithmIdentifier. The digest "undef" indicates the public key
# method should handle this explicitly.
rsassaPss undef rsaEncryption
# Alternative deprecated OIDs. By using the older "rsa" OID this
# type will be recognized by not normally used.
@@ -40,3 +44,15 @@ id_GostR3411_94_with_GostR3410_2001 id_GostR3411_94 id_GostR3410_2001
id_GostR3411_94_with_GostR3410_94 id_GostR3411_94 id_GostR3410_94
id_GostR3411_94_with_GostR3410_94_cc id_GostR3411_94 id_GostR3410_94_cc
id_GostR3411_94_with_GostR3410_2001_cc id_GostR3411_94 id_GostR3410_2001_cc
# ECDH KDFs and their corresponding message digests and schemes
dhSinglePass_stdDH_sha1kdf_scheme sha1 dh_std_kdf
dhSinglePass_stdDH_sha224kdf_scheme sha224 dh_std_kdf
dhSinglePass_stdDH_sha256kdf_scheme sha256 dh_std_kdf
dhSinglePass_stdDH_sha384kdf_scheme sha384 dh_std_kdf
dhSinglePass_stdDH_sha512kdf_scheme sha512 dh_std_kdf
dhSinglePass_cofactorDH_sha1kdf_scheme sha1 dh_cofactor_kdf
dhSinglePass_cofactorDH_sha224kdf_scheme sha224 dh_cofactor_kdf
dhSinglePass_cofactorDH_sha256kdf_scheme sha256 dh_cofactor_kdf
dhSinglePass_cofactorDH_sha384kdf_scheme sha384 dh_cofactor_kdf
dhSinglePass_cofactorDH_sha512kdf_scheme sha512 dh_cofactor_kdf

View File

@@ -8,9 +8,9 @@ The basic syntax for adding an object is as follows:
1 2 3 4 : shortName : Long Name
If the long name doesn't contain spaces, or no short name
exists, the long name is used as basis for the base name
in C. Otherwise, the short name is used.
If Long Name contains only word characters and hyphen-minus
(0x2D) or full stop (0x2E) then Long Name is used as basis
for the base name in C. Otherwise, the shortName is used.
The base name (let's call it 'base') will then be used to
create the C macros SN_base, LN_base, NID_base and OBJ_base.
@@ -22,7 +22,7 @@ Then there are some extra commands:
!Alias foo 1 2 3 4
This juts makes a name foo for an OID. The C macro
This just makes a name foo for an OID. The C macro
OBJ_foo will be created as a result.
!Cname foo

File diff suppressed because it is too large Load Diff

View File

@@ -67,7 +67,7 @@ while (<IN>)
$myoid = &process_oid($myoid);
}
if ($Cname eq "" && !($myln =~ / /))
if ($Cname eq "" && ($myln =~ /^[_A-Za-z][\w.-]*$/ ))
{
$Cname = $myln;
$Cname =~ s/\./_/g;
@@ -121,9 +121,9 @@ open (OUT,">$ARGV[2]") || die "Can't open output file $ARGV[2]";
print OUT <<'EOF';
/* crypto/objects/obj_mac.h */
/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the
* following command:
* perl objects.pl objects.txt obj_mac.num obj_mac.h
/*
* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the following
* command: perl objects.pl objects.txt obj_mac.num obj_mac.h
*/
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
@@ -132,21 +132,21 @@ print OUT <<'EOF';
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -161,10 +161,10 @@ print OUT <<'EOF';
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -176,28 +176,36 @@ print OUT <<'EOF';
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#define SN_undef "UNDEF"
#define LN_undef "undefined"
#define NID_undef 0
#define OBJ_undef 0L
#define SN_undef "UNDEF"
#define LN_undef "undefined"
#define NID_undef 0
#define OBJ_undef 0L
EOF
sub expand
{
my $string = shift;
1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
return $string;
}
foreach (sort { $a <=> $b } keys %ordern)
{
$Cname=$ordern{$_};
print OUT "#define SN_",$Cname,"\t\t\"",$sn{$Cname},"\"\n" if $sn{$Cname} ne "";
print OUT "#define LN_",$Cname,"\t\t\"",$ln{$Cname},"\"\n" if $ln{$Cname} ne "";
print OUT "#define NID_",$Cname,"\t\t",$nid{$Cname},"\n" if $nid{$Cname} ne "";
print OUT "#define OBJ_",$Cname,"\t\t",$obj{$Cname},"\n" if $obj{$Cname} ne "";
print OUT "\n";
print OUT expand("#define SN_$Cname\t\t\"$sn{$Cname}\"\n") if $sn{$Cname} ne "";
print OUT expand("#define LN_$Cname\t\t\"$ln{$Cname}\"\n") if $ln{$Cname} ne "";
print OUT expand("#define NID_$Cname\t\t$nid{$Cname}\n") if $nid{$Cname} ne "";
print OUT expand("#define OBJ_$Cname\t\t$obj{$Cname}\n") if $obj{$Cname} ne "";
}
close OUT;

View File

@@ -127,35 +127,6 @@ secg-ellipticCurve 37 : sect409r1
secg-ellipticCurve 38 : sect571k1
secg-ellipticCurve 39 : sect571r1
# SM2
secg-ellipticCurve 100 : wapi192v1
1 2 156 10197 1 301 : sm2p256v1
secg-ellipticCurve 102 : sm2p256v2
secg-ellipticCurve 103 : sm2t257v1
1 2 156 10197 1 501 : SM2DSA-with-SM3
# ECIES
!Alias secg_scheme certicom-arc 1
secg-scheme 7 : ecies-recommendedParameters
secg-scheme 8 : ecies-specifiedParameters
secg-scheme 17 0 : x9-63-kdf
secg-scheme 17 1 : nist-concatenation-kdf
secg-scheme 17 2 : tls-kdf
secg-scheme 17 3 : ikev2-kdf
secg-scheme 18 : xor-in-ecies
secg-scheme 20 0 : aes128-cbc-in-ecies
secg-scheme 20 1 : aes192-cbc-in-ecies
secg-scheme 20 2 : aes256-cbc-in-ecies
secg-scheme 21 0 : aes128-ctr-in-ecies
secg-scheme 21 1 : aes192-ctr-in-ecies
secg-scheme 21 2 : aes256-ctr-in-ecies
secg-scheme 22 : hmac-full-ecies
secg-scheme 23 : hmac-half-ecies
secg-scheme 24 0 : cmac-aes128-ecies
secg-scheme 24 1 : cmac-aes192-ecies
# WAP/TLS curve OIDs (http://www.wapforum.org/)
!Alias wap-wsg-idm-ecid wap-wsg 4
wap-wsg-idm-ecid 1 : wap-wsg-idm-ecid-wtls1
@@ -195,6 +166,11 @@ pkcs1 3 : RSA-MD4 : md4WithRSAEncryption
pkcs1 4 : RSA-MD5 : md5WithRSAEncryption
pkcs1 5 : RSA-SHA1 : sha1WithRSAEncryption
# According to PKCS #1 version 2.1
pkcs1 7 : RSAES-OAEP : rsaesOaep
pkcs1 8 : MGF1 : mgf1
pkcs1 9 : PSPECIFIED : pSpecified
pkcs1 10 : RSASSA-PSS : rsassaPss
pkcs1 11 : RSA-SHA256 : sha256WithRSAEncryption
pkcs1 12 : RSA-SHA384 : sha384WithRSAEncryption
pkcs1 13 : RSA-SHA512 : sha512WithRSAEncryption
@@ -328,6 +304,7 @@ id-smime-alg 4 : id-smime-alg-RC2wrap
id-smime-alg 5 : id-smime-alg-ESDH
id-smime-alg 6 : id-smime-alg-CMS3DESwrap
id-smime-alg 7 : id-smime-alg-CMSRC2wrap
id-smime-alg 9 : id-alg-PWRI-KEK
# S/MIME Certificate Distribution
id-smime-cd 1 : id-smime-cd-ldap
@@ -799,6 +776,10 @@ id-ce 55 : targetInformation : X509v3 AC Targeting
!Cname no-rev-avail
id-ce 56 : noRevAvail : X509v3 No Revocation Available
# From RFC5280
ext-key-usage 0 : anyExtendedKeyUsage : Any Extended Key Usage
!Cname netscape
2 16 840 1 113730 : Netscape : Netscape Communications Corp.
!Cname netscape-cert-extension
@@ -875,6 +856,10 @@ aes 2 : AES-128-CBC : aes-128-cbc
aes 3 : AES-128-OFB : aes-128-ofb
!Cname aes-128-cfb128
aes 4 : AES-128-CFB : aes-128-cfb
aes 5 : id-aes128-wrap
aes 6 : id-aes128-GCM : aes-128-gcm
aes 7 : id-aes128-CCM : aes-128-ccm
aes 8 : id-aes128-wrap-pad
aes 21 : AES-192-ECB : aes-192-ecb
aes 22 : AES-192-CBC : aes-192-cbc
@@ -882,6 +867,10 @@ aes 22 : AES-192-CBC : aes-192-cbc
aes 23 : AES-192-OFB : aes-192-ofb
!Cname aes-192-cfb128
aes 24 : AES-192-CFB : aes-192-cfb
aes 25 : id-aes192-wrap
aes 26 : id-aes192-GCM : aes-192-gcm
aes 27 : id-aes192-CCM : aes-192-ccm
aes 28 : id-aes192-wrap-pad
aes 41 : AES-256-ECB : aes-256-ecb
aes 42 : AES-256-CBC : aes-256-cbc
@@ -889,6 +878,10 @@ aes 42 : AES-256-CBC : aes-256-cbc
aes 43 : AES-256-OFB : aes-256-ofb
!Cname aes-256-cfb128
aes 44 : AES-256-CFB : aes-256-cfb
aes 45 : id-aes256-wrap
aes 46 : id-aes256-GCM : aes-256-gcm
aes 47 : id-aes256-CCM : aes-256-ccm
aes 48 : id-aes256-wrap-pad
# There are no OIDs for these modes...
@@ -898,15 +891,16 @@ aes 44 : AES-256-CFB : aes-256-cfb
: AES-128-CFB8 : aes-128-cfb8
: AES-192-CFB8 : aes-192-cfb8
: AES-256-CFB8 : aes-256-cfb8
: AES-128-CTR : aes-128-ctr
: AES-192-CTR : aes-192-ctr
: AES-256-CTR : aes-256-ctr
: AES-128-XTS : aes-128-xts
: AES-256-XTS : aes-256-xts
: DES-CFB1 : des-cfb1
: DES-CFB8 : des-cfb8
: DES-EDE3-CFB1 : des-ede3-cfb1
: DES-EDE3-CFB8 : des-ede3-cfb8
aes 5 : id-aes128-wrap
aes 25 : id-aes192-wrap
aes 45 : id-aes256-wrap
# OIDs for SHA224, SHA256, SHA385 and SHA512, according to x9.84.
!Alias nist_hashalgs nistAlgorithms 2
nist_hashalgs 1 : SHA256 : sha256
@@ -1240,6 +1234,9 @@ cryptocom 1 8 1 : id-GostR3410-2001-ParamSet-cc : GOST R 3410-2001 Parameter Se
1 2 392 200011 61 1 1 1 2 : CAMELLIA-128-CBC : camellia-128-cbc
1 2 392 200011 61 1 1 1 3 : CAMELLIA-192-CBC : camellia-192-cbc
1 2 392 200011 61 1 1 1 4 : CAMELLIA-256-CBC : camellia-256-cbc
1 2 392 200011 61 1 1 3 2 : id-camellia128-wrap
1 2 392 200011 61 1 1 3 3 : id-camellia192-wrap
1 2 392 200011 61 1 1 3 4 : id-camellia256-wrap
# Definitions for Camellia cipher - ECB, CFB, OFB MODE
@@ -1286,3 +1283,90 @@ kisa 1 6 : SEED-OFB : seed-ofb
# There is no OID that just denotes "HMAC" oddly enough...
: HMAC : hmac
# Nor CMAC either
: CMAC : cmac
# Synthetic composite ciphersuites
: RC4-HMAC-MD5 : rc4-hmac-md5
: AES-128-CBC-HMAC-SHA1 : aes-128-cbc-hmac-sha1
: AES-192-CBC-HMAC-SHA1 : aes-192-cbc-hmac-sha1
: AES-256-CBC-HMAC-SHA1 : aes-256-cbc-hmac-sha1
: AES-128-CBC-HMAC-SHA256 : aes-128-cbc-hmac-sha256
: AES-192-CBC-HMAC-SHA256 : aes-192-cbc-hmac-sha256
: AES-256-CBC-HMAC-SHA256 : aes-256-cbc-hmac-sha256
ISO-US 10046 2 1 : dhpublicnumber : X9.42 DH
# RFC 5639 curve OIDs (see http://www.ietf.org/rfc/rfc5639.txt)
# versionOne OBJECT IDENTIFIER ::= {
# iso(1) identifified-organization(3) teletrust(36) algorithm(3)
# signature-algorithm(3) ecSign(2) ecStdCurvesAndGeneration(8)
# ellipticCurve(1) 1 }
1 3 36 3 3 2 8 1 1 1 : brainpoolP160r1
1 3 36 3 3 2 8 1 1 2 : brainpoolP160t1
1 3 36 3 3 2 8 1 1 3 : brainpoolP192r1
1 3 36 3 3 2 8 1 1 4 : brainpoolP192t1
1 3 36 3 3 2 8 1 1 5 : brainpoolP224r1
1 3 36 3 3 2 8 1 1 6 : brainpoolP224t1
1 3 36 3 3 2 8 1 1 7 : brainpoolP256r1
1 3 36 3 3 2 8 1 1 8 : brainpoolP256t1
1 3 36 3 3 2 8 1 1 9 : brainpoolP320r1
1 3 36 3 3 2 8 1 1 10 : brainpoolP320t1
1 3 36 3 3 2 8 1 1 11 : brainpoolP384r1
1 3 36 3 3 2 8 1 1 12 : brainpoolP384t1
1 3 36 3 3 2 8 1 1 13 : brainpoolP512r1
1 3 36 3 3 2 8 1 1 14 : brainpoolP512t1
# ECDH schemes from RFC5753
!Alias x9-63-scheme 1 3 133 16 840 63 0
!Alias secg-scheme certicom-arc 1
x9-63-scheme 2 : dhSinglePass-stdDH-sha1kdf-scheme
secg-scheme 11 0 : dhSinglePass-stdDH-sha224kdf-scheme
secg-scheme 11 1 : dhSinglePass-stdDH-sha256kdf-scheme
secg-scheme 11 2 : dhSinglePass-stdDH-sha384kdf-scheme
secg-scheme 11 3 : dhSinglePass-stdDH-sha512kdf-scheme
x9-63-scheme 3 : dhSinglePass-cofactorDH-sha1kdf-scheme
secg-scheme 14 0 : dhSinglePass-cofactorDH-sha224kdf-scheme
secg-scheme 14 1 : dhSinglePass-cofactorDH-sha256kdf-scheme
secg-scheme 14 2 : dhSinglePass-cofactorDH-sha384kdf-scheme
secg-scheme 14 3 : dhSinglePass-cofactorDH-sha512kdf-scheme
# NIDs for use with lookup tables.
: dh-std-kdf
: dh-cofactor-kdf
# RFC 6962 Extension OIDs (see http://www.ietf.org/rfc/rfc6962.txt)
1 3 6 1 4 1 11129 2 4 2 : ct_precert_scts : CT Precertificate SCTs
1 3 6 1 4 1 11129 2 4 3 : ct_precert_poison : CT Precertificate Poison
1 3 6 1 4 1 11129 2 4 4 : ct_precert_signer : CT Precertificate Signer
1 3 6 1 4 1 11129 2 4 5 : ct_cert_scts : CT Certificate SCTs
# CABForum EV SSL Certificate Guidelines
# (see https://cabforum.org/extended-validation/)
# OIDs for Subject Jurisdiction of Incorporation or Registration
1 3 6 1 4 1 311 60 2 1 1 : jurisdictionL : jurisdictionLocalityName
1 3 6 1 4 1 311 60 2 1 2 : jurisdictionST : jurisdictionStateOrProvinceName
1 3 6 1 4 1 311 60 2 1 3 : jurisdictionC : jurisdictionCountryName
# SM: China National Cryptography Standards
member-body 156 : ISO-CN : ISO CN Member Body
ISO-CN 10197 : oscca
oscca 1 : sm
sm 301 : sm2
sm2 1 : sm2sign
sm2 2 : sm2keyagreement
sm2 3 : sm2encrypt
sm2 4 : sm2p256v1
sm 401 : SM3 : sm3
sm 401 2 : HMAC-SM3 : hmac-sm3
sm 501 : SM2Sign-with-SM3 : sm2sign-with-sm3
sm 502 : SM2Sign-with-SHA1 : sm2sign-with-sha1
sm 503 : SM2Sign-with-SHA256 : sm2sign-with-sha256
sm 104 1 : SMS4-ECB : sms4-ecb
sm 104 2 : SMS4-CBC : sms4-cbc
!Cname sms4-cfb128
sm 104 3 : SMS4-CFB : sms4-cfb
!Cname sms4-ofb128
sm 104 4 : SMS4-OFB : sms4-ofb

View File

@@ -39,7 +39,8 @@ my @xrkeys = keys %xref_tbl;
my @srt1 = sort { $oid_tbl{$a} <=> $oid_tbl{$b}} @xrkeys;
for(my $i = 0; $i <= $#srt1; $i++)
my $i;
for($i = 0; $i <= $#srt1; $i++)
{
$xref_tbl{$srt1[$i]}[2] = $i;
}
@@ -62,39 +63,48 @@ $pname =~ s|^.[^/]/||;
print <<EOF;
/* AUTOGENERATED BY $pname, DO NOT EDIT */
typedef struct
{
int sign_id;
int hash_id;
int pkey_id;
} nid_triple;
typedef struct {
int sign_id;
int hash_id;
int pkey_id;
} nid_triple;
static const nid_triple sigoid_srt[] =
{
static const nid_triple sigoid_srt[] = {
EOF
foreach (@srt1)
{
my $xr = $_;
my ($p1, $p2) = @{$xref_tbl{$_}};
print "\t{NID_$xr, NID_$p1, NID_$p2},\n";
}
my $o1 = " {NID_$xr, NID_$p1,";
my $o2 = "NID_$p2},";
if (length("$o1 $o2") < 78)
{
print "$o1 $o2\n";
}
else
{
print "$o1\n $o2\n";
}
}
print "\t};";
print "};";
print <<EOF;
static const nid_triple * const sigoid_srt_xref[] =
{
static const nid_triple *const sigoid_srt_xref[] = {
EOF
foreach (@srt2)
{
my $x = $xref_tbl{$_}[2];
print "\t\&sigoid_srt\[$x\],\n";
my ($p1, $p2, $x) = @{$xref_tbl{$_}};
# If digest or signature algorithm is "undef" then the algorithm
# needs special handling and is excluded from the cross reference table.
next if $p1 eq "undef" || $p2 eq "undef";
print " \&sigoid_srt\[$x\],\n";
}
print "\t};\n\n";
print "};\n";
sub check_oid
{
@@ -104,4 +114,3 @@ sub check_oid
die "Not Found \"$chk\"\n";
}
}