[selene-tls] push by p...@querna.org - encrypt the premaster secret with the rsa public key of your peer for ... on 2011-08-15 01:20 GMT

0 views
Skip to first unread message

selen...@googlecode.com

unread,
Aug 14, 2011, 9:39:05 PM8/14/11
to selene-...@googlegroups.com
Revision: 1a45062aceb8
Author: Paul Querna <pqu...@apache.org>
Date: Sun Aug 14 18:20:11 2011
Log: encrypt the premaster secret with the rsa public key of your peer
for the client key exchange

http://code.google.com/p/selene-tls/source/detail?r=1a45062aceb8

Modified:
/lib/parser/handshake_callbacks.c

=======================================
--- /lib/parser/handshake_callbacks.c Sun Aug 14 16:22:40 2011
+++ /lib/parser/handshake_callbacks.c Sun Aug 14 18:20:11 2011
@@ -210,6 +210,10 @@
sln_pubkey_t *pubkey;
sln_bucket_t *btls = NULL;
sln_bucket_t *bcke = NULL;
+ char *output;
+ size_t outlen;
+
+ slnDbg(s, "sending client key exchange");

sln_parser_tls_set_current_version(s, (uint8_t
*)&baton->pre_master_secret[0], (uint8_t *)&baton->pre_master_secret[1]);

@@ -217,10 +221,12 @@

pubkey = sln_peer_pubkey(s);

- /* TODO: out */
- SELENE_ERR(sln_rsa_public_encrypt(s, pubkey, baton->pre_master_secret,
SLN_SECRET_LENGTH, NULL));
- /* cke.pre_master_secret_length = len(out); */
- /* cke.pre_master_key = out; */
+ outlen = sln_rsa_size(pubkey);
+ output = sln_alloc(s, outlen);
+
+ SELENE_ERR(sln_rsa_public_encrypt(s, pubkey, baton->pre_master_secret,
SLN_SECRET_LENGTH, output));
+ cke.pre_master_secret_length = outlen;
+ cke.pre_master_secret = output;

SELENE_ERR(sln_handshake_serialize_client_key_exchange(s, &cke, &bcke));
tls.content_type = SLN_CONTENT_TYPE_HANDSHAKE;
@@ -232,6 +238,8 @@
SLN_BRIGADE_INSERT_TAIL(s->bb.out_enc, btls);
SLN_BRIGADE_INSERT_TAIL(s->bb.out_enc, bcke);

+ sln_free(s, output);
+
return SELENE_SUCCESS;
}

Reply all
Reply to author
Forward
0 new messages