1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "net/quic/crypto/source_address_token.h" 6 7#include <vector> 8 9#include "base/strings/string_number_conversions.h" 10#include "base/strings/string_split.h" 11 12using std::string; 13using std::vector; 14 15namespace net { 16 17CachedNetworkParameters::CachedNetworkParameters() { 18} 19 20CachedNetworkParameters::~CachedNetworkParameters() { 21} 22 23SourceAddressToken::SourceAddressToken() { 24} 25 26SourceAddressToken::~SourceAddressToken() { 27} 28 29string SourceAddressToken::SerializeAsString() const { 30 string out; 31 out.push_back(ip_.size()); 32 out.append(ip_); 33 string time_str = base::Int64ToString(timestamp_); 34 out.push_back(time_str.size()); 35 out.append(time_str); 36 // TODO(rtenneti): Implement serialization of optional CachedNetworkParameters 37 // when they are used. 38 return out; 39} 40 41bool SourceAddressToken::ParseFromArray(const char* plaintext, 42 size_t plaintext_length) { 43 if (plaintext_length == 0) { 44 return false; 45 } 46 size_t ip_len = plaintext[0]; 47 if (plaintext_length <= 1 + ip_len) { 48 return false; 49 } 50 size_t time_len = plaintext[1 + ip_len]; 51 if (plaintext_length != 1 + ip_len + 1 + time_len) { 52 return false; 53 } 54 55 string time_str(&plaintext[1 + ip_len + 1], time_len); 56 int64 timestamp; 57 if (!base::StringToInt64(time_str, ×tamp)) { 58 return false; 59 } 60 61 ip_.assign(&plaintext[1], ip_len); 62 timestamp_ = timestamp; 63 64 // TODO(rtenneti): Implement parsing of optional CachedNetworkParameters when 65 // they are used. 66 return true; 67} 68 69} // namespace net 70