summaryrefslogtreecommitdiffstats
path: root/net/quic/crypto/common_cert_set_test.cc
Commit message (Collapse)AuthorAgeFilesLines
* Switch to standard integer types in net/.Avi Drissman2015-12-201-9/+9
| | | | | | | | | BUG=488550 TBR=mmenke@chromium.org Review URL: https://codereview.chromium.org/1535363003 . Cr-Commit-Position: refs/heads/master@{#366297}
* Ran clang-format on all .h/.cc files in net/quic. No behavior change.rjshade2015-12-181-85/+85
| | | | | | | | | | find ./net/quic/ \( -iname \*.h -o -iname \*.cc \) -exec clang-format -i --style="{BasedOnStyle: Chromium, Standard: Cpp11}" {} \; BUG= Review URL: https://codereview.chromium.org/1535113003 Cr-Commit-Position: refs/heads/master@{#366144}
* Add path_id to QuicAckFrame and QuicStopWaitingFrame structs (Wire format ↵jri2015-12-141-0/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | does not change yet). The path_id in these two frames are needed to write multipath sent/received packet managers. Merge internal change: 109409136 https://codereview.chromium.org/1521663002/ change the public construtor of QuicStreamFrame to not take const char*. Prevent crash on windows due to undeterministic argument evaluation order. Merge internal change: 109333756 https://codereview.chromium.org/1515253002/ If a QUIC client sends an STK but no SCID, use the primary config to attempt to validate it. Protected by FLAGS_quic_validate_stk_without_scid Re-landing cl/109238062 (plus flag protection) which was rolled back. Merge internal change: 109330357 https://codereview.chromium.org/1519893002/ Make QuicPacketGenerator and QuicPacketCreator path-aware (not in use currently). QuicPacketGenerator: Add function SetCurrentPath. QuicPacketCreator: Add function SetCurrentPath. Add current_path_ and multipath_packet_number_. Merge internal change: 109319437 https://codereview.chromium.org/1512763014/ Pull out the QUIC trailing header key ":final-offset" into a string constant. No behavior change. Merge internal change: 109296307 https://codereview.chromium.org/1518873003/ Add an end-to-end test to reproduce the QUIC TOO_MANY_REJECTS problem. Merge internal change: 109246210 https://codereview.chromium.org/1518993002/ QUIC inchoate CHLOs may now include an SCID. Merge internal change: 109238070 https://codereview.chromium.org/1514303002/ Change the memset in QuicWriteBlockList's constructor to be safer. No functional change. Suggested in https://codereview.chromium.org/1470713003/diff/100001/net/quic/quic_write_blocked_list.cc Merge internal change: 109233513 https://codereview.chromium.org/1520613005/ Add a new set_chlo_multiplier() method to QuicCryptoServerConfig to change the amount of amplification attack protection is required. Only called in tests. Merge internal change: 109228560 https://codereview.chromium.org/1513253004/ Refine QuicSession::HasOpenDynamicStreams() to use comparison. No behavior change. Replace implicit int to bool conversion with comparison operation in QuicSession. Merge internal change: 109226224 https://codereview.chromium.org/1519623003/ Add new methods to allow QuicServerSession to initiate a stream. n/a(new unused method in QuicServerSession to prepare for Quic Server Push) Merge internal change: 109209620 https://codereview.chromium.org/1517113002/ add 3 new fields in QuicSession which count incoming streams and are used in condition check while creating a new stream. Protected by FLAGS_quic_distinguish_incoming_outgoing_streams, on by default. The three variables are: num_dynamic_incoming_streams_; num_draining_incoming_streams_; num_locally_closed_incoming_streams_highest_offset_; Merge internal change: 109194594 https://codereview.chromium.org/1504333011/ Add a test for receiving Headers, Body+FIN, Trailers in QuicSpdyStream. n/a (test only) Merge internal change: 109194547 https://codereview.chromium.org/1519463003/ Add HTTP/2 Trailers support to QuicSpdy{Server,Client}Stream. Protected behind existing FLAGS_quic_supports_trailers. Merge internal change: 109193759 https://codereview.chromium.org/1518653002/ Add an unused WriteTrailers method to QuicSpdyStream. Protected behind existing FLAGS_quic_supports_trailers Merge internal change: 109188553 https://codereview.chromium.org/1508853012/ QuicSpdyStream::FinishedReadingTrailers now checks for received FIN as secondary indication that trailers have been read. Protected behind existing FLAGS_quic_supports_trailers Merge internal change: 109187066 https://codereview.chromium.org/1519453002/ Remove kStartOfHashData and QuicData::BeforePlaintext. No functional change. Merge internal change: 109151090 https://codereview.chromium.org/1514473006/ Add a new QUIC common cert set to reflect the new GIA cert. Merge internal change: 109136151 https://codereview.chromium.org/1510223005/ Increase the multiplier of the CHLO message size that a REJ message must stay under when the client doesn't present a valid source-address token from 2 to 3. Merge internal change: 109122060 https://codereview.chromium.org/1513993002/ QUIC: Always use primary config when getting proof When calling ProofSource::GetProof, always use the primary config. Since the QuicCryptoServerConfig's primary config could change partway through processing the handshake, this also stores the primary config's SCID in the state maintained by QuicCryptoServerStream. fix QUIC_PROOF_INVALID bug in QUIC_VERSION_26, gated by FLAGS_quic_use_primary_config_for_proof Merge internal change: 109113945 https://codereview.chromium.org/1513193002/ Change a bunch of log messages from DLOG(INFO) to DVLOG(1), capitalize messages, and make their output consistent with variable names. n/a (DLOG only) Merge internal change: 109113290 https://codereview.chromium.org/1508393003/ Deleting DLOG message in QuicStreamSequencer. I don't think it's useful - the flag will go away soon and will always use this - and more importantly it access the id() field of the incomplete ReliableQuicStream. This constructor is called during initialization of ReliableQuicStream, and before the id_ field in ReliableQuicStream is initialized. n/a (deleting DLOG) Merge internal change: 109113068 https://codereview.chromium.org/1513163002/ Add ack_frame_updated_ to ReceivePacketManager (not in use currently). Merge internal change: 109108430 https://codereview.chromium.org/1515743003/ Add has_ack and has_stop_waiting to QuicPacketCreator and remove them from QuicPacketGenerator. No functional change. Merge internal change: 109007771 https://codereview.chromium.org/1512123004/ n/a (delete unused variable in test) Merge internal change: 108972933 https://codereview.chromium.org/1515703004/ QuicSpdyStream supports receiving trailing headers frames. Flag protected by FLAGS_quic_support_trailers This is not expected to cause changes in production, as no client should be sending Trailers. That said, this is being flag protected as it does potentially change behavior, and the FLAG is intended to cover further CLs as Trailers support is fleshed out. Merge internal change: 108972403 https://codereview.chromium.org/1518483003/ R=rch@chromium.org BUG= Review URL: https://codereview.chromium.org/1515353002 Cr-Commit-Position: refs/heads/master@{#364987}
* net: Remove the remaining use of GG_(U)INTn_C macros.tfarina2015-06-031-2/+4
| | | | | | | | | | | | | | According to comment in base/port.h, in Chromium, we force-define __STDC_CONSTANT_MACROS, so we can just use the regular (U)INTn_C macros from <stdint.h>. BUG=138542 TEST=net_unittests R=mattm@chromium.org Review URL: https://codereview.chromium.org/1160203003 Cr-Commit-Position: refs/heads/master@{#332695}
* Land Recent QUIC Changes until 04/15/2015rch2015-04-181-81/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce new QUIC tag for stateless rejects. Merge internal change: 91210526 https://codereview.chromium.org/1097573003/ Add the option to estimate bandwidth by using the max of the recent samples rather than the average. Default to true in prod. Full implementation of make-tcp-fast's windowed max over 8 RTTs to come later. Merge internal change: 90885261 https://codereview.chromium.org/1091913002/ Temporarily fix a flaky QUIC EndToEndTest until b/19572432 is fixed. Merge internal change: 90710547 https://codereview.chromium.org/1084403006/ Remove extraneous FEC interface from QuicFramer. No functional change. Merge internal change: 90653152 https://codereview.chromium.org/1092783004/ Create a new TCP cubic mode with a min CWND of 4 packets, but with a pacing rate as low as 1 packet per RTT. Merge internal change: 90646967 https://codereview.chromium.org/1097553004/ Remove common cert set 0 from QUIC. Common cert set 0 was generated 2 years ago (or so) at the inception of the QUIC project. The version of the GIA cert which it contains is expired, so the set essentially server no purpose. Common cert set 1 was generated back in July and contains a current version of GIA. Merge internal change: 90426581 https://codereview.chromium.org/1092843002/ Allow QUIC's LargePostNoPacketLoss test to have some packets lost until b/16460210 is fixed. Merge internal change: 90417911 https://codereview.chromium.org/1084323004/ Reorganize incoming packet validity checks. Most behavior unchanged, but QUIC connection requests that are flagged for time-wait and also have a not-understood version now get a version negotiation packet. Add tests to verify the various validity checks have the desired effect. Merge internal change: 90277728 https://codereview.chromium.org/1090063004/ Stop explicitly setting header fields with their default values. Pull out packet construction into a ConstructPacket method. Merge internal change: 90276965 https://codereview.chromium.org/1092833002/ Use C++11 delegate constructors to avoid constructor body duplication. Merge internal change: 90275058 https://codereview.chromium.org/1090113002/ No need to have a QuicPacketHeader member variable: it's not expensive to build, and building a new one each time ensures it doesn't contain unexpected values. Merge internal change: 90274866 https://codereview.chromium.org/1065543003/ Augment QUIC_VERSION_25 by removing unused error_details field from QuicRstStreamFrame The error field is populated, but error_details string is never used. Merge internal change: 90259315 https://codereview.chromium.org/1091863002/ Stop storing QuicSession's flow controller in a scoped_ptr. Every session has a flow controller nowadays. We never change or delete it, no longer needs to be in a scoped_ptr. Merge internal change: 90250975 https://codereview.chromium.org/1097603002/ Additional tests to verify that a connection is closed when a decryptable packet with damaged payload is processed. Add a debug logging message. Merge internal change: 90188127 https://codereview.chromium.org/1094743002/ Tidy up some comments in QuicConnection, and remove linebreak in method signature. https://codereview.chromium.org/1090073002/ Initialize all fields in the default QuicServerId constructor Fixed QuicServerId constructor to initialize all fields. Merge internal change: 90180296 https://codereview.chromium.org/1061783004/ Implement QUIC version 25 which supports SPDY/4 style header blocks. Merge internal change: 90161489 https://codereview.chromium.org/1094733002/ Remove DFATAL on double close of a QUIC connection, silent early return instead. No behavior change. This DFATAL is a relic from the old days when the code was much simpler and we could easily verify that CloseConnection wasn't being called from multiple places in the current stack. Multiple calls to CloseConnection are not dangerous. Quoting rch: "the code is significantly more complex now and reasoning about where we are in the call stack of other methods which might have also closed the connection seems really daunting." Merge internal change: 90156411 https://codereview.chromium.org/1096563002/ add a version() convenience method to ReliableQuicStream. Merge internal change: 89979074 https://codereview.chromium.org/1096493005/ deprecate --FLAGS_quic_small_default_packet_size Merge internal change: 89899060 https://codereview.chromium.org/1070393003/ Remove QUIC's ack train detection code because it's never used now that pacing is always enabled. Merge internal change: 89890425 https://codereview.chromium.org/1097533002/ Review URL: https://codereview.chromium.org/1091923002 Cr-Commit-Position: refs/heads/master@{#325772}
* Land Recent QUIC Changes.rtenneti2014-10-291-4/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new QUIC common cert set to reflect the new GIA cert. Also rename the existing common cert set *.inc files. Merge internal change: 78450265 https://codereview.chromium.org/683343002/ Removes QuicTcpCongestionWindow type and adds a new QuicPacketCount type. The CL also moves to using QuicPacketCount instead of QuicTcpCongestionWindow in TCP congestion control code. Using a QuicPacketCount type makes it obvious for congestion control computations that a variable of this type needs to be converted when comparing with other congestion control variables (such as |bytes_in_flight|) that are maintained as QuicByteCount. As a type, QuicTcpCongestionWindow currently doesn't seem to have any other semantic value. Merge internal change: 78399967 https://codereview.chromium.org/644853004/ Fix flaky test in QuicSessionTest. Port of https://codereview.chromium.org/669963003/ to internal source tree. Merge internal change: 78351892 This CL was already in chromium except for small comment change. https://codereview.chromium.org/684783006/ Stop sending QUIC SCUP message immediately after handshake. Merge internal change: 78296626 https://codereview.chromium.org/684983002/ Delete rolled out FLAGS_quic_store_cached_network_params_from_chlo Merge internal change: 78276864 https://codereview.chromium.org/669663004/ Modifies RTT code to use uncorrected measured rtt for min_rtt and to only correct for ack_delay when recording smoothed_rtt and when ack_delay is sane. Merge internal change: 78269418 https://codereview.chromium.org/685893002/ Flag protect enabling of QUIC's BBR congestion control algorithm. Merge internal change: 78229291 https://codereview.chromium.org/687643004/ Further simplify QUIC's UnackedPacketMap now that the interface is unified on AddSentPacket. Merge internal change: 78219252 https://codereview.chromium.org/685883004/ R=rch@chromium.org, TBR=mkosiba@chromium.org, mnaganov@chromium.org Review URL: https://codereview.chromium.org/689483002 Cr-Commit-Position: refs/heads/master@{#301825}
* Land Recent QUIC changes.rtenneti@chromium.org2013-09-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix flakiness with retransmission tracking. This happens when, due to ACKs for previous transmissions of packets, none of the unacked packets have retransmittable data any longer. The retransmission timeout fires, but no packets are transmitted. Assuming that there is still data to write, this means that the connection hangs. DOH! To fix this, after we finish retransmitting all/any packets we should write any pending data. Merge internal change: 52384228 de-lint net/quic net/tools/quic. Merge internal change: 52381288 Rename SentPacket -> OnPacketSent and AbandoningPacket -> OnPacketAbandoned in QuicCongestionManager, and friends, to be more consitent with other similar method names. Merge internal change: 52380847 Change QuicConnectionTest to fire alarms, instead of calling the methods that we expect the alarms will execute, since this is actually how the code runs in non-test mode. Merge internal change: 52379619 When a previous transmission of a packet is acked, inform the caller that the data in the new packet has been acked. Merge internal change: 52305769 Fixed minor nit while merging the following internal CL which converted uses of scoped_array<T> to scoped_ptr<T[]>. Merge internal change: 52298940 R=rch@chromium.org Review URL: https://chromiumcodereview.appspot.com/23503088 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224950 0039d316-1c4b-4281-b951-d872f2087c98
* Land Recent QUIC changes.rtenneti@chromium.org2013-07-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented RTO calculation for TCP sender. Merge internal change: 49182038 Introduce a different proof-demand type for ECDSA certs. In cl/48309237, wtc enabled ECDSA certificates for QUIC. However, Windows XP can't cope with them so we mustn't return ECDSA certs to those clients. The value of ECDSA over RSA in QUIC is much less than in TLS because the server doesn't need to sign every connection. However, they are likely to be ~192 bytes smaller, which might be useful. This change disables ECDSA certificates for the <X509> tag and introduces a new <X59E> tag by which the client can advertise that it supports ECDSA certificates. Merge internal change: 49170028 Added whitespace. Merge internal change: 49130502 QUIC: check that encryption sequence numbers always increase. Since sequence number reuse is causes the end of the world, check that it never happens. This makes me feel more warm and fuzzy. Merge internal change: 49113162 QUIC: Send larger client hellos when hoping for certificates. With cl/49050453, larger client hellos can get larger rejection messages. This change causes the client to send larger client hellos when it's likely that we'll be getting certificates. In the event that the certificates fit in the larger space, but not the smaller one, this saves a round trip. Merge internal change: 49109243 QUIC: allow larger ClientHellos to get larger certificate chains. At the moment we hope that the certificate chain compression gets the certs down to under 400 bytes and then we feel ok about sending them in a reply to an unverified source address. But since we're switching to 2K certs that's basically hopeless: the leaf certificate will have two, uncompressable blobs in it: the public key and the signature and, for 2K, they are 256 bytes each. This change allows a client to send a client hello with more padding and get a larger reply to an unverified source address. What we don't want is to become a DDoS amplifier so we make the attacker work in order to get more from us. Merge internal change: 49050453 QUIC: Update the common certificate set with GIAG2. This doesn't break the protocol, but it does mean that clients with the old certificate set won't be able to elide any certificates. But since Chrome isn't working with QUIC HTTPS yet anyway, that's not a problem. Merge internal change: 49050091 Modify QuicStreamSequencer::OnStreamFrame to not call ProcessRawData with zero length data. Fixes http://crbug.com/257041 Merge internal change: 48912969 BUG=257041 Change ReliableQuicStream::OnStreamFrame to simply delegate fin handling to the QuicStreamSequencer. Merge internal change: 48900554 Spliting QuicPacketEntropyManager into QuicReceivedEntropyManager and QuicSentEntropyManager, in preparation for a larger refactor to create a ReceivedPacketManager. Merge internal change: 48860732 Add a test to recreate the invalid ack created when an Ack is sent immediately in response to a received ack, but the incoming ack's corresponding headers, and hence packet entropy, has not been processed. Merge internal change: 48848920 Aggregate ACK and Feedback frames properly. Existing code tried to pack acks with feedback info, and regulate transmission of control packets. There was a bug where it sometimes didn't pack together an ack with a feedback frame (specifically when we were blocked from sending non-retransmittable data). There was a second bug wherein a control frame might be prematurely serialized, when it could *not* be sent immediately. Specifically when the control frame was the first frame in a packet, and non-retransmittable data could be sent, the control frame could be errantly added. We now consistently aggregate ack frames with feedback frames in a single packet whenever the coalescing won't delay the sending of the just-in-time calculated frames. We now also avoid adding a control frame into a packet unless we are sure it can be sent immediately (so that we don't block or delay future ack and feedback transmission). The CL includes updates to tests so that they fail with the old code, but pass with the new code, as well as a bunch of additions to comments. This CL is based on the Chromium CL 17341005 (which is not landing until its merge time comes around), and resolves chromium bug 256116. FIXED=9502307 Merge internal change: 48841932 BUG=256116 Add logging to the QUIC write path. merge chromium CL: 17518002 Merge internal change: 48811324 Most of the changes were already in chromium except for comment change. Fix broken test (opt mode) in cl/48802264. Merge internal change: 48806857 Demote LOG(ERROR) to DLOG(INFO) when a client sends a packet with unsupported version. This should not be considered an ERROR server-side, as a client is free to send us whatever they like. We deal with it by sending a version negotiation packet and all is well. Updated tests, and added some comments. Merge internal change: 48802264 Added time_wait_list_manager helper method to QuicDispatcher. Merge internal change: 48787571 QUIC: encode the cluster in the first four bytes of the orbit value. In order to try and measure, in Chrome, when we might have saved a round-trip with a cluster-wide strike-register we need to know when we hit another server in the same cluster. We could do that by IP address somewhat, but it's a little complex and there's the /8 vs /5 between core and .... This change causes the first four bytes of the orbit to include a hash of the cluster (or ... rack name) so that we can easily track this in Chrome. Merge internal change: 48784059 Fix a bug in ReliableQuicStream::OnDecompressorAvailable where a decompression failure would result in an infinite loop. Merge internal change: 48696905 patch from issue 20054002 Enabling ChannelId for QUIC, and passing the ChannelId header to google backends if we're using it. Not flag protected as we're not doing secure-quic in prod yet. Merge internal change: 48645878 * Removed QuicTag kQuicVersion1 * Replaced this with enum QuicVersion, which currently has QUIC_VERSION_6 and QUIC_VERSION_7 * End to end tests are run with both versions * Framer tests are run with both versions * QuicConnection now takes a QuicVersion parameter * TimeWaitListManager now stores QuicVersion in the GUID map and sets the framer version appropriately using this before sending reset Merge internal change: 48634592 R=rch@chromium.org Review URL: https://chromiumcodereview.appspot.com/20227003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213914 0039d316-1c4b-4281-b951-d872f2087c98
* Land Recent QUIC changes.rtenneti@chromium.org2013-05-301-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make the FEC group optional by adding a flag to the private headers. Merge internal change: 46979143 Merging changes from chromium CL - 15385004 Merge internal change: 46949614 Removing debug logging from RecordPacketReceived. Seems redundant to log both when we actually receive and when we record it. Merge internal change: 46934210 Logging crypto handshake as a DVLOG rather than DLOG as it hasn't recently been needed to debug test failures. Merge internal change: 46932247 Changing the quic test client to simply not return a stream if not connected. This will hopefully turn server test check-failures into server test failures. Merge internal change: 46932163 QUIC: redo server nonces. Previously, in order to cope with strike-register failures and client clock-sync issues, the server could issue a server nonce to a client. This meant that the server had to remember rejected handshakes so that the server nonce could be matched up. With this change, QUIC servers no longer need to keep track of rejected handshakes. Instead of issuing and remembering nonces, a server will now encrypt them and forget about them. When a server nonce is used to establish freshness for a connection, it will be stored in a per-GFE strike-register. (This strike-register is separate from the one used to process client nonces.) Merge internal change: 46889484 Remove FEC_ENTROPY_FLAG from private flags. Now, FEC packet's entropy flag contain the xor of entropies of the protected packets. Merge internal change: 46889094 Limit the number of times we'll fast-retransmit a given packet using taildrop. Merge internal change: 46754530 Added CommonCertSetsQUIC to anonymous namespace. QUIC: cleanups round two. * Make CommonCertSetsQUIC a Singleton to save on every Config having its own copy. * Rework server config expiry: previously it caused an error at client hello send time. Now it will cause an error at REJ processing time but, if the config expired after we cached it, we will act as if we didn't have a cached server config. * Invalidate the server config cache in the event of a client hello sending failure. This will prevent a bad server config from being cached and poisoning connection attempts for the lifetime of the cache. * Fix a bug in the test code which failed to parse hex chunks in debugging messages correctly. (Thanks to wtc for noticing.) Merge internal change: 46742937 Merging changes from chromium - CL 15074007 Merge internal change: 46710932 Fix a bug in QuicSession's header compression behavior which could lead to infinite loops. Merge internal change: 46694681 Getting 5% our CPU usage back by not calculating SentBandwidth for the tcp congestion control algorithm. Added a TODO to improve that function since it's pretty abysmal: the ToLargerUnits and Subtract overhead alone accounted for 4.5% of the cpu in initial loadtest runs. Merge internal change: 46608880 Adding support for truncated guids in QuicFramer. Merge internal change: 46575819 using our latched write_blocked status to spare us useless system calls. Merge internal change: 46573462 Fixing some crashing issues in the QUIC loadtest, where if a client ever disconnects it never recovers, either crashing trying to create a stream or crashing waiting for a response on a non-existant stream. I'm not sure if we have the same problem for the http/https simple clients but we definitely do for QUIC. Merge internal change: 46562890 Merging changes from chromium - CL 14614006 Merge internal change: 46460427 Merging cleanup changes from chromium CL - 14651009 Merge internal change: 46457093 Fixing a test framework bug for quic: we were munging headers to do https:// for insecure quic resulting in a 404 in the http-only service map. Then disalbing the test since we don't advertise secure SPDY on insecure QUIC. Merge internal change: 46408400 Move QuicConfig from ssl_global_data to quic_dispatcher.cc. Initialize using values from QuicConfigProto and use the max_time_before_crypto_handshake to set the overall connection timeout before crypto handshake finishes. Merge internal change: 46400649 QUIC: implement ChannelIDs. We'll need this for HTTPS. Merge internal change: 46396357 Deleted usage of scoped_ptr_openssl. Added TODO comments for porting ChannelIDSigner and Verifier. R=rch@chromium.org Review URL: https://chromiumcodereview.appspot.com/15937012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203220 0039d316-1c4b-4281-b951-d872f2087c98
* Land Recent QUIC changes.rtenneti@chromium.org2013-05-161-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stop versioning non crypto parameters by SCFG. This enables the server to send different values for these parameters for same SCFG. As a consequence the server sends the negotiated (authoritative) values of these parameters in SHLO. Merge internal change: 45655201 QUIC: make several magic values configurable. This is half a change. The other half needs to alter server and so I'll put it in a different CL. This makes four magic values from the server handshake into parameters of the server config. A future CL will be able to have the server set them from it's SSL config protobuf. Merge internal change: 45622443 QUIC: don't request a proof if the client doesn't have a ProofVerifier. In order to support cert-less operation, this change alters the client to not request a proof from the server if it doesn't have a ProofVerifier configured. Without a ProofVerifier, the client will simply do opportunistic encryption. Merge internal change: 45614800 * Stop processing if the current packet closed the connection. * Close the connection if invalid RST packet received (consistent with current behavior) -- UDP provides simple CRC. Merge internal change: 45612040 Don't call ConnectionClose on ConnectionCloseFrame if visitor asked to stop after processing ack frame. Merge internal change: 45606025 Don't further process revived packet if visitor refuses the packet header. Merge internal change: 45530388 Fix coding style nits. Use "*sets" instead of "set" for arguments or variables of the CommonCertSets type. Merge internal change: 45523282 Added enum for write packet error. Handling failed writes due to errors other than EAGAIN/EWOULDBLOCK I don't know if this happens for us but might as well handle it. Merge internal change: 45522400 Tear down the connection when there is a decompression error. Merge internal change: 45521857 Bugfix infinite wait Merge internal change: 45509285 Replaced number 3 with kSpdyVersion3. Will work akalin to define and use SpdyMajorVersion enum and use it everywhere. This is a partial merge of internal change: 45485205 Removing an obselete TODO Merge internal change: 45471987 Move QuicConfig out of QuicCryptoStream. The motivation behind this change is to be able to select different values for QuicConfig depending upon SNI (after we receive CHLO). Merge internal change: 45434264 Limiting the number of FEC groups to 2 Merge internal change: 45425759 Closing connection on out of bounds packet. Merge internal change: 45413532 Miscellaneous cleanup: add 'const', remove unneeded headers, and make random minor fixes. Document the CommonCertSets methods better. Merge internal change: 45380570 Move FindMutualTag from CryptoUtils to QuicUtils. We will also use this in version negotiation Merge internal change: 45337156 Replacing CHECK-fails on address migration with graceful shutdown. Added GetAddressFamily utility method. Added check for IPV4 in WritePacket method QuicSocketUtils to copy the IPV4 self_address. Merge internal change: 45306947 QUIC - Negotiate max open streams. Added QuicClientSessionPeer to access QuicConfig in QuicClientSession. Merge internal change: 45233402 Allow retransmitting packets that are retransmissions when we get trucated acks. Merge internal change: 45233252 Reduce connection timeout till crypto handshake is finished to 1min. Merge internal change: 45232483 R=rch@chromium.org Review URL: https://chromiumcodereview.appspot.com/15074007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200519 0039d316-1c4b-4281-b951-d872f2087c98
* Land Recent QUIC changesrtenneti@chromium.org2013-05-091-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QUIC: use QuicTag/QuicTagVector throughout. crypto_protocol.h has had CryptoTag and CryptoTagVector. Then quic_protocol.h got QuicVersionTag and QuicVersionTagList because it didn't want to depend on crypto_protocol.h This change uses a single QuicTag and QuicTagVector throughout the code, including the crypto code. Merge internal change: 45230337 QUIC: move random values to the beginning and the certifiate chain to the end. jar suggested that the certificate chain should have a tag that will cause it to be sorted at the end of any handshake messages because it's likely to be large and the client might be able to get everything that it needs from the small values at the beginning. Likewise he argued that tags with random values should be towards the beginning of the message because the server mightn't hold state for a rejected client hello and therefore the client may have issues reassembling the rejection message in the event that it sent two client hellos. This change tweaks the tag values to achieve that ordering. Merge internal change: 45228375 Removing obselete TODOs Merge internal change: 45219448 Use the idle connection state timeout negotiated in crypto handshake. Merge internal change: 45176251 QUIC: address wtc's followup comments on cl/44792710. This change addresses wtc's comments on cl/44792710. There should be no semantic differences. Merge internal change: 45051718 QUIC - Fixed HasRetransmittableData enum to have the correct values. Fixed comments from rch Merge internal change: 45143336 Change the QUIC version number to a new value which is amenable to frequent i ncrementing. Merge internal change: 45111687 QUIC: run clang-format over .../quic/crypto. I ran: for x in $(ls -1 *.cc *.h) ; do clang-format -i $x -style Google; echo $x; done And then used git add -p to manually review the changes. In the cases where I didn't care, I went with what the tool produced. Merge internal change: 45053104 QUIC: address wtc's followup comments on cl/44792710. This change addresses wtc's comments on cl/44792710. There should be no semantic differences. Merge internal change: 45051718 Minor cleanup of ReliableQuicStreamTest output. Also change MockConnection to create a NiceMock version of the Helper to avoid annoying GMock messages. Merge internal change: 45010564 QUIC: partly deflake EndToEndTest.LargePost Since cl/44690884, some runs of this test have timed out. Everything appears to be working ok, just not fast enough. It's possible that the additional packet `losses' caused by decryption failures when we lose the client hello are convincing the congestion control that the loss rate is very high. However, since I have a trip to NIST this week, this change removes the flake by reverting a tiny part of cl/44690884. Sadly there is another flake in the test which this CL doesn't fix. Details in the bug. Merge internal change: 45008247 Fix a bug in QUIC header compression handling where buffered headers were not handled properly. Merge internal change: 45007035 QUIC: tiny test cleanup. wtc suggested this in a post-submission comment. Merge internal change: 44898354 QUIC: add expiry to server configs and have the GFE generate random server configs. Server configs need an expiry because they are effectively certificates. This change has the GFE generate server configs with the same expiry as the primary certificate. It also switches the GFE to generating random server configs at startup. (Random in the sense of random keys and orbit values.) Originally I wanted to have the server config persist over a restart and so derived them, deterministically, from the primary, private key with a todo to diversify the orbit. However, since we don't have any shared strike registers at the moment that doesn't seem to be worth the complexity. Also, figuring out how to diversify the orbit value in a per-GFE sense is really messy (include the hostname? include the port? Which port?). So this CL goes for simple and secure. Merge internal change: 44898035 QUIC: use 24-bit lengths for public values. If ideal lattices don't work out then we may end up with Diffie-Hellman public values that are larger than 16-bits. (Hopefully not, but you never know.) Merge internal change: 44897191 QUIC: have the client echo the server's nonce. This reflects a comment from wtc previously that this would be a good idea. Merge internal change: 44896699 QUIC: steps 12 and 13, forward secure mode. Merge internal change: 44896363 Fix LOG(DFATAL) when client sends invalid stream frame with fin. Merge internal change: 44871764 R=rch@chromium.org Review URL: https://chromiumcodereview.appspot.com/14816006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199190 0039d316-1c4b-4281-b951-d872f2087c98
* Land Recent QUIC changesrtenneti@chromium.org2013-05-071-0/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement header compression/decompression in ReliableQuicStream. Merge internal change: 44867738 QUIC: deflake proof_test. The current proof_test removes a byte from the start of the signature in order to make it invalid. However, the signature is a big-endian number and, ~1% of the time, the first byte will be zero - thus removing it doesn't change the number. This change adds a non-zero byte to the start of the signature instead. Merge internal change: 44803399 Replace calls to scoped_ptr(NULL) with calls to scoped_ptr(). Merge internal change: 44799980 Add a blank line in order to get the dependencies correct for rebuild. Merge internal change: 44796024 Fix "large integer implicitly truncated to unsigned type" Merge internal change: 44793986 QUIC: compress certificates. This change causes server certificates to be compressed using three tricks: 1) The client can advertise sets of common certificates that the server can then simply reference. This change contains "common certificate set 0", which is the set of the intermediates used twice or more in the Alexa top 5000. It's temporary because it's missing GIAG2 which we'll want to include soon. 2) The client can send 64-bit, FNV-1a hashes of certificates that it already has and the server can reference them by hash. 3) Otherwise, certifciates are gzip compressed with a dictionary that includes any certificates compressed using the previous two methods and a 1500 byte lump of common substrings. (Again, taken from the Alexa top 5000) POKE=1 Merge internal change: 44792710 R=mnaganov@chromium.org, rch@chromium.org Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=198736 Review URL: https://codereview.chromium.org/14651009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198793 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 198736 "Land Recent QUIC changes"csharp@chromium.org2013-05-071-109/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Caused compile failures on the "Google Chrome ChromeOS" builder: cc1plus: warnings being treated as errors net/quic/quic_utils.cc:14:error: integer constant is too large for 'unsigned long' type net/quic/quic_utils.cc:15:error: integer constant is too large for 'unsigned long' type make: *** [out/Release/obj.target/net/net/quic/quic_utils.o] Error 1 > Land Recent QUIC changes > > Implement header compression/decompression in ReliableQuicStream. > > Merge internal change: 44867738 > > > QUIC: deflake proof_test. > > The current proof_test removes a byte from the start of the signature in order > to make it invalid. However, the signature is a big-endian number and, ~1% of > the time, the first byte will be zero - thus removing it doesn't change the > number. > > This change adds a non-zero byte to the start of the signature instead. > > Merge internal change: 44803399 > > Replace calls to scoped_ptr(NULL) with calls to scoped_ptr(). > > Merge internal change: 44799980 > > Add a blank line in order to get the dependencies correct for rebuild. > > Merge internal change: 44796024 > > Fix "large integer implicitly truncated to unsigned type" > > Merge internal change: 44793986 > > QUIC: compress certificates. > > This change causes server certificates to be compressed using three tricks: > 1) The client can advertise sets of common certificates that the server can > then simply reference. This change contains "common certificate set 0", > which is the set of the intermediates used twice or more in the Alexa top > 5000. It's temporary because it's missing GIAG2 which we'll want to > include soon. > 2) The client can send 64-bit, FNV-1a hashes of certificates that it already > has and the server can reference them by hash. > 3) Otherwise, certifciates are gzip compressed with a dictionary that > includes any certificates compressed using the previous two methods and a > 1500 byte lump of common substrings. (Again, taken from the Alexa top 5000) > > POKE=1 > > Merge internal change: 44792710 > > R=rch@chromium.org > > Review URL: https://chromiumcodereview.appspot.com/14651009 TBR=rtenneti@chromium.org Review URL: https://codereview.chromium.org/15018013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198764 0039d316-1c4b-4281-b951-d872f2087c98
* Land Recent QUIC changesrtenneti@chromium.org2013-05-071-0/+109
Implement header compression/decompression in ReliableQuicStream. Merge internal change: 44867738 QUIC: deflake proof_test. The current proof_test removes a byte from the start of the signature in order to make it invalid. However, the signature is a big-endian number and, ~1% of the time, the first byte will be zero - thus removing it doesn't change the number. This change adds a non-zero byte to the start of the signature instead. Merge internal change: 44803399 Replace calls to scoped_ptr(NULL) with calls to scoped_ptr(). Merge internal change: 44799980 Add a blank line in order to get the dependencies correct for rebuild. Merge internal change: 44796024 Fix "large integer implicitly truncated to unsigned type" Merge internal change: 44793986 QUIC: compress certificates. This change causes server certificates to be compressed using three tricks: 1) The client can advertise sets of common certificates that the server can then simply reference. This change contains "common certificate set 0", which is the set of the intermediates used twice or more in the Alexa top 5000. It's temporary because it's missing GIAG2 which we'll want to include soon. 2) The client can send 64-bit, FNV-1a hashes of certificates that it already has and the server can reference them by hash. 3) Otherwise, certifciates are gzip compressed with a dictionary that includes any certificates compressed using the previous two methods and a 1500 byte lump of common substrings. (Again, taken from the Alexa top 5000) POKE=1 Merge internal change: 44792710 R=rch@chromium.org Review URL: https://chromiumcodereview.appspot.com/14651009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198736 0039d316-1c4b-4281-b951-d872f2087c98