Loading CHANGES +6 −0 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,12 @@ Changes between 0.9.8b and 0.9.9 [xx XXX xxxx] Changes between 0.9.8b and 0.9.9 [xx XXX xxxx] *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(), EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal digest and cipher tables. New options added to openssl utility: list-message-digest-algorithms and list-cipher-algorithms. [Steve Henson] *) In addition to the numerical (unsigned long) thread ID, provide *) In addition to the numerical (unsigned long) thread ID, provide for a pointer (void *) thread ID. This helps accomodate systems for a pointer (void *) thread ID. This helps accomodate systems that do not provide an unsigned long thread ID. OpenSSL assumes that do not provide an unsigned long thread ID. OpenSSL assumes Loading apps/openssl.c +55 −0 Original line number Original line Diff line number Diff line Loading @@ -142,6 +142,8 @@ static int MS_CALLBACK cmp(const void *a_void,const void *b_void); static LHASH *prog_init(void ); static LHASH *prog_init(void ); static int do_cmd(LHASH *prog,int argc,char *argv[]); static int do_cmd(LHASH *prog,int argc,char *argv[]); static void list_pkey(BIO *out); static void list_pkey(BIO *out); static void list_cipher(BIO *out); static void list_md(BIO *out); char *default_config_file=NULL; char *default_config_file=NULL; /* Make sure there is only one when MONOLITH is defined */ /* Make sure there is only one when MONOLITH is defined */ Loading Loading @@ -367,9 +369,12 @@ end: #define LIST_STANDARD_COMMANDS "list-standard-commands" #define LIST_STANDARD_COMMANDS "list-standard-commands" #define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands" #define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands" #define LIST_MESSAGE_DIGEST_ALGORITHMS "list-message-digest-algorithms" #define LIST_CIPHER_COMMANDS "list-cipher-commands" #define LIST_CIPHER_COMMANDS "list-cipher-commands" #define LIST_CIPHER_ALGORITHMS "list-cipher-algorithms" #define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms" #define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms" static int do_cmd(LHASH *prog, int argc, char *argv[]) static int do_cmd(LHASH *prog, int argc, char *argv[]) { { FUNCTION f,*fp; FUNCTION f,*fp; Loading Loading @@ -411,7 +416,9 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) } } else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) || else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) || (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) || (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) || (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) || (strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0) || (strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0) || (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0) || (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0)) (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0)) { { int list_type; int list_type; Loading @@ -421,8 +428,12 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) list_type = FUNC_TYPE_GENERAL; list_type = FUNC_TYPE_GENERAL; else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) list_type = FUNC_TYPE_MD; list_type = FUNC_TYPE_MD; else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) list_type = FUNC_TYPE_MD_ALG; else if (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0) else if (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0) list_type = FUNC_TYPE_PKEY; list_type = FUNC_TYPE_PKEY; else if (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0) list_type = FUNC_TYPE_CIPHER_ALG; else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */ else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */ list_type = FUNC_TYPE_CIPHER; list_type = FUNC_TYPE_CIPHER; bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); Loading @@ -438,6 +449,10 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) if (list_type == FUNC_TYPE_PKEY) if (list_type == FUNC_TYPE_PKEY) list_pkey(bio_stdout); list_pkey(bio_stdout); if (list_type == FUNC_TYPE_MD_ALG) list_md(bio_stdout); if (list_type == FUNC_TYPE_CIPHER_ALG) list_cipher(bio_stdout); else else { { for (fp=functions; fp->name != NULL; fp++) for (fp=functions; fp->name != NULL; fp++) Loading Loading @@ -540,6 +555,46 @@ static void list_pkey(BIO *out) } } } } static void list_cipher_fn(const EVP_CIPHER *c, const char *from, const char *to, void *arg) { if (c) BIO_printf(arg, "%s\n", EVP_CIPHER_name(c)); else { if (!from) from = "<undefined>"; if (!to) to = "<undefined>"; BIO_printf(arg, "%s => %s\n", from, to); } } static void list_cipher(BIO *out) { EVP_CIPHER_do_all_sorted(list_cipher_fn, out); } static void list_md_fn(const EVP_MD *m, const char *from, const char *to, void *arg) { if (m) BIO_printf(arg, "%s\n", EVP_MD_name(m)); else { if (!from) from = "<undefined>"; if (!to) to = "<undefined>"; BIO_printf(arg, "%s => %s\n", from, to); } } static void list_md(BIO *out) { EVP_MD_do_all_sorted(list_md_fn, out); } static LHASH *prog_init(void) static LHASH *prog_init(void) { { LHASH *ret; LHASH *ret; Loading apps/progs.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,8 @@ extern int ts_main(int argc,char *argv[]); #define FUNC_TYPE_MD 2 #define FUNC_TYPE_MD 2 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_MD_ALG 5 #define FUNC_TYPE_CIPHER_ALG 6 typedef struct { typedef struct { int type; int type; Loading apps/progs.pl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,8 @@ print <<'EOF'; #define FUNC_TYPE_MD 2 #define FUNC_TYPE_MD 2 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_MD_ALG 5 #define FUNC_TYPE_CIPHER_ALG 6 typedef struct { typedef struct { int type; int type; Loading crypto/evp/evp.h +10 −0 Original line number Original line Diff line number Diff line Loading @@ -782,6 +782,16 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name); const EVP_MD *EVP_get_digestbyname(const char *name); const EVP_MD *EVP_get_digestbyname(const char *name); void EVP_cleanup(void); void EVP_cleanup(void); void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, const char *from, const char *to, void *x), void *arg); void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from, const char *to, void *x), void *arg); void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, const char *from, const char *to, void *x), void *arg); void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, const char *from, const char *to, void *x), void *arg); int EVP_PKEY_decrypt_old(unsigned char *dec_key, int EVP_PKEY_decrypt_old(unsigned char *dec_key, const unsigned char *enc_key,int enc_key_len, const unsigned char *enc_key,int enc_key_len, EVP_PKEY *private_key); EVP_PKEY *private_key); Loading Loading
CHANGES +6 −0 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,12 @@ Changes between 0.9.8b and 0.9.9 [xx XXX xxxx] Changes between 0.9.8b and 0.9.9 [xx XXX xxxx] *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(), EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal digest and cipher tables. New options added to openssl utility: list-message-digest-algorithms and list-cipher-algorithms. [Steve Henson] *) In addition to the numerical (unsigned long) thread ID, provide *) In addition to the numerical (unsigned long) thread ID, provide for a pointer (void *) thread ID. This helps accomodate systems for a pointer (void *) thread ID. This helps accomodate systems that do not provide an unsigned long thread ID. OpenSSL assumes that do not provide an unsigned long thread ID. OpenSSL assumes Loading
apps/openssl.c +55 −0 Original line number Original line Diff line number Diff line Loading @@ -142,6 +142,8 @@ static int MS_CALLBACK cmp(const void *a_void,const void *b_void); static LHASH *prog_init(void ); static LHASH *prog_init(void ); static int do_cmd(LHASH *prog,int argc,char *argv[]); static int do_cmd(LHASH *prog,int argc,char *argv[]); static void list_pkey(BIO *out); static void list_pkey(BIO *out); static void list_cipher(BIO *out); static void list_md(BIO *out); char *default_config_file=NULL; char *default_config_file=NULL; /* Make sure there is only one when MONOLITH is defined */ /* Make sure there is only one when MONOLITH is defined */ Loading Loading @@ -367,9 +369,12 @@ end: #define LIST_STANDARD_COMMANDS "list-standard-commands" #define LIST_STANDARD_COMMANDS "list-standard-commands" #define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands" #define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands" #define LIST_MESSAGE_DIGEST_ALGORITHMS "list-message-digest-algorithms" #define LIST_CIPHER_COMMANDS "list-cipher-commands" #define LIST_CIPHER_COMMANDS "list-cipher-commands" #define LIST_CIPHER_ALGORITHMS "list-cipher-algorithms" #define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms" #define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms" static int do_cmd(LHASH *prog, int argc, char *argv[]) static int do_cmd(LHASH *prog, int argc, char *argv[]) { { FUNCTION f,*fp; FUNCTION f,*fp; Loading Loading @@ -411,7 +416,9 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) } } else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) || else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) || (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) || (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) || (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) || (strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0) || (strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0) || (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0) || (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0)) (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0)) { { int list_type; int list_type; Loading @@ -421,8 +428,12 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) list_type = FUNC_TYPE_GENERAL; list_type = FUNC_TYPE_GENERAL; else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) list_type = FUNC_TYPE_MD; list_type = FUNC_TYPE_MD; else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) list_type = FUNC_TYPE_MD_ALG; else if (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0) else if (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0) list_type = FUNC_TYPE_PKEY; list_type = FUNC_TYPE_PKEY; else if (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0) list_type = FUNC_TYPE_CIPHER_ALG; else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */ else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */ list_type = FUNC_TYPE_CIPHER; list_type = FUNC_TYPE_CIPHER; bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); Loading @@ -438,6 +449,10 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) if (list_type == FUNC_TYPE_PKEY) if (list_type == FUNC_TYPE_PKEY) list_pkey(bio_stdout); list_pkey(bio_stdout); if (list_type == FUNC_TYPE_MD_ALG) list_md(bio_stdout); if (list_type == FUNC_TYPE_CIPHER_ALG) list_cipher(bio_stdout); else else { { for (fp=functions; fp->name != NULL; fp++) for (fp=functions; fp->name != NULL; fp++) Loading Loading @@ -540,6 +555,46 @@ static void list_pkey(BIO *out) } } } } static void list_cipher_fn(const EVP_CIPHER *c, const char *from, const char *to, void *arg) { if (c) BIO_printf(arg, "%s\n", EVP_CIPHER_name(c)); else { if (!from) from = "<undefined>"; if (!to) to = "<undefined>"; BIO_printf(arg, "%s => %s\n", from, to); } } static void list_cipher(BIO *out) { EVP_CIPHER_do_all_sorted(list_cipher_fn, out); } static void list_md_fn(const EVP_MD *m, const char *from, const char *to, void *arg) { if (m) BIO_printf(arg, "%s\n", EVP_MD_name(m)); else { if (!from) from = "<undefined>"; if (!to) to = "<undefined>"; BIO_printf(arg, "%s => %s\n", from, to); } } static void list_md(BIO *out) { EVP_MD_do_all_sorted(list_md_fn, out); } static LHASH *prog_init(void) static LHASH *prog_init(void) { { LHASH *ret; LHASH *ret; Loading
apps/progs.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,8 @@ extern int ts_main(int argc,char *argv[]); #define FUNC_TYPE_MD 2 #define FUNC_TYPE_MD 2 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_MD_ALG 5 #define FUNC_TYPE_CIPHER_ALG 6 typedef struct { typedef struct { int type; int type; Loading
apps/progs.pl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,8 @@ print <<'EOF'; #define FUNC_TYPE_MD 2 #define FUNC_TYPE_MD 2 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_CIPHER 3 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_PKEY 4 #define FUNC_TYPE_MD_ALG 5 #define FUNC_TYPE_CIPHER_ALG 6 typedef struct { typedef struct { int type; int type; Loading
crypto/evp/evp.h +10 −0 Original line number Original line Diff line number Diff line Loading @@ -782,6 +782,16 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name); const EVP_MD *EVP_get_digestbyname(const char *name); const EVP_MD *EVP_get_digestbyname(const char *name); void EVP_cleanup(void); void EVP_cleanup(void); void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, const char *from, const char *to, void *x), void *arg); void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from, const char *to, void *x), void *arg); void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, const char *from, const char *to, void *x), void *arg); void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, const char *from, const char *to, void *x), void *arg); int EVP_PKEY_decrypt_old(unsigned char *dec_key, int EVP_PKEY_decrypt_old(unsigned char *dec_key, const unsigned char *enc_key,int enc_key_len, const unsigned char *enc_key,int enc_key_len, EVP_PKEY *private_key); EVP_PKEY *private_key); Loading