#include <yassl_imp.hpp>
Inheritance diagram for yaSSL::EncryptedPreMasterSecret:


Public Member Functions | |
| EncryptedPreMasterSecret () | |
| ~EncryptedPreMasterSecret () | |
| void | build (SSL &) |
| void | read (SSL &, input_buffer &) |
| int | get_length () const |
| opaque * | get_clientKey () const |
| void | alloc (int sz) |
Private Member Functions | |
| EncryptedPreMasterSecret (const EncryptedPreMasterSecret &) | |
| EncryptedPreMasterSecret & | operator= (const EncryptedPreMasterSecret &) |
Private Attributes | |
| opaque * | secret_ |
| int | length_ |
Definition at line 477 of file yassl_imp.hpp.
| yaSSL::EncryptedPreMasterSecret::EncryptedPreMasterSecret | ( | ) |
| yaSSL::EncryptedPreMasterSecret::~EncryptedPreMasterSecret | ( | ) |
Definition at line 244 of file yassl_imp.cpp.
References secret_, and yaSSL::ysArrayDelete().
00245 { 00246 ysArrayDelete(secret_); 00247 }
Here is the call graph for this function:

| yaSSL::EncryptedPreMasterSecret::EncryptedPreMasterSecret | ( | const EncryptedPreMasterSecret & | ) | [private] |
| void yaSSL::EncryptedPreMasterSecret::alloc | ( | int | sz | ) |
| void yaSSL::EncryptedPreMasterSecret::build | ( | SSL & | ) | [virtual] |
Reimplemented from yaSSL::ClientKeyBase.
Definition at line 85 of file yassl_imp.cpp.
References alloc(), yaSSL::c16toa(), cert, yaSSL::RandomPool::Fill(), yaSSL::Crypto::get_certManager(), yaSSL::Security::get_connection(), yaSSL::Crypto::get_random(), yaSSL::SSL::getCrypto(), yaSSL::SSL::getSecurity(), yaSSL::SSL::isTLS(), yaSSL::ProtocolVersion::major_, memcpy, memset, yaSSL::ProtocolVersion::minor_, secret_, yaSSL::SECRET_LEN, yaSSL::SSL::set_preMaster(), and yaSSL::Connection::version_.
00086 { 00087 opaque tmp[SECRET_LEN]; 00088 memset(tmp, 0, sizeof(tmp)); 00089 ssl.getCrypto().get_random().Fill(tmp, SECRET_LEN); 00090 ProtocolVersion pv = ssl.getSecurity().get_connection().version_; 00091 tmp[0] = pv.major_; 00092 tmp[1] = pv.minor_; 00093 ssl.set_preMaster(tmp, SECRET_LEN); 00094 00095 const CertManager& cert = ssl.getCrypto().get_certManager(); 00096 RSA rsa(cert.get_peerKey(), cert.get_peerKeyLength()); 00097 bool tls = ssl.isTLS(); // if TLS, put length for encrypted data 00098 alloc(rsa.get_cipherLength() + (tls ? 2 : 0)); 00099 byte* holder = secret_; 00100 if (tls) { 00101 byte len[2]; 00102 c16toa(rsa.get_cipherLength(), len); 00103 memcpy(secret_, len, sizeof(len)); 00104 holder += 2; 00105 } 00106 rsa.encrypt(holder, tmp, SECRET_LEN, ssl.getCrypto().get_random()); 00107 }
Here is the call graph for this function:

| opaque * yaSSL::EncryptedPreMasterSecret::get_clientKey | ( | ) | const [virtual] |
Reimplemented from yaSSL::ClientKeyBase.
Definition at line 256 of file yassl_imp.cpp.
References secret_.
00257 { 00258 return secret_; 00259 }
| int yaSSL::EncryptedPreMasterSecret::get_length | ( | ) | const [virtual] |
Reimplemented from yaSSL::ClientKeyBase.
Definition at line 250 of file yassl_imp.cpp.
References length_.
00251 { 00252 return length_; 00253 }
| EncryptedPreMasterSecret& yaSSL::EncryptedPreMasterSecret::operator= | ( | const EncryptedPreMasterSecret & | ) | [private] |
| void yaSSL::EncryptedPreMasterSecret::read | ( | SSL & | , | |
| input_buffer & | ||||
| ) | [virtual] |
Reimplemented from yaSSL::ClientKeyBase.
Definition at line 217 of file yassl_imp.cpp.
References alloc(), yaSSL::ato16(), cert, yaSSL::Crypto::get_certManager(), yaSSL::Crypto::get_random(), yaSSL::SSL::getCrypto(), yaSSL::SSL::isTLS(), length_, yaSSL::SSL::makeMasterSecret(), yaSSL::input_buffer::read(), secret_, yaSSL::SECRET_LEN, and yaSSL::SSL::set_preMaster().
00218 { 00219 const CertManager& cert = ssl.getCrypto().get_certManager(); 00220 RSA rsa(cert.get_privateKey(), cert.get_privateKeyLength(), false); 00221 uint16 cipherLen = rsa.get_cipherLength(); 00222 if (ssl.isTLS()) { 00223 byte len[2]; 00224 input.read(len, sizeof(len)); 00225 ato16(len, cipherLen); 00226 } 00227 alloc(cipherLen); 00228 input.read(secret_, length_); 00229 00230 opaque preMasterSecret[SECRET_LEN]; 00231 rsa.decrypt(preMasterSecret, secret_, length_, 00232 ssl.getCrypto().get_random()); 00233 00234 ssl.set_preMaster(preMasterSecret, SECRET_LEN); 00235 ssl.makeMasterSecret(); 00236 }
Here is the call graph for this function:

int yaSSL::EncryptedPreMasterSecret::length_ [private] |
opaque* yaSSL::EncryptedPreMasterSecret::secret_ [private] |
Definition at line 478 of file yassl_imp.hpp.
Referenced by alloc(), build(), get_clientKey(), read(), and ~EncryptedPreMasterSecret().
1.4.7

