ANSI C API を使用して、OpenSSL で暗号スイートを構築しようとしています。私がする必要があるのは、新しい SSL_METHOD 構造を作成し、呼び出す必要があるメソッドへのさまざまな関数ポインターを設定することです。SSL_METHOD 構造の要素を定義するソースのセクションを見つけましたが、正確には、OpenSSL の残りの部分と正しくインターフェイスするために各要素に何が含まれていると予想されるかについての参照は見つかりませんでした。OpenSSL には、これらのいずれかを自動的に構築して入力するように見える事前定義された関数があります。たとえばSSLv23_method
、これらの関数のソースも見つかりません。
SSL_METHOD 構造体の各ポインターの背後にあるものを教えてくれるある種のリソースを教えてくれる人はいますか?
以下は、SSL_METHOD 構造体のすべての要素の完全なリストであり、その目的を見つけたいと考えています。
int version;
int (*ssl_new)(SSL *s);
void (*ssl_clear)(SSL *s);
void (*ssl_free)(SSL *s);
int (*ssl_accept)(SSL *s);
int (*ssl_connect)(SSL *s);
int (*ssl_read)(SSL *s,void *buf,int len);
int (*ssl_peek)(SSL *s,void *buf,int len);
int (*ssl_write)(SSL *s,const void *buf,int len);
int (*ssl_shutdown)(SSL *s);
int (*ssl_renegotiate)(SSL *s);
int (*ssl_renegotiate_check)(SSL *s);
long (*ssl_get_message)(SSL *s, int st1, int stn, int mt, long
max, int *ok);
int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, int len,
int peek);
int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len);
int (*ssl_dispatch_alert)(SSL *s);
long (*ssl_ctrl)(SSL *s,int cmd,long larg,void *parg);
long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,void *parg);
const SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr);
int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr);
int (*ssl_pending)(const SSL *s);
int (*num_ciphers)(void);
const SSL_CIPHER *(*get_cipher)(unsigned ncipher);
const struct ssl_method_st *(*get_ssl_method)(int version);
long (*get_timeout)(void);
struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */
int (*ssl_version)(void);
long (*ssl_callback_ctrl)(SSL *s, int cb_id, void (*fp)(void));
long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void));