148 |
148 |
149 // done |
149 // done |
150 return SUCCESS; |
150 return SUCCESS; |
151 } |
151 } |
152 |
152 |
|
153 // XXX: log func |
|
154 void _log (int level, const char *msg) |
|
155 { |
|
156 printf("gnutls: %s\n", msg); |
|
157 } |
|
158 |
153 err_t sock_gnutls_global_init (struct error_info *err) |
159 err_t sock_gnutls_global_init (struct error_info *err) |
154 { |
160 { |
155 // global init |
161 // global init |
156 if ((ERROR_EXTRA(err) = gnutls_global_init()) < 0) |
162 if ((ERROR_EXTRA(err) = gnutls_global_init()) < 0) |
157 return SET_ERROR(err, ERR_GNUTLS_GLOBAL_INIT); |
163 return SET_ERROR(err, ERR_GNUTLS_GLOBAL_INIT); |
158 |
164 |
159 // init _sock_gnutls_ctx |
165 // init _sock_gnutls_ctx |
160 if (sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx, err)) |
166 if (sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx, err)) |
161 return ERROR_CODE(err); |
167 return ERROR_CODE(err); |
162 |
168 |
|
169 // XXX: debug |
|
170 // gnutls_global_set_log_function(&_log); |
|
171 // gnutls_global_set_log_level(11); |
|
172 |
163 // done |
173 // done |
164 return SUCCESS; |
174 return SUCCESS; |
165 } |
175 } |
166 |
176 |
167 |
177 |
168 err_t sock_gnutls_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err) |
178 err_t sock_ssl_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err) |
169 { |
179 { |
170 struct sock_gnutls *sock = NULL; |
180 struct sock_gnutls *sock = NULL; |
171 struct sock_gnutls_client_ctx *ctx = &_sock_gnutls_client_ctx; |
181 struct sock_gnutls_client_ctx *ctx = &_sock_gnutls_client_ctx; |
172 |
182 |
173 // alloc |
183 // alloc |