Latest update
This commit is contained in:
+48
-57
@@ -221,43 +221,41 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
|
||||
|
||||
# define DECLARE_ASN1_FUNCTIONS_name(type, name) \
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name)
|
||||
|
||||
# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name)
|
||||
|
||||
# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \
|
||||
type *d2i_##name(type **a, const unsigned char **in, long len); \
|
||||
int i2d_##name(type *a, unsigned char **out); \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \
|
||||
DECLARE_ASN1_ITEM(itname)
|
||||
|
||||
# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
|
||||
# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name)
|
||||
|
||||
# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \
|
||||
type *d2i_##name(type **a, const unsigned char **in, long len); \
|
||||
int i2d_##name(const type *a, unsigned char **out); \
|
||||
DECLARE_ASN1_ITEM(name)
|
||||
int i2d_##name(const type *a, unsigned char **out);
|
||||
|
||||
# define DECLARE_ASN1_NDEF_FUNCTION(name) \
|
||||
int i2d_##name##_NDEF(name *a, unsigned char **out);
|
||||
|
||||
# define DECLARE_ASN1_FUNCTIONS_const(name) \
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(name) \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name)
|
||||
int i2d_##name##_NDEF(const name *a, unsigned char **out);
|
||||
|
||||
# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
|
||||
type *name##_new(void); \
|
||||
void name##_free(type *a);
|
||||
|
||||
# define DECLARE_ASN1_DUP_FUNCTION(type) \
|
||||
DECLARE_ASN1_DUP_FUNCTION_name(type, type)
|
||||
|
||||
# define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \
|
||||
type *name##_dup(const type *a);
|
||||
|
||||
# define DECLARE_ASN1_PRINT_FUNCTION(stname) \
|
||||
DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
|
||||
|
||||
# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
|
||||
int fname##_print_ctx(BIO *out, stname *x, int indent, \
|
||||
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
# define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
|
||||
# define I2D_OF(type) int (*)(type *,unsigned char **)
|
||||
# define I2D_OF_const(type) int (*)(const type *,unsigned char **)
|
||||
# define I2D_OF(type) int (*)(const type *,unsigned char **)
|
||||
|
||||
# define CHECKED_D2I_OF(type, d2i) \
|
||||
((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
|
||||
@@ -271,7 +269,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
|
||||
((void**) (1 ? p : (type**)0))
|
||||
|
||||
# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
|
||||
# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
|
||||
# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(const type *,unsigned char **)
|
||||
# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
|
||||
|
||||
TYPEDEF_D2I2D_OF(void);
|
||||
@@ -476,8 +474,8 @@ DEFINE_STACK_OF(ASN1_TYPE)
|
||||
|
||||
typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
|
||||
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SET_ANY)
|
||||
|
||||
/* This is used to contain a list of bit names */
|
||||
typedef struct BIT_STRING_BITNAME_st {
|
||||
@@ -515,7 +513,8 @@ typedef struct BIT_STRING_BITNAME_st {
|
||||
B_ASN1_BMPSTRING|\
|
||||
B_ASN1_UTF8STRING
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
|
||||
|
||||
int ASN1_TYPE_get(const ASN1_TYPE *a);
|
||||
void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
|
||||
@@ -525,21 +524,14 @@ int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
|
||||
ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t);
|
||||
void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t);
|
||||
|
||||
ASN1_OBJECT *ASN1_OBJECT_new(void);
|
||||
void ASN1_OBJECT_free(ASN1_OBJECT *a);
|
||||
int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp);
|
||||
ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
|
||||
long length);
|
||||
|
||||
DECLARE_ASN1_ITEM(ASN1_OBJECT)
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(ASN1_OBJECT)
|
||||
DEFINE_STACK_OF(ASN1_OBJECT)
|
||||
|
||||
ASN1_STRING *ASN1_STRING_new(void);
|
||||
void ASN1_STRING_free(ASN1_STRING *a);
|
||||
void ASN1_STRING_clear_free(ASN1_STRING *a);
|
||||
int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
|
||||
ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a);
|
||||
DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING)
|
||||
ASN1_STRING *ASN1_STRING_type_new(int type);
|
||||
int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
|
||||
/*
|
||||
@@ -570,7 +562,7 @@ int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value,
|
||||
DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER)
|
||||
ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
|
||||
long length);
|
||||
ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x);
|
||||
DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER)
|
||||
int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED)
|
||||
@@ -594,7 +586,7 @@ int ASN1_TIME_diff(int *pday, int *psec,
|
||||
const ASN1_TIME *from, const ASN1_TIME *to);
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
|
||||
ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a);
|
||||
DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING)
|
||||
int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
|
||||
const ASN1_OCTET_STRING *b);
|
||||
int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data,
|
||||
@@ -685,19 +677,14 @@ int ASN1_put_eoc(unsigned char **pp);
|
||||
int ASN1_object_size(int constructed, int length, int tag);
|
||||
|
||||
/* Used to implement other functions */
|
||||
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x);
|
||||
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const void *x);
|
||||
|
||||
# define ASN1_dup_of(type,i2d,d2i,x) \
|
||||
((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
|
||||
CHECKED_D2I_OF(type, d2i), \
|
||||
CHECKED_PTR_OF(type, x)))
|
||||
|
||||
# define ASN1_dup_of_const(type,i2d,d2i,x) \
|
||||
((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \
|
||||
CHECKED_D2I_OF(type, d2i), \
|
||||
CHECKED_PTR_OF(const type, x)))
|
||||
|
||||
void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
|
||||
void *ASN1_item_dup(const ASN1_ITEM *it, const void *x);
|
||||
|
||||
/* ASN1 alloc/free macros for when a type is only used internally */
|
||||
|
||||
@@ -715,19 +702,14 @@ void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x);
|
||||
CHECKED_PPTR_OF(type, x)))
|
||||
|
||||
void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
|
||||
int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x);
|
||||
int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x);
|
||||
|
||||
# define ASN1_i2d_fp_of(type,i2d,out,x) \
|
||||
(ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(type, x)))
|
||||
|
||||
# define ASN1_i2d_fp_of_const(type,i2d,out,x) \
|
||||
(ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(const type, x)))
|
||||
|
||||
int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
|
||||
int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const void *x);
|
||||
int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags);
|
||||
# endif
|
||||
|
||||
@@ -742,19 +724,14 @@ void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x);
|
||||
CHECKED_PPTR_OF(type, x)))
|
||||
|
||||
void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
|
||||
int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x);
|
||||
int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x);
|
||||
|
||||
# define ASN1_i2d_bio_of(type,i2d,out,x) \
|
||||
(ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(type, x)))
|
||||
|
||||
# define ASN1_i2d_bio_of_const(type,i2d,out,x) \
|
||||
(ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \
|
||||
out, \
|
||||
CHECKED_PTR_OF(const type, x)))
|
||||
|
||||
int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
|
||||
int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x);
|
||||
int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
|
||||
int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
|
||||
int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a);
|
||||
@@ -807,8 +784,8 @@ ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
|
||||
void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
|
||||
ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in,
|
||||
long len, const ASN1_ITEM *it);
|
||||
int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
|
||||
int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out,
|
||||
int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
|
||||
int ASN1_item_ndef_i2d(const ASN1_VALUE *val, unsigned char **out,
|
||||
const ASN1_ITEM *it);
|
||||
|
||||
void ASN1_add_oid_module(void);
|
||||
@@ -839,7 +816,7 @@ int ASN1_str2mask(const char *str, unsigned long *pmask);
|
||||
/* Don't show structure name even at top level */
|
||||
# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
|
||||
|
||||
int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
|
||||
int ASN1_item_print(BIO *out, const ASN1_VALUE *ifld, int indent,
|
||||
const ASN1_ITEM *it, const ASN1_PCTX *pctx);
|
||||
ASN1_PCTX *ASN1_PCTX_new(void);
|
||||
void ASN1_PCTX_free(ASN1_PCTX *p);
|
||||
@@ -864,12 +841,14 @@ void *ASN1_SCTX_get_app_data(ASN1_SCTX *p);
|
||||
|
||||
const BIO_METHOD *BIO_f_asn1(void);
|
||||
|
||||
/* cannot constify val because of CMS_stream() */
|
||||
BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
|
||||
|
||||
int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
|
||||
const ASN1_ITEM *it);
|
||||
int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
|
||||
const char *hdr, const ASN1_ITEM *it);
|
||||
/* cannot constify val because of CMS_dataFinal() */
|
||||
int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
|
||||
int ctype_nid, int econt_nid,
|
||||
STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it);
|
||||
@@ -880,6 +859,18 @@ int SMIME_text(BIO *in, BIO *out);
|
||||
const ASN1_ITEM *ASN1_ITEM_lookup(const char *name);
|
||||
const ASN1_ITEM *ASN1_ITEM_get(size_t i);
|
||||
|
||||
/* Legacy compatibility */
|
||||
# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
|
||||
# define DECLARE_ASN1_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type)
|
||||
# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(type, name)
|
||||
# define I2D_OF_const(type) I2D_OF(type)
|
||||
# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x)
|
||||
# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x)
|
||||
# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x)
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
+39
-36
@@ -152,19 +152,29 @@ extern "C" {
|
||||
ASN1_SEQUENCE_cb(tname, cb)
|
||||
|
||||
# define ASN1_SEQUENCE_cb(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \
|
||||
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_const_cb(tname, const_cb) \
|
||||
static const ASN1_AUX tname##_aux = \
|
||||
{NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \
|
||||
static const ASN1_AUX tname##_aux = \
|
||||
{NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_BROKEN_SEQUENCE(tname) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, NULL, 0, NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_ref(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0}; \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_enc(tname, enc, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc)}; \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_NDEF_SEQUENCE_END(tname) \
|
||||
@@ -261,7 +271,7 @@ extern "C" {
|
||||
static const ASN1_TEMPLATE tname##_ch_tt[]
|
||||
|
||||
# define ASN1_CHOICE_cb(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \
|
||||
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
|
||||
ASN1_CHOICE(tname)
|
||||
|
||||
# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
|
||||
@@ -661,21 +671,21 @@ typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx);
|
||||
|
||||
typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
|
||||
typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||
const ASN1_ITEM *it, int tag, int aclass);
|
||||
typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
|
||||
typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval,
|
||||
typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval,
|
||||
int indent, const char *fname,
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont,
|
||||
typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont,
|
||||
int *putype, const ASN1_ITEM *it);
|
||||
typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont,
|
||||
int len, int utype, char *free_cont,
|
||||
const ASN1_ITEM *it);
|
||||
typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval,
|
||||
typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval,
|
||||
const ASN1_ITEM *it, int indent,
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
@@ -711,10 +721,16 @@ typedef struct ASN1_PRIMITIVE_FUNCS_st {
|
||||
* error has occurred and the main operation should be abandoned. If major
|
||||
* changes in the default behaviour are required then an external type is
|
||||
* more appropriate.
|
||||
* For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and
|
||||
* ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter
|
||||
* 'in' is provided to make clear statically that its input is not modified. If
|
||||
* and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set.
|
||||
*/
|
||||
|
||||
typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
|
||||
void *exarg);
|
||||
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
|
||||
const ASN1_ITEM *it, void *exarg);
|
||||
|
||||
typedef struct ASN1_AUX_st {
|
||||
void *app_data;
|
||||
@@ -723,6 +739,7 @@ typedef struct ASN1_AUX_st {
|
||||
int ref_lock; /* Lock type to use */
|
||||
ASN1_aux_cb *asn1_cb;
|
||||
int enc_offset; /* Offset of ASN1_ENCODING structure */
|
||||
ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
|
||||
} ASN1_AUX;
|
||||
|
||||
/* For print related callbacks exarg points to this structure */
|
||||
@@ -750,6 +767,8 @@ typedef struct ASN1_STREAM_ARG_st {
|
||||
# define ASN1_AFLG_ENCODING 2
|
||||
/* The Sequence length is invalid */
|
||||
# define ASN1_AFLG_BROKEN 4
|
||||
/* Use the new asn1_const_cb */
|
||||
# define ASN1_AFLG_CONST_CB 8
|
||||
|
||||
/* operation values for asn1_cb */
|
||||
|
||||
@@ -836,13 +855,13 @@ typedef struct ASN1_STREAM_ARG_st {
|
||||
{ \
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
|
||||
} \
|
||||
int i2d_##fname(stname *a, unsigned char **out) \
|
||||
int i2d_##fname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
|
||||
int i2d_##stname##_NDEF(stname *a, unsigned char **out) \
|
||||
int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
|
||||
}
|
||||
@@ -854,28 +873,14 @@ typedef struct ASN1_STREAM_ARG_st {
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \
|
||||
ASN1_ITEM_rptr(stname)); \
|
||||
} \
|
||||
static int i2d_##stname(stname *a, unsigned char **out) \
|
||||
static int i2d_##stname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((ASN1_VALUE *)a, out, \
|
||||
ASN1_ITEM_rptr(stname)); \
|
||||
}
|
||||
|
||||
/*
|
||||
* This includes evil casts to remove const: they will go away when full ASN1
|
||||
* constification is done.
|
||||
*/
|
||||
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||
stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
|
||||
} \
|
||||
int i2d_##fname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
|
||||
stname * stname##_dup(stname *x) \
|
||||
stname * stname##_dup(const stname *x) \
|
||||
{ \
|
||||
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
||||
}
|
||||
@@ -884,20 +889,13 @@ typedef struct ASN1_STREAM_ARG_st {
|
||||
IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
|
||||
|
||||
# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
|
||||
int fname##_print_ctx(BIO *out, stname *x, int indent, \
|
||||
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
|
||||
const ASN1_PCTX *pctx) \
|
||||
{ \
|
||||
return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \
|
||||
ASN1_ITEM_rptr(itname), pctx); \
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
|
||||
IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
|
||||
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
|
||||
|
||||
/* external definitions for primitive types */
|
||||
|
||||
DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
|
||||
@@ -936,9 +934,14 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx);
|
||||
|
||||
int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
|
||||
int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||
const ASN1_ITEM *it, int tag, int aclass);
|
||||
|
||||
/* Legacy compatibility */
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name)
|
||||
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -223,6 +223,8 @@ int BN_bn2bin(const BIGNUM *a, unsigned char *to);
|
||||
int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||
BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||
BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||
BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
|
||||
int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||
|
||||
@@ -199,7 +199,7 @@ CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
|
||||
const EVP_CIPHER *kekciph);
|
||||
|
||||
int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||
int CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||
int CMS_RecipientInfo_encrypt(const CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||
|
||||
int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
|
||||
unsigned int flags);
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
/*
|
||||
* Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
*/
|
||||
|
||||
#ifndef OSSL_CORE_H
|
||||
# define OSSL_CORE_H
|
||||
|
||||
# include <stddef.h>
|
||||
# include <openssl/ossl_typ.h>
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/*-
|
||||
* Base types
|
||||
* ----------
|
||||
*
|
||||
* These are the types that the OpenSSL core and providers have in common
|
||||
* to communicate data between them.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Dispatch table element. function_id numbers are defined further down,
|
||||
* see macros with '_FUNC' in their names.
|
||||
*
|
||||
* An array of these is always terminated by function_id == 0
|
||||
*/
|
||||
struct ossl_dispatch_st {
|
||||
int function_id;
|
||||
void (*function)(void);
|
||||
};
|
||||
|
||||
/*
|
||||
* Other items, essentially an int<->pointer map element.
|
||||
*
|
||||
* We make this type distinct from OSSL_DISPATCH to ensure that dispatch
|
||||
* tables remain tables with function pointers only.
|
||||
*
|
||||
* This is used whenever we need to pass things like a table of error reason
|
||||
* codes <-> reason string maps, parameter name <-> parameter type maps, ...
|
||||
*
|
||||
* Usage determines which field works as key if any, rather than field order.
|
||||
*
|
||||
* An array of these is always terminated by id == 0 && ptr == NULL
|
||||
*/
|
||||
struct ossl_item_st {
|
||||
unsigned int id;
|
||||
void *ptr;
|
||||
};
|
||||
|
||||
/*
|
||||
* Type to tie together algorithm name, property definition string and
|
||||
* the algorithm implementation in the form of a dispatch table.
|
||||
*
|
||||
* An array of these is always terminated by algorithm_name == NULL
|
||||
*/
|
||||
struct ossl_algorithm_st {
|
||||
const char *algorithm_name; /* key */
|
||||
const char *property_definition; /* key */
|
||||
const OSSL_DISPATCH *implementation;
|
||||
};
|
||||
|
||||
/*
|
||||
* Type to pass object data in a uniform way, without exposing the object
|
||||
* structure.
|
||||
*
|
||||
* An array of these is always terminated by key == NULL
|
||||
*/
|
||||
struct ossl_param_st {
|
||||
const char *key; /* the name of the parameter */
|
||||
unsigned int data_type; /* declare what kind of content is in buffer */
|
||||
void *buffer; /* value being passed in or out */
|
||||
size_t buffer_size; /* buffer size */
|
||||
size_t *return_size; /* OPTIONAL: address to content size */
|
||||
};
|
||||
|
||||
/* Currently supported OSSL_PARAM data types */
|
||||
/*
|
||||
* OSSL_PARAM_INTEGER and OSSL_PARAM_UNSIGNED_INTEGER
|
||||
* are arbitrary length and therefore require an arbitrarily sized buffer,
|
||||
* since they may be used to pass numbers larger than what is natively
|
||||
* available.
|
||||
*
|
||||
* The number must be buffered in native form, i.e. MSB first on B_ENDIAN
|
||||
* systems and LSB first on L_ENDIAN systems. This means that arbitrary
|
||||
* native integers can be stored in the buffer, just make sure that the
|
||||
* buffer size is correct and the buffer itself is properly aligned (for
|
||||
* example by having the buffer field point at a C integer).
|
||||
*/
|
||||
# define OSSL_PARAM_INTEGER 1
|
||||
# define OSSL_PARAM_UNSIGNED_INTEGER 2
|
||||
/*-
|
||||
* OSSL_PARAM_REAL
|
||||
* is a C binary floating point values in native form and alignment.
|
||||
*/
|
||||
# define OSSL_PARAM_REAL 3
|
||||
/*-
|
||||
* OSSL_PARAM_UTF8_STRING
|
||||
* is a printable string. Is expteced to be printed as it is.
|
||||
*/
|
||||
# define OSSL_PARAM_UTF8_STRING 4
|
||||
/*-
|
||||
* OSSL_PARAM_OCTET_STRING
|
||||
* is a string of bytes with no further specification. Is expected to be
|
||||
* printed as a hexdump.
|
||||
*/
|
||||
# define OSSL_PARAM_OCTET_STRING 5
|
||||
|
||||
/*-
|
||||
* Pointer flag
|
||||
*
|
||||
* This flag can be added to any type to signify that the buffer
|
||||
* pointer is set to point at a pointer to the data instead of
|
||||
* pointing directly at the data.
|
||||
*
|
||||
* This is more relevant for parameter requests, where the responding
|
||||
* function doesn't need to copy the data to the provided buffer, but
|
||||
* sets the provided buffer to point at the actual data instead.
|
||||
*
|
||||
* WARNING! Using these is FRAGILE, as it assumes that the actual
|
||||
* data and its location are constant.
|
||||
*/
|
||||
# define OSSL_PARAM_POINTER_FLAG 0x80000000UL
|
||||
|
||||
/*
|
||||
* Convenience pointer types for strings.
|
||||
*/
|
||||
# define OSSL_PARAM_UTF8_STRING_PTR \
|
||||
(OSSL_PARAM_UTF8_STRING|OSSL_PARAM_POINTER_FLAG)
|
||||
# define OSSL_PARAM_OCTET_STRING_PTR \
|
||||
(OSSL_PARAM_OCTET_STRING|OSSL_PARAM_POINTER_FLAG)
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif
|
||||
@@ -98,7 +98,7 @@ DECLARE_ASN1_ITEM(DHparams)
|
||||
# define d2i_DHparams_bio(bp,x) \
|
||||
ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x)
|
||||
# define i2d_DHparams_bio(bp,x) \
|
||||
ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x)
|
||||
ASN1_i2d_bio_of(DH,i2d_DHparams,bp,x)
|
||||
|
||||
# define d2i_DHxparams_fp(fp,x) \
|
||||
(DH *)ASN1_d2i_fp((char *(*)())DH_new, \
|
||||
@@ -110,9 +110,9 @@ DECLARE_ASN1_ITEM(DHparams)
|
||||
# define d2i_DHxparams_bio(bp,x) \
|
||||
ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x)
|
||||
# define i2d_DHxparams_bio(bp,x) \
|
||||
ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x)
|
||||
ASN1_i2d_bio_of(DH, i2d_DHxparams, bp, x)
|
||||
|
||||
DH *DHparams_dup(DH *);
|
||||
DECLARE_ASN1_DUP_FUNCTION_name(DH, DHparams)
|
||||
|
||||
const DH_METHOD *DH_OpenSSL(void);
|
||||
|
||||
@@ -151,10 +151,8 @@ int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes);
|
||||
int DH_generate_key(DH *dh);
|
||||
int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh);
|
||||
int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh);
|
||||
DH *d2i_DHparams(DH **a, const unsigned char **pp, long length);
|
||||
int i2d_DHparams(const DH *a, unsigned char **pp);
|
||||
DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length);
|
||||
int i2d_DHxparams(const DH *a, unsigned char **pp);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DH, DHparams)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DH, DHxparams)
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
int DHparams_print_fp(FILE *fp, const DH *x);
|
||||
# endif
|
||||
|
||||
+7
-10
@@ -17,6 +17,7 @@
|
||||
extern "C" {
|
||||
# endif
|
||||
# include <openssl/e_os2.h>
|
||||
# include <openssl/asn1.h>
|
||||
# include <openssl/bio.h>
|
||||
# include <openssl/crypto.h>
|
||||
# include <openssl/ossl_typ.h>
|
||||
@@ -69,13 +70,12 @@ typedef struct DSA_SIG_st DSA_SIG;
|
||||
# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \
|
||||
(unsigned char *)(x))
|
||||
# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x)
|
||||
# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x)
|
||||
# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of(DSA,i2d_DSAparams,bp,x)
|
||||
|
||||
DSA *DSAparams_dup(DSA *x);
|
||||
DECLARE_ASN1_DUP_FUNCTION_name(DSA, DSAparams)
|
||||
DSA_SIG *DSA_SIG_new(void);
|
||||
void DSA_SIG_free(DSA_SIG *a);
|
||||
int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
|
||||
DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA_SIG, DSA_SIG)
|
||||
void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
|
||||
int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s);
|
||||
|
||||
@@ -109,9 +109,9 @@ int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
|
||||
int DSA_set_ex_data(DSA *d, int idx, void *arg);
|
||||
void *DSA_get_ex_data(DSA *d, int idx);
|
||||
|
||||
DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
|
||||
DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length);
|
||||
DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA, DSAPublicKey)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA, DSAPrivateKey)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA, DSAparams)
|
||||
|
||||
/* Deprecated version */
|
||||
DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits,
|
||||
@@ -130,9 +130,6 @@ int DSA_generate_parameters_ex(DSA *dsa, int bits,
|
||||
BN_GENCB *cb);
|
||||
|
||||
int DSA_generate_key(DSA *a);
|
||||
int i2d_DSAPublicKey(const DSA *a, unsigned char **pp);
|
||||
int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
|
||||
int i2d_DSAparams(const DSA *a, unsigned char **pp);
|
||||
|
||||
int DSAparams_print(BIO *bp, const DSA *x);
|
||||
int DSA_print(BIO *bp, const DSA *x, int off);
|
||||
|
||||
@@ -123,7 +123,7 @@ void EC_GROUP_clear_free(EC_GROUP *group);
|
||||
*/
|
||||
int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);
|
||||
|
||||
/** Creates a new EC_GROUP object and copies the copies the content
|
||||
/** Creates a new EC_GROUP object and copies the content
|
||||
* form src to the newly created EC_KEY object
|
||||
* \param src source EC_GROUP object
|
||||
* \return newly created EC_GROUP object or NULL in case of an error.
|
||||
@@ -800,7 +800,7 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len);
|
||||
int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out);
|
||||
|
||||
# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x)
|
||||
# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x)
|
||||
# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of(EC_GROUP,i2d_ECPKParameters,bp,x)
|
||||
# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \
|
||||
(char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x))
|
||||
# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \
|
||||
@@ -1028,7 +1028,7 @@ EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len);
|
||||
* of bytes needed).
|
||||
* \return 1 on success and 0 if an error occurred.
|
||||
*/
|
||||
int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out);
|
||||
int i2d_ECPrivateKey(const EC_KEY *key, unsigned char **out);
|
||||
|
||||
/********************************************************************/
|
||||
/* de- and encoding functions for EC parameters */
|
||||
@@ -1049,7 +1049,7 @@ EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len);
|
||||
* of bytes needed).
|
||||
* \return 1 on success and 0 if an error occurred.
|
||||
*/
|
||||
int i2d_ECParameters(EC_KEY *key, unsigned char **out);
|
||||
int i2d_ECParameters(const EC_KEY *key, unsigned char **out);
|
||||
|
||||
/********************************************************************/
|
||||
/* de- and encoding functions for EC public key */
|
||||
@@ -1140,22 +1140,21 @@ ECDSA_SIG *ECDSA_SIG_new(void);
|
||||
*/
|
||||
void ECDSA_SIG_free(ECDSA_SIG *sig);
|
||||
|
||||
/** DER encode content of ECDSA_SIG object (note: this function modifies *pp
|
||||
/** i2d_ECDSA_SIG encodes content of ECDSA_SIG (note: this function modifies *pp
|
||||
* (*pp += length of the DER encoded signature)).
|
||||
* \param sig pointer to the ECDSA_SIG object
|
||||
* \param pp pointer to a unsigned char pointer for the output or NULL
|
||||
* \return the length of the DER encoded ECDSA_SIG object or 0
|
||||
*/
|
||||
int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ECDSA_SIG, ECDSA_SIG)
|
||||
|
||||
/** Decodes a DER encoded ECDSA signature (note: this function changes *pp
|
||||
/** d2i_ECDSA_SIG decodes an ECDSA signature (note: this function modifies *pp
|
||||
* (*pp += len)).
|
||||
* \param sig pointer to ECDSA_SIG pointer (may be NULL)
|
||||
* \param pp memory buffer with the DER encoded signature
|
||||
* \param len length of the buffer
|
||||
* \return pointer to the decoded ECDSA_SIG structure (or NULL)
|
||||
*/
|
||||
ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
|
||||
|
||||
/** Accessor for r and s fields of ECDSA_SIG
|
||||
* \param sig pointer to ECDSA_SIG structure
|
||||
|
||||
+15
-32
@@ -30,45 +30,28 @@ typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2;
|
||||
|
||||
DEFINE_STACK_OF(ESS_CERT_ID_V2)
|
||||
|
||||
ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void);
|
||||
void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a);
|
||||
int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp);
|
||||
ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a,
|
||||
const unsigned char **pp,
|
||||
long length);
|
||||
ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL)
|
||||
|
||||
ESS_CERT_ID *ESS_CERT_ID_new(void);
|
||||
void ESS_CERT_ID_free(ESS_CERT_ID *a);
|
||||
int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp);
|
||||
ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp,
|
||||
long length);
|
||||
ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID)
|
||||
|
||||
ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void);
|
||||
void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a);
|
||||
int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp);
|
||||
ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a,
|
||||
const unsigned char **pp, long length);
|
||||
ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_SIGNING_CERT)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_SIGNING_CERT, ESS_SIGNING_CERT)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT)
|
||||
ESS_SIGNING_CERT *ESS_SIGNING_CERT_new_init(X509 *signcert,
|
||||
STACK_OF(X509) *certs,
|
||||
int issuer_needed);
|
||||
|
||||
ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void);
|
||||
void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a);
|
||||
int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp);
|
||||
ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a,
|
||||
const unsigned char **pp, long length);
|
||||
ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2)
|
||||
|
||||
ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void);
|
||||
void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a);
|
||||
int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp);
|
||||
ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a,
|
||||
const unsigned char **pp,
|
||||
long length);
|
||||
ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_SIGNING_CERT_V2)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_SIGNING_CERT_V2, ESS_SIGNING_CERT_V2)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2)
|
||||
ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new_init(const EVP_MD *hash_alg,
|
||||
X509 *signcert,
|
||||
STACK_OF(X509) *certs,
|
||||
|
||||
+25
-29
@@ -410,31 +410,30 @@ typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
|
||||
|
||||
# ifndef OPENSSL_NO_RSA
|
||||
# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
|
||||
(char *)(rsa))
|
||||
(rsa))
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_DSA
|
||||
# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
|
||||
(char *)(dsa))
|
||||
(dsa))
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_DH
|
||||
# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\
|
||||
(char *)(dh))
|
||||
# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,(dh))
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_EC
|
||||
# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\
|
||||
(char *)(eckey))
|
||||
(eckey))
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_SIPHASH
|
||||
# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\
|
||||
(char *)(shkey))
|
||||
# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),\
|
||||
EVP_PKEY_SIPHASH,(shkey))
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_POLY1305
|
||||
# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\
|
||||
(char *)(polykey))
|
||||
# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),\
|
||||
EVP_PKEY_POLY1305,(polykey))
|
||||
# endif
|
||||
|
||||
/* Add some extra combinations */
|
||||
@@ -513,16 +512,13 @@ void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data);
|
||||
# ifdef CONST_STRICT
|
||||
void BIO_set_md(BIO *, const EVP_MD *md);
|
||||
# else
|
||||
# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)(md))
|
||||
# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(void *)(md))
|
||||
# endif
|
||||
# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)(mdp))
|
||||
# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0, \
|
||||
(char *)(mdcp))
|
||||
# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0, \
|
||||
(char *)(mdcp))
|
||||
# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(mdp))
|
||||
# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(mdcp))
|
||||
# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(mdcp))
|
||||
# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
|
||||
# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0, \
|
||||
(char *)(c_pp))
|
||||
# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(c_pp))
|
||||
|
||||
/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c,
|
||||
unsigned char *out,
|
||||
@@ -660,7 +656,7 @@ __owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
|
||||
|
||||
EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void);
|
||||
void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx);
|
||||
int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx);
|
||||
int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx);
|
||||
int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx);
|
||||
void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
|
||||
int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
|
||||
@@ -1007,7 +1003,7 @@ void EVP_MD_do_all_sorted(void (*fn)
|
||||
EVP_MAC_CTX *EVP_MAC_CTX_new(const EVP_MAC *mac);
|
||||
EVP_MAC_CTX *EVP_MAC_CTX_new_id(int nid);
|
||||
void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx);
|
||||
int EVP_MAC_CTX_copy(EVP_MAC_CTX *dest, EVP_MAC_CTX *src);
|
||||
int EVP_MAC_CTX_copy(EVP_MAC_CTX *dest, const EVP_MAC_CTX *src);
|
||||
const EVP_MAC *EVP_MAC_CTX_mac(EVP_MAC_CTX *ctx);
|
||||
size_t EVP_MAC_size(EVP_MAC_CTX *ctx);
|
||||
int EVP_MAC_init(EVP_MAC_CTX *ctx);
|
||||
@@ -1074,25 +1070,25 @@ const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len);
|
||||
# ifndef OPENSSL_NO_RSA
|
||||
struct rsa_st;
|
||||
int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key);
|
||||
struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey);
|
||||
struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey);
|
||||
struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DSA
|
||||
struct dsa_st;
|
||||
int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key);
|
||||
struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey);
|
||||
struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey);
|
||||
struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DH
|
||||
struct dh_st;
|
||||
int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key);
|
||||
struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey);
|
||||
struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey);
|
||||
struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
struct ec_key_st;
|
||||
int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key);
|
||||
struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey);
|
||||
struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey);
|
||||
struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
|
||||
# endif
|
||||
|
||||
@@ -1102,13 +1098,13 @@ void EVP_PKEY_free(EVP_PKEY *pkey);
|
||||
|
||||
EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
|
||||
long length);
|
||||
int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
|
||||
int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp);
|
||||
|
||||
EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
|
||||
long length);
|
||||
EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
|
||||
long length);
|
||||
int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
|
||||
int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp);
|
||||
|
||||
int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
|
||||
int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
|
||||
@@ -1399,7 +1395,7 @@ const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx);
|
||||
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx);
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx);
|
||||
void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
|
||||
|
||||
int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
|
||||
@@ -1434,7 +1430,7 @@ EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv,
|
||||
size_t len, const EVP_CIPHER *cipher);
|
||||
|
||||
void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data);
|
||||
void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx);
|
||||
void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx);
|
||||
EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
|
||||
|
||||
EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx);
|
||||
@@ -1487,7 +1483,7 @@ void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
|
||||
|
||||
void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,
|
||||
int (*copy) (EVP_PKEY_CTX *dst,
|
||||
EVP_PKEY_CTX *src));
|
||||
const EVP_PKEY_CTX *src));
|
||||
|
||||
void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
|
||||
void (*cleanup) (EVP_PKEY_CTX *ctx));
|
||||
@@ -1592,7 +1588,7 @@ void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth,
|
||||
|
||||
void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth,
|
||||
int (**pcopy) (EVP_PKEY_CTX *dst,
|
||||
EVP_PKEY_CTX *src));
|
||||
const EVP_PKEY_CTX *src));
|
||||
|
||||
void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth,
|
||||
void (**pcleanup) (EVP_PKEY_CTX *ctx));
|
||||
|
||||
@@ -22,6 +22,7 @@ extern "C" {
|
||||
# define EVP_KDF_SCRYPT NID_id_scrypt
|
||||
# define EVP_KDF_TLS1_PRF NID_tls1_prf
|
||||
# define EVP_KDF_HKDF NID_hkdf
|
||||
# define EVP_KDF_SSHKDF NID_sshkdf
|
||||
|
||||
EVP_KDF_CTX *EVP_KDF_CTX_new_id(int id);
|
||||
void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx);
|
||||
@@ -49,11 +50,20 @@ int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen);
|
||||
# define EVP_KDF_CTRL_SET_SCRYPT_N 0x0d /* uint64_t */
|
||||
# define EVP_KDF_CTRL_SET_SCRYPT_R 0x0e /* uint32_t */
|
||||
# define EVP_KDF_CTRL_SET_SCRYPT_P 0x0f /* uint32_t */
|
||||
# define EVP_KDF_CTRL_SET_SSHKDF_XCGHASH 0x10 /* unsigned char *, size_t */
|
||||
# define EVP_KDF_CTRL_SET_SSHKDF_SESSION_ID 0x11 /* unsigned char *, size_t */
|
||||
# define EVP_KDF_CTRL_SET_SSHKDF_TYPE 0x12 /* int */
|
||||
|
||||
# define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0
|
||||
# define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1
|
||||
# define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2
|
||||
|
||||
#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65
|
||||
#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66
|
||||
#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67
|
||||
#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68
|
||||
#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69
|
||||
#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70
|
||||
|
||||
/**** The legacy PKEY-based KDF API follows. ****/
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ int ERR_load_KDF_strings(void);
|
||||
# define KDF_F_KDF_SCRYPT_CTRL_UINT64 122
|
||||
# define KDF_F_KDF_SCRYPT_DERIVE 123
|
||||
# define KDF_F_KDF_SCRYPT_NEW 124
|
||||
# define KDF_F_KDF_SSHKDF_CTRL 130
|
||||
# define KDF_F_KDF_SSHKDF_CTRL_STR 131
|
||||
# define KDF_F_KDF_SSHKDF_DERIVE 132
|
||||
# define KDF_F_KDF_SSHKDF_NEW 133
|
||||
# define KDF_F_KDF_TLS1_PRF_CTRL_STR 125
|
||||
# define KDF_F_KDF_TLS1_PRF_DERIVE 126
|
||||
# define KDF_F_KDF_TLS1_PRF_NEW 127
|
||||
@@ -62,6 +66,9 @@ int ERR_load_KDF_strings(void);
|
||||
# define KDF_R_MISSING_SALT 111
|
||||
# define KDF_R_MISSING_SECRET 107
|
||||
# define KDF_R_MISSING_SEED 106
|
||||
# define KDF_R_MISSING_SESSION_ID 113
|
||||
# define KDF_R_MISSING_TYPE 114
|
||||
# define KDF_R_MISSING_XCGHASH 115
|
||||
# define KDF_R_UNKNOWN_PARAMETER_TYPE 103
|
||||
# define KDF_R_VALUE_ERROR 108
|
||||
# define KDF_R_VALUE_MISSING 102
|
||||
|
||||
@@ -4830,7 +4830,7 @@
|
||||
|
||||
#define SN_chacha20_poly1305_draft "ChaCha20-Poly1305-D"
|
||||
#define LN_chacha20_poly1305_draft "chacha20-poly1305-draft"
|
||||
#define NID_chacha20_poly1305_draft 1203
|
||||
#define NID_chacha20_poly1305_draft 1204
|
||||
|
||||
#define SN_chacha20 "ChaCha20"
|
||||
#define LN_chacha20 "chacha20"
|
||||
@@ -4995,6 +4995,10 @@
|
||||
#define LN_hkdf "hkdf"
|
||||
#define NID_hkdf 1036
|
||||
|
||||
#define SN_sshkdf "SSHKDF"
|
||||
#define LN_sshkdf "sshkdf"
|
||||
#define NID_sshkdf 1203
|
||||
|
||||
#define SN_id_pkinit "id-pkinit"
|
||||
#define NID_id_pkinit 1031
|
||||
#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L
|
||||
|
||||
@@ -56,7 +56,7 @@ void OBJ_NAME_do_all_sorted(int type,
|
||||
void (*fn) (const OBJ_NAME *, void *arg),
|
||||
void *arg);
|
||||
|
||||
ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o);
|
||||
DECLARE_ASN1_DUP_FUNCTION_name(ASN1_OBJECT, OBJ)
|
||||
ASN1_OBJECT *OBJ_nid2obj(int n);
|
||||
const char *OBJ_nid2ln(int n);
|
||||
const char *OBJ_nid2sn(int n);
|
||||
|
||||
@@ -146,7 +146,7 @@ typedef struct ocsp_service_locator_st OCSP_SERVICELOC;
|
||||
(OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\
|
||||
(char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs))
|
||||
|
||||
OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id);
|
||||
DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID)
|
||||
|
||||
OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req);
|
||||
OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req,
|
||||
|
||||
@@ -181,6 +181,11 @@ typedef struct ossl_store_search_st OSSL_STORE_SEARCH;
|
||||
|
||||
typedef struct openssl_ctx_st OPENSSL_CTX;
|
||||
|
||||
typedef struct ossl_dispatch_st OSSL_DISPATCH;
|
||||
typedef struct ossl_item_st OSSL_ITEM;
|
||||
typedef struct ossl_algorithm_st OSSL_ALGORITHM;
|
||||
typedef struct ossl_param_st OSSL_PARAM;
|
||||
|
||||
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \
|
||||
defined(INTMAX_MAX) && defined(UINTMAX_MAX)
|
||||
typedef intmax_t ossl_intmax_t;
|
||||
|
||||
@@ -323,35 +323,35 @@ int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x,
|
||||
unsigned char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
|
||||
int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid,
|
||||
int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *,
|
||||
int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *,
|
||||
char *, int, pem_password_cb *, void *);
|
||||
int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
|
||||
int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
|
||||
void *u);
|
||||
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
|
||||
int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid,
|
||||
int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb, void *u);
|
||||
|
||||
EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb,
|
||||
void *u);
|
||||
|
||||
int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
char *kstr, int klen, pem_password_cb *cd,
|
||||
void *u);
|
||||
# endif
|
||||
|
||||
@@ -207,9 +207,9 @@ int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
|
||||
int safe_nid, int iter, const char *pass);
|
||||
PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid);
|
||||
|
||||
int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12);
|
||||
int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12);
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12);
|
||||
int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12);
|
||||
# endif
|
||||
PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12);
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
|
||||
@@ -208,11 +208,11 @@ int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
|
||||
unsigned int *len);
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7);
|
||||
int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7);
|
||||
int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7);
|
||||
# endif
|
||||
PKCS7 *PKCS7_dup(PKCS7 *p7);
|
||||
DECLARE_ASN1_DUP_FUNCTION(PKCS7)
|
||||
PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7);
|
||||
int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7);
|
||||
int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7);
|
||||
int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
|
||||
int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
|
||||
|
||||
|
||||
@@ -276,8 +276,8 @@ const RSA_METHOD *RSA_PKCS1_OpenSSL(void);
|
||||
|
||||
int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2);
|
||||
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_name(RSA, RSAPublicKey)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_name(RSA, RSAPrivateKey)
|
||||
|
||||
typedef struct rsa_pss_params_st {
|
||||
X509_ALGOR *hashAlgorithm;
|
||||
@@ -393,8 +393,8 @@ int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
|
||||
int RSA_set_ex_data(RSA *r, int idx, void *arg);
|
||||
void *RSA_get_ex_data(const RSA *r, int idx);
|
||||
|
||||
RSA *RSAPublicKey_dup(RSA *rsa);
|
||||
RSA *RSAPrivateKey_dup(RSA *rsa);
|
||||
DECLARE_ASN1_DUP_FUNCTION_name(RSA, RSAPublicKey)
|
||||
DECLARE_ASN1_DUP_FUNCTION_name(RSA, RSAPrivateKey)
|
||||
|
||||
/*
|
||||
* If this flag is set the RSA method is FIPS compliant and can be used in
|
||||
|
||||
@@ -1661,7 +1661,7 @@ __owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,
|
||||
__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s);
|
||||
|
||||
__owur SSL_SESSION *SSL_SESSION_new(void);
|
||||
__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src);
|
||||
__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src);
|
||||
const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
|
||||
unsigned int *len);
|
||||
const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s,
|
||||
@@ -1674,7 +1674,7 @@ int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses);
|
||||
int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x);
|
||||
int SSL_SESSION_up_ref(SSL_SESSION *ses);
|
||||
void SSL_SESSION_free(SSL_SESSION *ses);
|
||||
__owur int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
|
||||
__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp);
|
||||
__owur int SSL_set_session(SSL *to, SSL_SESSION *session);
|
||||
int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session);
|
||||
int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session);
|
||||
|
||||
@@ -596,9 +596,9 @@ int ERR_load_SSL_strings(void);
|
||||
# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209
|
||||
# define SSL_R_MISSING_TMP_DH_KEY 171
|
||||
# define SSL_R_MISSING_TMP_ECDH_KEY 311
|
||||
# define SSL_R_MIXED_SPECIAL_OPERATOR_WITH_GROUPS 101
|
||||
# define SSL_R_NESTED_GROUP 108
|
||||
# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293
|
||||
# define SSL_R_MIXED_SPECIAL_OPERATOR_WITH_GROUPS 294
|
||||
# define SSL_R_NESTED_GROUP 295
|
||||
# define SSL_R_NOT_ON_RECORD_BOUNDARY 182
|
||||
# define SSL_R_NOT_REPLACING_CERTIFICATE 289
|
||||
# define SSL_R_NOT_SERVER 284
|
||||
@@ -729,11 +729,11 @@ int ERR_load_SSL_strings(void);
|
||||
# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239
|
||||
# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242
|
||||
# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243
|
||||
# define SSL_R_UNEXPECTED_GROUP_CLOSE 109
|
||||
# define SSL_R_UNEXPECTED_CCS_MESSAGE 262
|
||||
# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178
|
||||
# define SSL_R_UNEXPECTED_GROUP_CLOSE 296
|
||||
# define SSL_R_UNEXPECTED_MESSAGE 244
|
||||
# define SSL_R_UNEXPECTED_OPERATOR_IN_GROUP 110
|
||||
# define SSL_R_UNEXPECTED_OPERATOR_IN_GROUP 297
|
||||
# define SSL_R_UNEXPECTED_RECORD 245
|
||||
# define SSL_R_UNINITIALIZED 276
|
||||
# define SSL_R_UNKNOWN_ALERT_TYPE 246
|
||||
|
||||
@@ -0,0 +1,291 @@
|
||||
/*
|
||||
* Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
*/
|
||||
|
||||
#ifndef OSSL_TRACE_H
|
||||
# define OSSL_TRACE_H
|
||||
|
||||
# include <stdarg.h>
|
||||
|
||||
# include <openssl/bio.h>
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/*
|
||||
* TRACE CATEGORIES
|
||||
*/
|
||||
|
||||
/*
|
||||
* The trace messages of the OpenSSL libraries are organized into different
|
||||
* categories. For every trace category, the application can register a separate
|
||||
* tracer callback. When a callback is registered, a so called trace channel is
|
||||
* created for this category. This channel consists essentially of an internal
|
||||
* BIO which sends all trace output it receives to the registered application
|
||||
* callback.
|
||||
*
|
||||
* The ANY category is used as a fallback category.
|
||||
*/
|
||||
# define OSSL_TRACE_CATEGORY_ANY 0 /* The fallback */
|
||||
# define OSSL_TRACE_CATEGORY_TRACE 1
|
||||
# define OSSL_TRACE_CATEGORY_INIT 2
|
||||
# define OSSL_TRACE_CATEGORY_TLS 3
|
||||
# define OSSL_TRACE_CATEGORY_TLS_CIPHER 4
|
||||
# define OSSL_TRACE_CATEGORY_ENGINE_CONF 5
|
||||
# define OSSL_TRACE_CATEGORY_ENGINE_TABLE 6
|
||||
# define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 7
|
||||
# define OSSL_TRACE_CATEGORY_PKCS5V2 8
|
||||
# define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN 9
|
||||
# define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT 10
|
||||
# define OSSL_TRACE_CATEGORY_X509V3_POLICY 11
|
||||
# define OSSL_TRACE_CATEGORY_BN_CTX 12
|
||||
# define OSSL_TRACE_CATEGORY_NUM 13
|
||||
|
||||
/* Returns the trace category number for the given |name| */
|
||||
int OSSL_trace_get_category_num(const char *name);
|
||||
|
||||
/* Returns the trace category name for the given |num| */
|
||||
const char *OSSL_trace_get_category_name(int num);
|
||||
|
||||
/*
|
||||
* TRACE CONSUMERS
|
||||
*/
|
||||
|
||||
/*
|
||||
* Enables tracing for the given |category| by providing a BIO sink
|
||||
* as |channel|. If a null pointer is passed as |channel|, an existing
|
||||
* trace channel is removed and tracing for the category is disabled.
|
||||
*
|
||||
* Returns 1 on success and 0 on failure
|
||||
*/
|
||||
int OSSL_trace_set_channel(int category, BIO* channel);
|
||||
|
||||
/*
|
||||
* Attach a prefix and a suffix to the given |category|, to be printed at the
|
||||
* beginning and at the end of each trace output group, i.e. when
|
||||
* OSSL_trace_begin() and OSSL_trace_end() are called.
|
||||
* If a null pointer is passed as argument, the existing prefix or suffix is
|
||||
* removed.
|
||||
*
|
||||
* They return 1 on success and 0 on failure
|
||||
*/
|
||||
int OSSL_trace_set_prefix(int category, const char *prefix);
|
||||
int OSSL_trace_set_suffix(int category, const char *suffix);
|
||||
|
||||
/*
|
||||
* OSSL_trace_cb is the type tracing callback provided by the application.
|
||||
* It MUST return the number of bytes written, or 0 on error (in other words,
|
||||
* it can never write zero bytes).
|
||||
*
|
||||
* The |buffer| will always contain text, which may consist of several lines.
|
||||
* The |data| argument points to whatever data was provided by the application
|
||||
* when registering the tracer function.
|
||||
*
|
||||
* The |category| number is given, as well as a |cmd| number, described below.
|
||||
*/
|
||||
typedef size_t (*OSSL_trace_cb)(const char *buffer, size_t count,
|
||||
int category, int cmd, void *data);
|
||||
/*
|
||||
* Possible |cmd| numbers.
|
||||
*/
|
||||
# define OSSL_TRACE_CTRL_BEGIN 0
|
||||
# define OSSL_TRACE_CTRL_DURING 1
|
||||
# define OSSL_TRACE_CTRL_END 2
|
||||
|
||||
/*
|
||||
* Enables tracing for the given |category| by creating an internal
|
||||
* trace channel which sends the output to the given |callback|.
|
||||
* If a null pointer is passed as callback, an existing trace channel
|
||||
* is removed and tracing for the category is disabled.
|
||||
*
|
||||
* NOTE: OSSL_trace_set_channel() and OSSL_trace_set_callback() are mutually
|
||||
* exclusive.
|
||||
*
|
||||
* Returns 1 on success and 0 on failure
|
||||
*/
|
||||
int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data);
|
||||
|
||||
/*
|
||||
* TRACE PRODUCERS
|
||||
*/
|
||||
|
||||
/*
|
||||
* Returns 1 if tracing for the specified category is enabled, otherwise 0
|
||||
*/
|
||||
int OSSL_trace_enabled(int category);
|
||||
|
||||
/*
|
||||
* Wrap a group of tracing output calls. OSSL_trace_begin() locks tracing and
|
||||
* returns the trace channel associated with the given category, or NULL if no
|
||||
* channel is associated with the category. OSSL_trace_end() unlocks tracing.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* BIO *out;
|
||||
* if ((out = OSSL_trace_begin(category)) != NULL) {
|
||||
* ...
|
||||
* BIO_fprintf(out, ...);
|
||||
* ...
|
||||
* OSSL_trace_end(category, out);
|
||||
* }
|
||||
*
|
||||
* See also the convenience macros OSSL_TRACE_BEGIN and OSSL_TRACE_END below.
|
||||
*/
|
||||
BIO *OSSL_trace_begin(int category);
|
||||
void OSSL_trace_end(int category, BIO *channel);
|
||||
|
||||
/*
|
||||
* OSSL_TRACE* Convenience Macros
|
||||
*/
|
||||
|
||||
/*
|
||||
* When the tracing feature is disabled, these macros are defined to
|
||||
* produce dead code, which a good compiler should eliminate.
|
||||
*/
|
||||
|
||||
/*
|
||||
* OSSL_TRACE_BEGIN, OSSL_TRACE_END - Define a Trace Group
|
||||
*
|
||||
* These two macros can be used to create a block which is executed only
|
||||
* if the corresponding trace category is enabled. Inside this block, a
|
||||
* local variable named |trc_out| is defined, which points to the channel
|
||||
* associated with the given trace category.
|
||||
*
|
||||
* Usage: (using 'TLS' as an example category)
|
||||
*
|
||||
* OSSL_TRACE_BEGIN(TLS) {
|
||||
*
|
||||
* BIO_fprintf(trc_out, ... );
|
||||
*
|
||||
* } OSSL_TRACE_END(TLS);
|
||||
*
|
||||
*
|
||||
* This expands to the following code
|
||||
*
|
||||
* do {
|
||||
* BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_TLS);
|
||||
* if (trc_out != NULL) {
|
||||
* ...
|
||||
* BIO_fprintf(trc_out, ...);
|
||||
* }
|
||||
* OSSL_trace_end(OSSL_TRACE_CATEGORY_TLS, trc_out);
|
||||
* } while (0);
|
||||
*
|
||||
* The use of the inner '{...}' group and the trailing ';' is enforced
|
||||
* by the definition of the macros in order to make the code look as much
|
||||
* like C code as possible.
|
||||
*
|
||||
* Before returning from inside the trace block, it is necessary to
|
||||
* call OSSL_TRACE_CANCEL(category).
|
||||
*/
|
||||
|
||||
# ifndef OPENSSL_NO_TRACE
|
||||
|
||||
# define OSSL_TRACE_BEGIN(category) \
|
||||
do { \
|
||||
BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_##category); \
|
||||
\
|
||||
if (trc_out != NULL)
|
||||
|
||||
# define OSSL_TRACE_END(category) \
|
||||
OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out); \
|
||||
} while (0)
|
||||
|
||||
# define OSSL_TRACE_CANCEL(category) \
|
||||
OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out) \
|
||||
|
||||
# else
|
||||
|
||||
# define OSSL_TRACE_BEGIN(category) \
|
||||
do { \
|
||||
BIO *trc_out = NULL; \
|
||||
if (0)
|
||||
|
||||
# define OSSL_TRACE_END(category) \
|
||||
} while(0)
|
||||
|
||||
# define OSSL_TRACE_CANCEL(category) \
|
||||
((void)0)
|
||||
|
||||
# endif
|
||||
|
||||
/*
|
||||
* OSSL_TRACE_ENABLED() - Check whether tracing is enabled for |category|
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* if (OSSL_TRACE_ENABLED(TLS)) {
|
||||
* ...
|
||||
* }
|
||||
*/
|
||||
# ifndef OPENSSL_NO_TRACE
|
||||
|
||||
# define OSSL_TRACE_ENABLED(category) \
|
||||
OSSL_trace_enabled(OSSL_TRACE_CATEGORY_##category)
|
||||
|
||||
# else
|
||||
|
||||
# define OSSL_TRACE_ENABLED(category) (0)
|
||||
|
||||
# endif
|
||||
|
||||
/*
|
||||
* OSSL_TRACE*() - OneShot Trace Macros
|
||||
*
|
||||
* These macros are intended to produce a simple printf-style trace output.
|
||||
* Unfortunately, C90 macros don't support variable arguments, so the
|
||||
* "vararg" OSSL_TRACEV() macro has a rather weird usage pattern:
|
||||
*
|
||||
* OSSL_TRACEV(category, (trc_out, "format string", ...args...));
|
||||
*
|
||||
* Where 'channel' is the literal symbol of this name, not a variable.
|
||||
* For that reason, it is currently not intended to be used directly,
|
||||
* but only as helper macro for the other oneshot trace macros
|
||||
* OSSL_TRACE(), OSSL_TRACE1(), OSSL_TRACE2(), ...
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* OSSL_TRACE(INIT, "Hello world!\n");
|
||||
* OSSL_TRACE1(TLS, "The answer is %d\n", 42);
|
||||
* OSSL_TRACE2(TLS, "The ultimate question to answer %d is '%s'\n",
|
||||
* 42, "What do you get when you multiply six by nine?");
|
||||
*/
|
||||
|
||||
# define OSSL_TRACEV(category, args) \
|
||||
OSSL_TRACE_BEGIN(category) \
|
||||
BIO_printf args; \
|
||||
OSSL_TRACE_END(category)
|
||||
|
||||
# define OSSL_TRACE(category, text) \
|
||||
OSSL_TRACEV(category, (trc_out, "%s", text))
|
||||
|
||||
# define OSSL_TRACE1(category, format, arg1) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1))
|
||||
# define OSSL_TRACE2(category, format, arg1, arg2) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2))
|
||||
# define OSSL_TRACE3(category, format, arg1, arg2, arg3) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3))
|
||||
# define OSSL_TRACE4(category, format, arg1, arg2, arg3, arg4) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4))
|
||||
# define OSSL_TRACE5(category, format, arg1, arg2, arg3, arg4, arg5) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5))
|
||||
# define OSSL_TRACE6(category, format, arg1, arg2, arg3, arg4, arg5, arg6) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6))
|
||||
# define OSSL_TRACE7(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7))
|
||||
# define OSSL_TRACE8(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8))
|
||||
# define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
|
||||
OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9))
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif
|
||||
+27
-45
@@ -59,76 +59,58 @@ typedef struct TS_status_info_st TS_STATUS_INFO;
|
||||
|
||||
typedef struct TS_resp_st TS_RESP;
|
||||
|
||||
TS_REQ *TS_REQ_new(void);
|
||||
void TS_REQ_free(TS_REQ *a);
|
||||
int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp);
|
||||
TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length);
|
||||
|
||||
TS_REQ *TS_REQ_dup(TS_REQ *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(TS_REQ)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_REQ, TS_REQ)
|
||||
DECLARE_ASN1_DUP_FUNCTION(TS_REQ)
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a);
|
||||
int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a);
|
||||
int i2d_TS_REQ_fp(FILE *fp, const TS_REQ *a);
|
||||
#endif
|
||||
TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a);
|
||||
int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a);
|
||||
int i2d_TS_REQ_bio(BIO *fp, const TS_REQ *a);
|
||||
|
||||
TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void);
|
||||
void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a);
|
||||
int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp);
|
||||
TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a,
|
||||
const unsigned char **pp, long length);
|
||||
|
||||
TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(TS_MSG_IMPRINT)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_MSG_IMPRINT, TS_MSG_IMPRINT)
|
||||
DECLARE_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT)
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a);
|
||||
int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a);
|
||||
int i2d_TS_MSG_IMPRINT_fp(FILE *fp, const TS_MSG_IMPRINT *a);
|
||||
#endif
|
||||
TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a);
|
||||
int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a);
|
||||
int i2d_TS_MSG_IMPRINT_bio(BIO *bio, const TS_MSG_IMPRINT *a);
|
||||
|
||||
TS_RESP *TS_RESP_new(void);
|
||||
void TS_RESP_free(TS_RESP *a);
|
||||
int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp);
|
||||
TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length);
|
||||
TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token);
|
||||
TS_RESP *TS_RESP_dup(TS_RESP *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(TS_RESP)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_RESP, TS_RESP)
|
||||
DECLARE_ASN1_DUP_FUNCTION(TS_RESP)
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a);
|
||||
int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a);
|
||||
int i2d_TS_RESP_fp(FILE *fp, const TS_RESP *a);
|
||||
#endif
|
||||
TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a);
|
||||
int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a);
|
||||
int i2d_TS_RESP_bio(BIO *bio, const TS_RESP *a);
|
||||
|
||||
TS_STATUS_INFO *TS_STATUS_INFO_new(void);
|
||||
void TS_STATUS_INFO_free(TS_STATUS_INFO *a);
|
||||
int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp);
|
||||
TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a,
|
||||
const unsigned char **pp, long length);
|
||||
TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(TS_STATUS_INFO)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_STATUS_INFO, TS_STATUS_INFO)
|
||||
DECLARE_ASN1_DUP_FUNCTION(TS_STATUS_INFO)
|
||||
|
||||
TS_TST_INFO *TS_TST_INFO_new(void);
|
||||
void TS_TST_INFO_free(TS_TST_INFO *a);
|
||||
int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp);
|
||||
TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp,
|
||||
long length);
|
||||
TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(TS_TST_INFO)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_TST_INFO, TS_TST_INFO)
|
||||
DECLARE_ASN1_DUP_FUNCTION(TS_TST_INFO)
|
||||
TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token);
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a);
|
||||
int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a);
|
||||
int i2d_TS_TST_INFO_fp(FILE *fp, const TS_TST_INFO *a);
|
||||
#endif
|
||||
TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a);
|
||||
int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a);
|
||||
int i2d_TS_TST_INFO_bio(BIO *bio, const TS_TST_INFO *a);
|
||||
|
||||
TS_ACCURACY *TS_ACCURACY_new(void);
|
||||
void TS_ACCURACY_free(TS_ACCURACY *a);
|
||||
int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp);
|
||||
TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp,
|
||||
long length);
|
||||
TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a);
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(TS_ACCURACY)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_ACCURACY, TS_ACCURACY)
|
||||
DECLARE_ASN1_DUP_FUNCTION(TS_ACCURACY)
|
||||
|
||||
int TS_REQ_set_version(TS_REQ *a, long version);
|
||||
long TS_REQ_get_version(const TS_REQ *a);
|
||||
|
||||
+46
-52
@@ -391,87 +391,87 @@ int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type,
|
||||
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
X509 *d2i_X509_fp(FILE *fp, X509 **x509);
|
||||
int i2d_X509_fp(FILE *fp, X509 *x509);
|
||||
int i2d_X509_fp(FILE *fp, const X509 *x509);
|
||||
X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
|
||||
int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl);
|
||||
int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl);
|
||||
X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
|
||||
int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req);
|
||||
int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req);
|
||||
# ifndef OPENSSL_NO_RSA
|
||||
RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
|
||||
int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa);
|
||||
int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa);
|
||||
RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
|
||||
int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa);
|
||||
int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa);
|
||||
RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
|
||||
int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa);
|
||||
int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DSA
|
||||
DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
|
||||
int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
|
||||
int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa);
|
||||
DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
|
||||
int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
|
||||
int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
|
||||
int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
|
||||
int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey);
|
||||
EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
|
||||
int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
|
||||
int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey);
|
||||
# endif
|
||||
X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8);
|
||||
int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8);
|
||||
int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8);
|
||||
PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
|
||||
PKCS8_PRIV_KEY_INFO **p8inf);
|
||||
int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf);
|
||||
int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key);
|
||||
int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
|
||||
int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf);
|
||||
int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key);
|
||||
int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey);
|
||||
EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
|
||||
int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
|
||||
int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey);
|
||||
EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
|
||||
# endif
|
||||
|
||||
X509 *d2i_X509_bio(BIO *bp, X509 **x509);
|
||||
int i2d_X509_bio(BIO *bp, X509 *x509);
|
||||
int i2d_X509_bio(BIO *bp, const X509 *x509);
|
||||
X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
|
||||
int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl);
|
||||
int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl);
|
||||
X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
|
||||
int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req);
|
||||
int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req);
|
||||
# ifndef OPENSSL_NO_RSA
|
||||
RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
|
||||
int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa);
|
||||
int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa);
|
||||
RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
|
||||
int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa);
|
||||
int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa);
|
||||
RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
|
||||
int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa);
|
||||
int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DSA
|
||||
DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
|
||||
int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa);
|
||||
int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa);
|
||||
DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
|
||||
int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa);
|
||||
int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
|
||||
int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
|
||||
int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey);
|
||||
EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
|
||||
int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
|
||||
int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey);
|
||||
# endif
|
||||
X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8);
|
||||
int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8);
|
||||
int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8);
|
||||
PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
|
||||
PKCS8_PRIV_KEY_INFO **p8inf);
|
||||
int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf);
|
||||
int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key);
|
||||
int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
|
||||
int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf);
|
||||
int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key);
|
||||
int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey);
|
||||
EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
|
||||
int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey);
|
||||
int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey);
|
||||
EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);
|
||||
|
||||
X509 *X509_dup(X509 *x509);
|
||||
X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
|
||||
X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex);
|
||||
X509_CRL *X509_CRL_dup(X509_CRL *crl);
|
||||
X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
|
||||
X509_REQ *X509_REQ_dup(X509_REQ *req);
|
||||
X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_CRL)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_REQ)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR)
|
||||
int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype,
|
||||
void *pval);
|
||||
void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype,
|
||||
@@ -479,8 +479,8 @@ void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype,
|
||||
void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
|
||||
int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
|
||||
|
||||
X509_NAME *X509_NAME_dup(X509_NAME *xn);
|
||||
X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_NAME)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY)
|
||||
|
||||
int X509_cmp_time(const ASN1_TIME *s, time_t *t);
|
||||
int X509_cmp_current_time(const ASN1_TIME *s);
|
||||
@@ -510,19 +510,15 @@ EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key);
|
||||
EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
|
||||
int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain);
|
||||
long X509_get_pathlen(X509 *x);
|
||||
int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp);
|
||||
EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY)
|
||||
# ifndef OPENSSL_NO_RSA
|
||||
int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp);
|
||||
RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(RSA, RSA_PUBKEY)
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DSA
|
||||
int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp);
|
||||
DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA, DSA_PUBKEY)
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp);
|
||||
EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(EC_KEY, EC_PUBKEY)
|
||||
# endif
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(X509_SIG)
|
||||
@@ -544,10 +540,9 @@ DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(X509_NAME)
|
||||
|
||||
int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
|
||||
int X509_NAME_set(X509_NAME **xn, const X509_NAME *name);
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(X509_CINF)
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(X509)
|
||||
DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
|
||||
|
||||
@@ -555,8 +550,7 @@ DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
|
||||
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef)
|
||||
int X509_set_ex_data(X509 *r, int idx, void *arg);
|
||||
void *X509_get_ex_data(X509 *r, int idx);
|
||||
int i2d_X509_AUX(X509 *a, unsigned char **pp);
|
||||
X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length);
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509,X509_AUX)
|
||||
|
||||
int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
|
||||
|
||||
@@ -1009,7 +1003,7 @@ X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen,
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
|
||||
|
||||
EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8);
|
||||
PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
|
||||
PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey);
|
||||
|
||||
int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
|
||||
int version, int ptype, void *pval,
|
||||
|
||||
@@ -28,7 +28,7 @@ struct v3_ext_ctx;
|
||||
typedef void *(*X509V3_EXT_NEW)(void);
|
||||
typedef void (*X509V3_EXT_FREE) (void *);
|
||||
typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long);
|
||||
typedef int (*X509V3_EXT_I2D) (void *, unsigned char **);
|
||||
typedef int (*X509V3_EXT_I2D) (const void *, unsigned char **);
|
||||
typedef STACK_OF(CONF_VALUE) *
|
||||
(*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext,
|
||||
STACK_OF(CONF_VALUE) *extlist);
|
||||
@@ -467,7 +467,7 @@ DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
|
||||
DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
|
||||
GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
|
||||
DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME)
|
||||
int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
|
||||
|
||||
ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
|
||||
|
||||
Reference in New Issue
Block a user