Home | History | Annotate | Download | only in tls

Lines Matching refs:conn

24 void tlsv1_server_alert(struct tlsv1_server *conn, u8 level, u8 description)
26 conn->alert_level = level;
27 conn->alert_description = description;
31 int tlsv1_server_derive_keys(struct tlsv1_server *conn,
43 os_memcpy(seed, conn->client_random, TLS_RANDOM_LEN);
44 os_memcpy(seed + TLS_RANDOM_LEN, conn->server_random,
46 if (tls_prf(conn->rl.tls_version,
49 conn->master_secret, TLS_MASTER_SECRET_LEN)) {
55 conn->master_secret, TLS_MASTER_SECRET_LEN);
58 os_memcpy(seed, conn->server_random, TLS_RANDOM_LEN);
59 os_memcpy(seed + TLS_RANDOM_LEN, conn->client_random, TLS_RANDOM_LEN);
60 key_block_len = 2 * (conn->rl.hash_size + conn->rl.key_material_len +
61 conn->rl.iv_size);
62 if (tls_prf(conn->rl.tls_version,
63 conn->master_secret, TLS_MASTER_SECRET_LEN,
75 os_memcpy(conn->rl.read_mac_secret, pos, conn->rl.hash_size);
76 pos += conn->rl.hash_size;
78 os_memcpy(conn->rl.write_mac_secret, pos, conn->rl.hash_size);
79 pos += conn->rl.hash_size;
82 os_memcpy(conn->rl.read_key, pos, conn->rl.key_material_len);
83 pos += conn->rl.key_material_len;
85 os_memcpy(conn->rl.write_key, pos, conn->rl.key_material_len);
86 pos += conn->rl.key_material_len;
89 os_memcpy(conn->rl.read_iv, pos, conn->rl.iv_size);
90 pos += conn->rl.iv_size;
92 os_memcpy(conn->rl.write_iv, pos, conn->rl.iv_size);
93 pos += conn->rl.iv_size;
101 * @conn: TLSv1 server connection data from tlsv1_server_init()
107 u8 * tlsv1_server_handshake(struct tlsv1_server *conn,
130 used = tlsv1_record_receive(&conn->rl, pos, end - pos,
135 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL, alert);
142 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL, alert);
154 if (tlsv1_server_process_handshake(conn, ct, in_pos,
166 msg = tlsv1_server_handshake_write(conn, out_len);
170 if (conn->alert_level) {
171 if (conn->state == FAILED) {
177 conn->state = FAILED;
179 msg = tlsv1_server_send_alert(conn, conn->alert_level,
180 conn->alert_description,
190 * @conn: TLSv1 server connection data from tlsv1_server_init()
200 int tlsv1_server_encrypt(struct tlsv1_server *conn,
209 if (tlsv1_record_send(&conn->rl, TLS_CONTENT_TYPE_APPLICATION_DATA,
212 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL,
223 * @conn: TLSv1 server connection data from tlsv1_server_init()
233 int tlsv1_server_decrypt(struct tlsv1_server *conn,
250 used = tlsv1_record_receive(&conn->rl, pos, in_end - pos,
255 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL, alert);
262 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL, alert);
270 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL,
282 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL,
290 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL,
299 tlsv1_server_alert(conn, TLS_ALERT_LEVEL_FATAL,
343 struct tlsv1_server *conn;
347 conn = os_zalloc(sizeof(*conn));
348 if (conn == NULL)
351 conn->cred = cred;
353 conn->state = CLIENT_HELLO;
355 if (tls_verify_hash_init(&conn->verify) < 0) {
358 os_free(conn);
363 suites = conn->cipher_suites;
369 conn->num_cipher_suites = count;
371 return conn;
375 static void tlsv1_server_clear_data(struct tlsv1_server *conn)
377 tlsv1_record_set_cipher_suite(&conn->rl, TLS_NULL_WITH_NULL_NULL);
378 tlsv1_record_change_write_cipher(&conn->rl);
379 tlsv1_record_change_read_cipher(&conn->rl);
380 tls_verify_hash_free(&conn->verify);
382 crypto_public_key_free(conn->client_rsa_key);
383 conn->client_rsa_key = NULL;
385 os_free(conn->session_ticket);
386 conn->session_ticket = NULL;
387 conn->session_ticket_len = 0;
388 conn->use_session_ticket = 0;
390 os_free(conn->dh_secret);
391 conn->dh_secret = NULL;
392 conn->dh_secret_len = 0;
398 * @conn: TLSv1 server connection data from tlsv1_server_init()
400 void tlsv1_server_deinit(struct tlsv1_server *conn)
402 tlsv1_server_clear_data(conn);
403 os_free(conn);
409 * @conn: TLSv1 server connection data from tlsv1_server_init()
412 int tlsv1_server_established(struct tlsv1_server *conn)
414 return conn->state == ESTABLISHED;
420 * @conn: TLSv1 server connection data from tlsv1_server_init()
428 int tlsv1_server_prf(struct tlsv1_server *conn, const char *label,
433 if (conn->state != ESTABLISHED)
437 os_memcpy(seed, conn->server_random, TLS_RANDOM_LEN);
438 os_memcpy(seed + TLS_RANDOM_LEN, conn->client_random,
441 os_memcpy(seed, conn->client_random, TLS_RANDOM_LEN);
442 os_memcpy(seed + TLS_RANDOM_LEN, conn->server_random,
446 return tls_prf(conn->rl.tls_version,
447 conn->master_secret, TLS_MASTER_SECRET_LEN,
454 * @conn: TLSv1 server connection data from tlsv1_server_init()
461 int tlsv1_server_get_cipher(struct tlsv1_server *conn, char *buf,
466 switch (conn->rl.cipher_suite) {
500 * @conn: TLSv1 server connection data from tlsv1_server_init()
503 int tlsv1_server_shutdown(struct tlsv1_server *conn)
505 conn->state = CLIENT_HELLO;
507 if (tls_verify_hash_init(&conn->verify) < 0) {
513 tlsv1_server_clear_data(conn);
521 * @conn: TLSv1 server connection data from tlsv1_server_init()
524 int tlsv1_server_resumed(struct tlsv1_server *conn)
532 * @conn: TLSv1 server connection data from tlsv1_server_init()
536 int tlsv1_server_get_keys(struct tlsv1_server *conn, struct tls_keys *keys)
539 if (conn->state == CLIENT_HELLO)
542 keys->client_random = conn->client_random;
545 if (conn->state != SERVER_HELLO) {
546 keys->server_random = conn->server_random;
548 keys->master_key = conn->master_secret;
558 * @conn: TLSv1 server connection data from tlsv1_server_init()
562 int tlsv1_server_get_keyblock_size(struct tlsv1_server *conn)
564 if (conn->state == CLIENT_HELLO || conn->state == SERVER_HELLO)
567 return 2 * (conn->rl.hash_size + conn->rl.key_material_len +
568 conn->rl.iv_size);
574 * @conn: TLSv1 server connection data from tlsv1_server_init()
579 int tlsv1_server_set_cipher_list(struct tlsv1_server *conn, u8 *ciphers)
587 suites = conn->cipher_suites;
598 conn->num_cipher_suites = count;
605 int tlsv1_server_set_verify(struct tlsv1_server *conn, int verify_peer)
607 conn->verify_peer = verify_peer;
612 void tlsv1_server_set_session_ticket_cb(struct tlsv1_server *conn,
618 conn->session_ticket_cb = cb;
619 conn->session_ticket_cb_ctx = ctx;