OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/cert/ct_serialization.h" | 5 #include "net/cert/ct_serialization.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include <stdint.h> |
| 8 |
8 #include "base/logging.h" | 9 #include "base/logging.h" |
9 | 10 |
10 namespace net { | 11 namespace net { |
11 | 12 |
12 namespace ct { | 13 namespace ct { |
13 | 14 |
14 namespace { | 15 namespace { |
15 | 16 |
16 // Note: length is always specified in bytes. | 17 // Note: length is always specified in bytes. |
17 // Signed Certificate Timestamp (SCT) Version length | 18 // Signed Certificate Timestamp (SCT) Version length |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 new SignedCertificateTimestamp()); | 342 new SignedCertificateTimestamp()); |
342 unsigned version; | 343 unsigned version; |
343 if (!ReadUint(kVersionLength, input, &version)) | 344 if (!ReadUint(kVersionLength, input, &version)) |
344 return false; | 345 return false; |
345 if (version != SignedCertificateTimestamp::SCT_VERSION_1) { | 346 if (version != SignedCertificateTimestamp::SCT_VERSION_1) { |
346 DVLOG(1) << "Unsupported/invalid version " << version; | 347 DVLOG(1) << "Unsupported/invalid version " << version; |
347 return false; | 348 return false; |
348 } | 349 } |
349 | 350 |
350 result->version = SignedCertificateTimestamp::SCT_VERSION_1; | 351 result->version = SignedCertificateTimestamp::SCT_VERSION_1; |
351 uint64 timestamp; | 352 uint64_t timestamp; |
352 base::StringPiece log_id; | 353 base::StringPiece log_id; |
353 base::StringPiece extensions; | 354 base::StringPiece extensions; |
354 if (!ReadFixedBytes(kLogIdLength, input, &log_id) || | 355 if (!ReadFixedBytes(kLogIdLength, input, &log_id) || |
355 !ReadUint(kTimestampLength, input, ×tamp) || | 356 !ReadUint(kTimestampLength, input, ×tamp) || |
356 !ReadVariableBytes(kExtensionsLengthBytes, input, | 357 !ReadVariableBytes(kExtensionsLengthBytes, input, |
357 &extensions) || | 358 &extensions) || |
358 !DecodeDigitallySigned(input, &result->signature)) { | 359 !DecodeDigitallySigned(input, &result->signature)) { |
359 return false; | 360 return false; |
360 } | 361 } |
361 | 362 |
362 if (timestamp > static_cast<uint64>(kint64max)) { | 363 if (timestamp > static_cast<uint64_t>(kint64max)) { |
363 DVLOG(1) << "Timestamp value too big to cast to int64: " << timestamp; | 364 DVLOG(1) << "Timestamp value too big to cast to int64_t: " << timestamp; |
364 return false; | 365 return false; |
365 } | 366 } |
366 | 367 |
367 log_id.CopyToString(&result->log_id); | 368 log_id.CopyToString(&result->log_id); |
368 extensions.CopyToString(&result->extensions); | 369 extensions.CopyToString(&result->extensions); |
369 result->timestamp = | 370 result->timestamp = |
370 base::Time::UnixEpoch() + | 371 base::Time::UnixEpoch() + |
371 base::TimeDelta::FromMilliseconds(static_cast<int64>(timestamp)); | 372 base::TimeDelta::FromMilliseconds(static_cast<int64_t>(timestamp)); |
372 | 373 |
373 output->swap(result); | 374 output->swap(result); |
374 return true; | 375 return true; |
375 } | 376 } |
376 | 377 |
377 bool EncodeSCTListForTesting(const base::StringPiece& sct, | 378 bool EncodeSCTListForTesting(const base::StringPiece& sct, |
378 std::string* output) { | 379 std::string* output) { |
379 std::string encoded_sct; | 380 std::string encoded_sct; |
380 return WriteVariableBytes(kSerializedSCTLengthBytes, sct, &encoded_sct) && | 381 return WriteVariableBytes(kSerializedSCTLengthBytes, sct, &encoded_sct) && |
381 WriteVariableBytes(kSCTListLengthBytes, encoded_sct, output); | 382 WriteVariableBytes(kSCTListLengthBytes, encoded_sct, output); |
382 } | 383 } |
383 | 384 |
384 } // namespace ct | 385 } // namespace ct |
385 | 386 |
386 } // namespace net | 387 } // namespace net |
OLD | NEW |