Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching refs:pos

130 	u8 *alert, *pos, *length;
139 pos = alert;
143 *pos++ = TLS_CONTENT_TYPE_ALERT;
145 WPA_PUT_BE16(pos, TLS_VERSION);
146 pos += 2;
148 length = pos;
149 pos += 2;
154 *pos++ = level;
156 *pos++ = description;
158 WPA_PUT_BE16(length, pos - length - 2);
159 *out_len = pos - alert;
168 u8 *hello, *end, *pos, *hs_length, *hs_start, *rhdr;
192 pos = rhdr + TLS_RECORD_HEADER_LEN;
197 hs_start = pos;
199 *pos++ = TLS_HANDSHAKE_TYPE_CLIENT_HELLO;
201 hs_length = pos;
202 pos += 3;
205 WPA_PUT_BE16(pos, TLS_VERSION);
206 pos += 2;
208 os_memcpy(pos, conn->client_random, TLS_RANDOM_LEN);
209 pos += TLS_RANDOM_LEN;
211 *pos++ = conn->session_id_len;
212 os_memcpy(pos, conn->session_id, conn->session_id_len);
213 pos += conn->session_id_len;
215 WPA_PUT_BE16(pos, 2 * conn->num_cipher_suites);
216 pos += 2;
218 WPA_PUT_BE16(pos, conn->cipher_suites[i]);
219 pos += 2;
222 *pos++ = 1;
223 *pos++ = TLS_COMPRESSION_NULL;
226 os_memcpy(pos, conn->client_hello_ext,
228 pos += conn->client_hello_ext_len;
231 WPA_PUT_BE24(hs_length, pos - hs_length - 3);
232 tls_verify_hash_add(conn, hs_start, pos - hs_start);
235 rhdr, end - rhdr, pos - hs_start, out_len) < 0) {
252 const u8 *pos, *end;
264 pos = in_data;
271 if (*pos != TLS_HANDSHAKE_TYPE_SERVER_HELLO) {
273 "message %d (expected ServerHello)", *pos);
279 pos++;
281 len = WPA_GET_BE24(pos);
282 pos += 3;
290 wpa_hexdump(MSG_MSGDUMP, "TLSv1: ServerHello", pos, len);
291 end = pos + len;
294 if (end - pos < 2)
296 if (WPA_GET_BE16(pos) != TLS_VERSION) {
303 pos += 2;
306 if (end - pos < TLS_RANDOM_LEN)
309 os_memcpy(conn->server_random, pos, TLS_RANDOM_LEN);
310 pos += TLS_RANDOM_LEN;
315 if (end - pos < 1)
317 if (end - pos < 1 + *pos || *pos > TLS_SESSION_ID_MAX_LEN)
319 if (conn->session_id_len && conn->session_id_len == *pos &&
320 os_memcmp(conn->session_id, pos + 1, conn->session_id_len) == 0) {
321 pos += 1 + conn->session_id_len;
325 conn->session_id_len = *pos;
326 pos++;
327 os_memcpy(conn->session_id, pos, conn->session_id_len);
328 pos += conn->session_id_len;
334 if (end - pos < 2)
336 cipher_suite = WPA_GET_BE16(pos);
337 pos += 2;
373 if (end - pos < 1)
375 if (*pos != TLS_COMPRESSION_NULL) {
377 "compression 0x%02x", *pos);
382 pos++;
384 if (end != pos) {
386 "end of ServerHello", pos, end - pos);
432 const u8 *pos, *end;
446 pos = in_data;
456 type = *pos++;
457 len = WPA_GET_BE24(pos);
458 pos += 3;
500 end = pos + len;
502 if (end - pos < 3) {
509 list_len = WPA_GET_BE24(pos);
510 pos += 3;
512 if ((size_t) (end - pos) != list_len) {
516 (unsigned long) (end - pos));
522 while (pos < end) {
523 if (end - pos < 3) {
532 cert_len = WPA_GET_BE24(pos);
533 pos += 3;
535 if ((size_t) (end - pos) < cert_len) {
539 (unsigned long) (end - pos));
551 if (tls_parse_cert(pos, cert_len,
562 cert = x509_certificate_parse(pos, cert_len);
579 pos += cert_len;
637 const u8 *pos, *end;
641 pos = buf;
644 if (end - pos < 3)
646 conn->dh_p_len = WPA_GET_BE16(pos);
647 pos += 2;
648 if (conn->dh_p_len == 0 || end - pos < (int) conn->dh_p_len)
653 os_memcpy(conn->dh_p, pos, conn->dh_p_len);
654 pos += conn->dh_p_len;
658 if (end - pos < 3)
660 conn->dh_g_len = WPA_GET_BE16(pos);
661 pos += 2;
662 if (conn->dh_g_len == 0 || end - pos < (int) conn->dh_g_len)
667 os_memcpy(conn->dh_g, pos, conn->dh_g_len);
668 pos += conn->dh_g_len;
674 if (end - pos < 3)
676 conn->dh_ys_len = WPA_GET_BE16(pos);
677 pos += 2;
678 if (conn->dh_ys_len == 0 || end - pos < (int) conn->dh_ys_len)
683 os_memcpy(conn->dh_ys, pos, conn->dh_ys_len);
684 pos += conn->dh_ys_len;
699 const u8 *pos, *end;
712 pos = in_data;
722 type = *pos++;
723 len = WPA_GET_BE24(pos);
724 pos += 3;
735 end = pos + len;
762 wpa_hexdump(MSG_DEBUG, "TLSv1: ServerKeyExchange", pos, len);
765 if (tlsv1_process_diffie_hellman(conn, pos, len) < 0) {
788 const u8 *pos, *end;
800 pos = in_data;
810 type = *pos++;
811 len = WPA_GET_BE24(pos);
812 pos += 3;
823 end = pos + len;
852 const u8 *pos, *end;
864 pos = in_data;
874 type = *pos++;
875 len = WPA_GET_BE24(pos);
876 pos += 3;
886 end = pos + len;
910 const u8 *pos;
921 pos = in_data;
930 if (*pos != TLS_CHANGE_CIPHER_SPEC) {
932 "received data 0x%x", *pos);
947 *in_len = pos + 1 - in_data;
958 const u8 *pos, *end;
971 pos = in_data;
983 if (pos[0] != TLS_HANDSHAKE_TYPE_FINISHED) {
985 "type 0x%x", pos[0]);
991 len = WPA_GET_BE24(pos + 1);
993 pos += 4;
1004 end = pos + len;
1014 pos, TLS_VERIFY_DATA_LEN);
1049 if (os_memcmp(pos, verify_data, TLS_VERIFY_DATA_LEN) != 0) {
1081 u8 *pos;
1114 pos = key_block;
1117 os_memcpy(conn->rl.write_mac_secret, pos, conn->rl.hash_size);
1118 pos += conn->rl.hash_size;
1120 os_memcpy(conn->rl.read_mac_secret, pos, conn->rl.hash_size);
1121 pos += conn->rl.hash_size;
1124 os_memcpy(conn->rl.write_key, pos, conn->rl.key_material_len);
1125 pos += conn->rl.key_material_len;
1127 os_memcpy(conn->rl.read_key, pos, conn->rl.key_material_len);
1128 pos += conn->rl.key_material_len;
1131 os_memcpy(conn->rl.write_iv, pos, conn->rl.iv_size);
1132 pos += conn->rl.iv_size;
1134 os_memcpy(conn->rl.read_iv, pos, conn->rl.iv_size);
1135 pos += conn->rl.iv_size;
1144 u8 *pos, *rhdr, *hs_start, *hs_length, *cert_start;
1148 pos = *msgpos;
1151 rhdr = pos;
1152 pos += TLS_RECORD_HEADER_LEN;
1157 hs_start = pos;
1159 *pos++ = TLS_HANDSHAKE_TYPE_CERTIFICATE;
1161 hs_length = pos;
1162 pos += 3;
1165 cert_start = pos;
1166 pos += 3;
1169 if (pos + 3 + cert->cert_len > end) {
1173 (unsigned long) (end - pos));
1178 WPA_PUT_BE24(pos, cert->cert_len);
1179 pos += 3;
1180 os_memcpy(pos, cert->cert_start, cert->cert_len);
1181 pos += cert->cert_len;
1198 WPA_PUT_BE24(cert_start, pos - cert_start - 3);
1200 WPA_PUT_BE24(hs_length, pos - hs_length - 3);
1203 rhdr, end - rhdr, pos - hs_start, &rlen) < 0) {
1209 pos = rhdr + rlen;
1211 tls_verify_hash_add(conn, hs_start, pos - hs_start);
1213 *msgpos = pos;
1219 static int tlsv1_key_x_anon_dh(struct tlsv1_client *conn, u8 **pos, u8 *end)
1274 WPA_PUT_BE16(*pos, dh_yc_len);
1275 *pos += 2;
1276 if (*pos + dh_yc_len > end) {
1285 os_memcpy(*pos, dh_yc, dh_yc_len);
1286 *pos += dh_yc_len;
1328 static int tlsv1_key_x_rsa(struct tlsv1_client *conn, u8 **pos, u8 *end)
1353 *pos += 2;
1354 clen = end - *pos;
1358 *pos, &clen);
1366 WPA_PUT_BE16(*pos - 2, clen);
1368 *pos, clen);
1369 *pos += clen;
1378 u8 *pos, *rhdr, *hs_start, *hs_length;
1389 pos = *msgpos;
1393 rhdr = pos;
1394 pos += TLS_RECORD_HEADER_LEN;
1399 hs_start = pos;
1401 *pos++ = TLS_HANDSHAKE_TYPE_CLIENT_KEY_EXCHANGE;
1403 hs_length = pos;
1404 pos += 3;
1407 if (tlsv1_key_x_anon_dh(conn, &pos, end) < 0)
1410 if (tlsv1_key_x_rsa(conn, &pos, end) < 0)
1414 WPA_PUT_BE24(hs_length, pos - hs_length - 3);
1417 rhdr, end - rhdr, pos - hs_start, &rlen) < 0) {
1423 pos = rhdr + rlen;
1424 tls_verify_hash_add(conn, hs_start, pos - hs_start);
1426 *msgpos = pos;
1435 u8 *pos, *rhdr, *hs_start, *hs_length, *signed_start;
1440 pos = *msgpos;
1443 rhdr = pos;
1444 pos += TLS_RECORD_HEADER_LEN;
1447 hs_start = pos;
1449 *pos++ = TLS_HANDSHAKE_TYPE_CERTIFICATE_VERIFY;
1451 hs_length = pos;
1452 pos += 3;
1520 signed_start = pos; /* length to be filled */
1521 pos += 2;
1522 clen = end - pos;
1524 pos, &clen) < 0) {
1532 pos += clen;
1534 WPA_PUT_BE24(hs_length, pos - hs_length - 3);
1537 rhdr, end - rhdr, pos - hs_start, &rlen) < 0) {
1543 pos = rhdr + rlen;
1545 tls_verify_hash_add(conn, hs_start, pos - hs_start);
1547 *msgpos = pos;
1556 u8 *pos, *rhdr;
1559 pos = *msgpos;
1562 rhdr = pos;
1563 pos += TLS_RECORD_HEADER_LEN;
1564 *pos = TLS_CHANGE_CIPHER_SPEC;
1590 u8 *pos, *rhdr, *hs_start, *hs_length;
1595 pos = *msgpos;
1634 rhdr = pos;
1635 pos += TLS_RECORD_HEADER_LEN;
1637 hs_start = pos;
1639 *pos++ = TLS_HANDSHAKE_TYPE_FINISHED;
1641 hs_length = pos;
1642 pos += 3;
1643 os_memcpy(pos, verify_data, TLS_VERIFY_DATA_LEN);
1644 pos += TLS_VERIFY_DATA_LEN;
1645 WPA_PUT_BE24(hs_length, pos - hs_length - 3);
1646 tls_verify_hash_add(conn, hs_start, pos - hs_start);
1649 rhdr, end - rhdr, pos - hs_start, &rlen) < 0) {
1656 pos = rhdr + rlen;
1658 *msgpos = pos;
1685 u8 *msg, *end, *pos;
1698 pos = msg;
1702 if (tls_write_client_certificate(conn, &pos, end) < 0) {
1708 if (tls_write_client_key_exchange(conn, &pos, end) < 0 ||
1710 tls_write_client_certificate_verify(conn, &pos, end) < 0) ||
1711 tls_write_client_change_cipher_spec(conn, &pos, end) < 0 ||
1712 tls_write_client_finished(conn, &pos, end) < 0) {
1717 *out_len = pos - msg;
1728 u8 *msg, *end, *pos;
1736 pos = msg;
1739 if (tls_write_client_change_cipher_spec(conn, &pos, end) < 0 ||
1740 tls_write_client_finished(conn, &pos, end) < 0) {
1745 *out_len = pos - msg;
1827 const u8 *pos, *end;
1840 pos = in_data;
1847 while (pos < end) {
1849 if (tlsv1_record_receive(&conn->rl, pos, end - pos,
1856 ct = pos[0];
1871 pos += TLS_RECORD_HEADER_LEN + WPA_GET_BE16(pos + 3);
1962 const u8 *in_end, *pos;
1967 pos = in_data;
1972 while (pos < in_end) {
1973 if (pos[0] != TLS_CONTENT_TYPE_APPLICATION_DATA) {
1975 "0x%x", pos[0]);
1982 res = tlsv1_record_receive(&conn->rl, pos, in_end - pos,
1999 pos += TLS_RECORD_HEADER_LEN + WPA_GET_BE16(pos + 3);
2263 u8 *pos;
2273 pos = conn->client_hello_ext = os_malloc(6 + data_len);
2274 if (pos == NULL)
2277 WPA_PUT_BE16(pos, 4 + data_len);
2278 pos += 2;
2279 WPA_PUT_BE16(pos, ext_type);
2280 pos += 2;
2281 WPA_PUT_BE16(pos, data_len);
2282 pos += 2;
2283 os_memcpy(pos, data, data_len);
2437 const u8 *pos, *end;
2441 pos = search_tag(pem_cert_begin, buf, len);
2442 if (!pos) {
2451 while (pos) {
2452 pos += os_strlen(pem_cert_begin);
2453 end = search_tag(pem_cert_end, pos, buf + len - pos);
2460 der = base64_decode(pos, end - pos, &der_len);
2477 pos = search_tag(pem_cert_begin, end, buf + len - end);