]>
Commit | Line | Data |
---|---|---|
846e33c7 | 1 | /* |
454afd98 | 2 | * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. |
a661b653 | 3 | * |
dffa7520 | 4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
846e33c7 RS |
5 | * this file except in compliance with the License. You can obtain a copy |
6 | * in the file LICENSE in the source distribution or at | |
7 | * https://www.openssl.org/source/license.html | |
a661b653 | 8 | */ |
846e33c7 | 9 | |
bc36ee62 RL |
10 | #include <openssl/opensslconf.h> |
11 | ||
d0cf719e | 12 | #include <openssl/ssl.h> |
6d2a1eff | 13 | #include <openssl/srp.h> |
3d7c4a5a | 14 | |
ab69ac00 | 15 | #define PORT "4433" |
d02b48c6 RE |
16 | #define PROTOCOL "tcp" |
17 | ||
72d0bc84 | 18 | typedef int (*do_server_cb)(int s, int stype, int prot, unsigned char *context); |
ab69ac00 | 19 | int do_server(int *accept_sock, const char *host, const char *port, |
5540eb70 RL |
20 | int family, int type, int protocol, do_server_cb cb, |
21 | unsigned char *context, int naccept, BIO *bio_s_out); | |
d0cf719e | 22 | |
6d23cf97 | 23 | int verify_callback(int ok, X509_STORE_CTX *ctx); |
d0cf719e | 24 | |
d02b48c6 | 25 | int set_cert_stuff(SSL_CTX *ctx, char *cert_file, char *key_file); |
fc6fc7ff | 26 | int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key, |
0f113f3e | 27 | STACK_OF(X509) *chain, int build_chain); |
9f27b1ee | 28 | int ssl_print_sigalgs(BIO *out, SSL *s); |
20b431e3 | 29 | int ssl_print_point_formats(BIO *out, SSL *s); |
de4d764e | 30 | int ssl_print_groups(BIO *out, SSL *s, int noshared); |
33a8de69 | 31 | int ssl_print_tmp_key(BIO *out, SSL *s); |
ab69ac00 | 32 | int init_client(int *sock, const char *host, const char *port, |
ebc01683 | 33 | const char *bindhost, const char *bindport, |
8ccc2377 | 34 | int family, int type, int protocol); |
d02b48c6 | 35 | int should_retry(int i); |
edbb56ee | 36 | void do_ssl_shutdown(SSL *ssl); |
d02b48c6 | 37 | |
6d23cf97 | 38 | long bio_dump_callback(BIO *bio, int cmd, const char *argp, |
0f113f3e | 39 | int argi, long argl, long ret); |
d02b48c6 | 40 | |
6d23cf97 | 41 | void apps_ssl_info_callback(const SSL *s, int where, int ret); |
0f113f3e MC |
42 | void msg_cb(int write_p, int version, int content_type, const void *buf, |
43 | size_t len, SSL *ssl, void *arg); | |
b6981744 | 44 | void tlsext_cb(SSL *s, int client_server, int type, const unsigned char *data, |
0f113f3e | 45 | int len, void *arg); |
07a9d1a2 | 46 | |
0f113f3e MC |
47 | int generate_cookie_callback(SSL *ssl, unsigned char *cookie, |
48 | unsigned int *cookie_len); | |
31011544 | 49 | int verify_cookie_callback(SSL *ssl, const unsigned char *cookie, |
0f113f3e | 50 | unsigned int cookie_len); |
18d71588 | 51 | |
ca1ed290 RL |
52 | #ifdef __VMS /* 31 char symbol name limit */ |
53 | # define generate_stateless_cookie_callback generate_stateless_cookie_cb | |
54 | # define verify_stateless_cookie_callback verify_stateless_cookie_cb | |
55 | #endif | |
56 | ||
3fa2812f BS |
57 | int generate_stateless_cookie_callback(SSL *ssl, unsigned char *cookie, |
58 | size_t *cookie_len); | |
59 | int verify_stateless_cookie_callback(SSL *ssl, const unsigned char *cookie, | |
60 | size_t cookie_len); | |
61 | ||
18d71588 DSH |
62 | typedef struct ssl_excert_st SSL_EXCERT; |
63 | ||
64 | void ssl_ctx_set_excert(SSL_CTX *ctx, SSL_EXCERT *exc); | |
65 | void ssl_excert_free(SSL_EXCERT *exc); | |
7e1b7485 RS |
66 | int args_excert(int option, SSL_EXCERT **pexc); |
67 | int load_excert(SSL_EXCERT **pexc); | |
c0a445a9 | 68 | void print_verify_detail(SSL *s, BIO *bio); |
ecf3a1fb | 69 | void print_ssl_summary(SSL *s); |
dba31777 | 70 | int config_ctx(SSL_CONF_CTX *cctx, STACK_OF(OPENSSL_STRING) *str, SSL_CTX *ctx); |
0f113f3e MC |
71 | int ssl_ctx_add_crls(SSL_CTX *ctx, STACK_OF(X509_CRL) *crls, |
72 | int crl_download); | |
73 | int ssl_load_stores(SSL_CTX *ctx, const char *vfyCApath, | |
fd3397fc RL |
74 | const char *vfyCAfile, const char *vfyCAstore, |
75 | const char *chCApath, const char *chCAfile, | |
76 | const char *chCAstore, STACK_OF(X509_CRL) *crls, | |
0f113f3e | 77 | int crl_download); |
ecf3a1fb | 78 | void ssl_ctx_security_debug(SSL_CTX *ctx, int verbose); |
4bf73e9f | 79 | int set_keylog_file(SSL_CTX *ctx, const char *keylog_file); |
5969a2dd | 80 | void print_ca_names(BIO *bio, SSL *s); |
6d2a1eff MC |
81 | |
82 | #ifndef OPENSSL_NO_SRP | |
83 | /* The client side SRP context that we pass to all SRP related callbacks */ | |
84 | typedef struct srp_arg_st { | |
85 | char *srppassin; | |
86 | char *srplogin; | |
87 | int msg; /* copy from c_msg */ | |
88 | int debug; /* copy from c_debug */ | |
89 | int amp; /* allow more groups */ | |
90 | int strength; /* minimal size for N */ | |
91 | } SRP_ARG; | |
92 | ||
93 | int set_up_srp_arg(SSL_CTX *ctx, SRP_ARG *srp_arg, int srp_lateuser, int c_msg, | |
94 | int c_debug); | |
76cb077f | 95 | void set_up_dummy_srp(SSL_CTX *ctx); |
6d2a1eff MC |
96 | |
97 | /* The server side SRP context that we pass to all SRP related callbacks */ | |
98 | typedef struct srpsrvparm_st { | |
99 | char *login; | |
100 | SRP_VBASE *vb; | |
101 | SRP_user_pwd *user; | |
102 | } srpsrvparm; | |
103 | ||
104 | int set_up_srp_verifier_file(SSL_CTX *ctx, srpsrvparm *srp_callback_parm, | |
105 | char *srpuserseed, char *srp_verifier_file); | |
106 | void lookup_srp_user(srpsrvparm *srp_callback_parm, BIO *bio_s_out); | |
107 | #endif /* OPENSSL_NO_SRP */ |