Home | History | Annotate | Download | only in dropbear

Lines Matching refs:ses

69 	buf_putbyte(ses.writepayload, SSH_MSG_KEXINIT);
72 genrandom(buf_getwriteptr(ses.writepayload, 16), 16);
73 buf_incrwritepos(ses.writepayload, 16);
76 buf_put_algolist(ses.writepayload, sshkex);
79 buf_put_algolist(ses.writepayload, sshhostkey);
82 buf_put_algolist(ses.writepayload, sshciphers);
85 buf_put_algolist(ses.writepayload, sshciphers);
88 buf_put_algolist(ses.writepayload, sshhashes);
91 buf_put_algolist(ses.writepayload, sshhashes);
94 buf_put_algolist(ses.writepayload, sshcompress);
97 buf_put_algolist(ses.writepayload, sshcompress);
100 buf_putstring(ses.writepayload, "", 0);
103 buf_putstring(ses.writepayload, "", 0);
106 buf_putbyte(ses.writepayload, 0x00);
109 buf_putint(ses.writepayload, 0);
113 ses.transkexinit = buf_newcopy(ses.writepayload);
116 ses.dataallowed = 0; /* don't send other packets during kex */
120 ses.kexstate.sentkexinit = 1;
136 buf_putbyte(ses.writepayload, SSH_MSG_NEWKEYS);
141 if (ses.kexstate.recvnewkeys) {
146 ses.dataallowed = 1; /* we can send other packets again now */
147 ses.kexstate.donefirstkex = 1;
149 ses.kexstate.sentnewkeys = 1;
165 if (ses.kexstate.sentnewkeys) {
170 ses.dataallowed = 1; /* we can send other packets again now */
171 ses.kexstate.donefirstkex = 1;
174 ses.kexstate.recvnewkeys = 1;
184 ses.kexstate.donefirstkex = 0;
196 ses.kexstate.sentkexinit = 0;
197 ses.kexstate.recvkexinit = 0;
200 ses.kexstate.recvnewkeys = 0;
201 ses.kexstate.sentnewkeys = 0;
204 ses.kexstate.firstfollows = 0;
206 ses.kexstate.datatrans = 0;
207 ses.kexstate.datarecv = 0;
212 ses.kexstate.lastkextime = tv.tv_sec;
232 sha1_process(&hs2, ses.session_id, SHA1_HASH_SIZE);
247 * ses.newkeys is the new set of keys which are generated, these are only
269 sha1_process_mp(&hs, ses.dh_K);
270 mp_clear(ses.dh_K);
271 m_free(ses.dh_K);
272 sha1_process(&hs, ses.hash, SHA1_HASH_SIZE);
273 m_burn(ses.hash, SHA1_HASH_SIZE);
280 C2S_keysize = ses.newkeys->trans_algo_crypt->keysize;
281 S2C_keysize = ses.newkeys->recv_algo_crypt->keysize;
289 C2S_keysize = ses.newkeys->recv_algo_crypt->keysize;
290 S2C_keysize = ses.newkeys->trans_algo_crypt->keysize;
300 recv_cipher = find_cipher(ses.newkeys->recv_algo_crypt->cipherdesc->name);
305 ses.newkeys->recv_algo_crypt->keysize, 0,
306 &ses.newkeys->recv_symmetric_struct) != CRYPT_OK) {
309 trans_cipher = find_cipher(ses.newkeys->trans_algo_crypt->cipherdesc->name);
314 ses.newkeys->trans_algo_crypt->keysize, 0,
315 &ses.newkeys->trans_symmetric_struct) != CRYPT_OK) {
320 hashkeys(ses.newkeys->transmackey,
321 ses.newkeys->trans_algo_mac->keysize, &hs, mactransletter);
322 hashkeys(ses.newkeys->recvmackey,
323 ses.newkeys->recv_algo_mac->keysize, &hs, macrecvletter);
330 m_burn(ses.keys, sizeof(struct key_context));
331 m_free(ses.keys);
332 ses.keys = ses.newkeys;
333 ses.newkeys = NULL;
344 if (ses.newkeys->recv_algo_comp == DROPBEAR_COMP_ZLIB) {
345 ses.newkeys->recv_zstream = (z_streamp)m_malloc(sizeof(z_stream));
346 ses.newkeys->recv_zstream->zalloc = Z_NULL;
347 ses.newkeys->recv_zstream->zfree = Z_NULL;
349 if (inflateInit(ses.newkeys->recv_zstream) != Z_OK) {
353 ses.newkeys->recv_zstream = NULL;
356 if (ses.newkeys->trans_algo_comp == DROPBEAR_COMP_ZLIB) {
357 ses.newkeys->trans_zstream = (z_streamp)m_malloc(sizeof(z_stream));
358 ses.newkeys->trans_zstream->zalloc = Z_NULL;
359 ses.newkeys->trans_zstream->zfree = Z_NULL;
361 if (deflateInit(ses.newkeys->trans_zstream, Z_DEFAULT_COMPRESSION)
366 ses.newkeys->trans_zstream = NULL;
370 if (ses.keys->recv_zstream != NULL) {
371 if (inflateEnd(ses.keys->recv_zstream) == Z_STREAM_ERROR) {
375 m_free(ses.keys->recv_zstream);
377 if (ses.keys->trans_zstream != NULL) {
378 if (deflateEnd(ses.keys->trans_zstream) == Z_STREAM_ERROR) {
382 m_free(ses.keys->trans_zstream);
406 if (!ses.kexstate.sentkexinit) {
414 remote_ident_len = strlen((char*)ses.remoteident);
417 + ses.transkexinit->len + ses.payload->len
420 ses.kexhashbuf = buf_new(kexhashbuf_len);
428 buf_putstring(ses.kexhashbuf,
431 buf_putstring(ses.kexhashbuf, ses.remoteident, remote_ident_len);
434 buf_putstring(ses.kexhashbuf,
435 ses.transkexinit->data, ses.transkexinit->len);
437 buf_setpos(ses.payload, 0);
438 buf_putstring(ses.kexhashbuf, ses.payload->data, ses.payload->len);
446 buf_putstring(ses.kexhashbuf, ses.remoteident, remote_ident_len);
448 buf_putstring(ses.kexhashbuf,
452 buf_setpos(ses.payload, 0);
453 buf_putstring(ses.kexhashbuf, ses.payload->data, ses.payload->len);
456 buf_putstring(ses.kexhashbuf,
457 ses.transkexinit->data, ses.transkexinit->len);
459 ses.requirenext = SSH_MSG_KEXDH_INIT;
462 buf_free(ses.transkexinit);
463 ses.transkexinit = NULL;
464 /* the rest of ses.kexhashbuf will be done after DH exchange */
466 ses.kexstate.recvkexinit = 1;
532 ses.dh_K = (mp_int*)m_malloc(sizeof(mp_int));
533 m_mp_init(ses.dh_K);
534 if (mp_exptmod(dh_pub_them, dh_priv, &dh_p, ses.dh_K) != MP_OKAY) {
553 buf_put_pub_key(ses.kexhashbuf, hostkey, ses.newkeys->algo_hostkey);
555 buf_putmpint(ses.kexhashbuf, dh_e);
557 buf_putmpint(ses.kexhashbuf, dh_f);
559 buf_putmpint(ses.kexhashbuf, ses.dh_K);
563 buf_setpos(ses.kexhashbuf, 0);
564 sha1_process(&hs, buf_getptr(ses.kexhashbuf, ses.kexhashbuf->len),
565 ses.kexhashbuf->len);
566 sha1_done(&hs, ses.hash);
568 buf_burn(ses.kexhashbuf);
569 buf_free(ses.kexhashbuf);
570 ses.kexhashbuf = NULL;
573 if (ses.session_id == NULL) {
575 ses.session_id = (unsigned char*)m_malloc(SHA1_HASH_SIZE);
576 memcpy(ses.session_id, ses.hash, SHA1_HASH_SIZE);
601 buf_incrpos(ses.payload, 16); /* start after the cookie */
603 ses.newkeys = (struct key_context*)m_malloc(sizeof(struct key_context));
606 algo = ses.buf_match_algo(ses.payload, sshkex, &goodguess);
613 ses.newkeys->algo_kex = algo->val;
616 algo = ses.buf_match_algo(ses.payload, sshhostkey, &goodguess);
623 ses.newkeys->algo_hostkey = algo->val;
626 c2s_cipher_algo = ses.buf_match_algo(ses.payload, sshciphers, &goodguess);
634 s2c_cipher_algo = ses.buf_match_algo(ses.payload, sshciphers, &goodguess);
642 c2s_hash_algo = ses.buf_match_algo(ses.payload, sshhashes, &goodguess);
650 s2c_hash_algo = ses.buf_match_algo(ses.payload, sshhashes, &goodguess);
658 c2s_comp_algo = ses.buf_match_algo(ses.payload, sshcompress, &goodguess);
666 s2c_comp_algo = ses.buf_match_algo(ses.payload, sshcompress, &goodguess);
674 buf_eatstring(ses.payload);
677 buf_eatstring(ses.payload);
680 if (buf_getbool(ses.payload)) {
681 ses.kexstate.firstfollows = 1;
684 ses.ignorenext = 1;
690 ses.newkeys->recv_algo_crypt =
692 ses.newkeys->trans_algo_crypt =
694 ses.newkeys->recv_algo_mac =
696 ses.newkeys->trans_algo_mac =
698 ses.newkeys->recv_algo_comp = s2c_comp_algo->val;
699 ses.newkeys->trans_algo_comp = c2s_comp_algo->val;
702 ses.newkeys->recv_algo_crypt =
704 ses.newkeys->trans_algo_crypt =
706 ses.newkeys->recv_algo_mac =
708 ses.newkeys->trans_algo_mac =
710 ses.newkeys->recv_algo_comp = c2s_comp_algo->val;
711 ses.newkeys->trans_algo_comp = s2c_comp_algo->val;
715 buf_getint(ses.payload);