Chromium Code Reviews| Index: remoting/protocol/secure_p2p_socket.cc |
| diff --git a/remoting/protocol/secure_p2p_socket.cc b/remoting/protocol/secure_p2p_socket.cc |
| index cbc480f0036cb1443c376f9b66bf2f334aa5a2a3..45f9735a6e803b074f454873a850ff11c4c2e991 100644 |
| --- a/remoting/protocol/secure_p2p_socket.cc |
| +++ b/remoting/protocol/secure_p2p_socket.cc |
| @@ -91,8 +91,9 @@ SecureP2PSocket::SecureP2PSocket(Socket* socket, const std::string& ice_key) |
| reinterpret_cast<const unsigned char*>(ice_key.data()), kKeySize); |
| DCHECK(ret) << "Initialize HMAC-SHA1 for mask failed."; |
| scoped_array<uint8> mask_digest(new uint8[mask_hasher.DigestLength()]); |
| - mask_hasher.Sign(kMaskSaltStr, mask_digest.get(), |
| - mask_hasher.DigestLength()); |
| + ret = mask_hasher.Sign(kMaskSaltStr, mask_digest.get(), |
| + mask_hasher.DigestLength()); |
| + DCHECK(ret) << "Sign with HMAC-SHA1 for mask failed."; |
| mask_key_.reset(crypto::SymmetricKey::Import( |
| crypto::SymmetricKey::AES, |
| std::string(mask_digest.get(), mask_digest.get() + kKeySize))); |
| @@ -107,8 +108,9 @@ SecureP2PSocket::SecureP2PSocket(Socket* socket, const std::string& ice_key) |
| reinterpret_cast<const unsigned char*>(ice_key.data()), kKeySize); |
| DCHECK(ret) << "Initialize HMAC-SHA1 for hash failed."; |
| scoped_array<uint8> hash_key(new uint8[hash_hasher.DigestLength()]); |
| - hash_hasher.Sign(kHashSaltStr, hash_key.get(), hash_hasher.DigestLength()); |
| - |
| + ret = hash_hasher.Sign(kHashSaltStr, hash_key.get(), |
| + hash_hasher.DigestLength()); |
| + DCHECK(ret) << "Sign with HMAC-SHA1 for hash failed."; |
| // Create a hasher for message. |
| ret = msg_hasher_.Init(hash_key.get(), kKeySize); |
| DCHECK(ret) << "Initialize HMAC-SHA1 for message failed."; |
| @@ -256,16 +258,13 @@ int SecureP2PSocket::DecryptBuffer(int size) { |
| // See the spec for the steps taken in this method: |
| // http://www.whatwg.org/specs/web-apps/current-work/complete/video-conferencing-and-peer-to-peer-communication.html#peer-to-peer-connections |
| // 5. Compute hash of the message. |
| - scoped_array<uint8> msg_digest(new uint8[msg_hasher_.DigestLength()]); |
| - msg_hasher_.Sign( |
| + // 6. Compare the hash values. |
|
Sergey Ulanov
2011/07/28 03:26:31
Update the comments
|
| + if (!msg_hasher_.Verify( |
| base::StringPiece(read_buf_->data() + kNoncePosition, |
| size - kNoncePosition), |
| - msg_digest.get(), msg_hasher_.DigestLength()); |
| - |
| - // 6. Compare the hash values. |
| - int ret = memcmp(read_buf_->data(), msg_digest.get(), kKeySize); |
| - if (ret) |
| + base::StringPiece(read_buf_->data(), kKeySize))) { |
| return net::ERR_INVALID_RESPONSE; |
| + } |
| // 7. Decrypt the message. |
| std::string nonce = std::string( |