diff options
Diffstat (limited to 'chromium/components/gcm_driver/crypto/gcm_decryption_result.h')
-rw-r--r-- | chromium/components/gcm_driver/crypto/gcm_decryption_result.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/chromium/components/gcm_driver/crypto/gcm_decryption_result.h b/chromium/components/gcm_driver/crypto/gcm_decryption_result.h new file mode 100644 index 00000000000..5f073aa9312 --- /dev/null +++ b/chromium/components/gcm_driver/crypto/gcm_decryption_result.h @@ -0,0 +1,71 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_GCM_DRIVER_CRYPTO_GCM_DECRYPTION_RESULT_H_ +#define COMPONENTS_GCM_DRIVER_CRYPTO_GCM_DECRYPTION_RESULT_H_ + +#include <string> + +namespace gcm { + +// Result of decrypting an incoming message. The values of these reasons must +// not be changed as they are being recorded using UMA. When adding a value, +// please update GCMDecryptionResult in //tools/metrics/histograms/enums.xml. +enum class GCMDecryptionResult { + // The message had not been encrypted by the sender. + UNENCRYPTED = 0, + + // The message had been encrypted by the sender, and could successfully be + // decrypted for the registration it has been received for. The encryption + // scheme used for the message was draft-ietf-webpush-encryption-03. + DECRYPTED_DRAFT_03 = 1, + + // The contents of the Encryption HTTP header could not be parsed. + INVALID_ENCRYPTION_HEADER = 2, + + // The contents of the Crypto-Key HTTP header could not be parsed. + INVALID_CRYPTO_KEY_HEADER = 3, + + // No public/private key-pair was associated with the app_id. + NO_KEYS = 4, + + // The shared secret cannot be derived from the keying material. + INVALID_SHARED_SECRET = 5, + + // The payload could not be decrypted as AES-128-GCM. + INVALID_PAYLOAD = 6, + + // Removed in favour of the more detailed reasons below (values 9-13). + // INVALID_BINARY_HEADER = 7, + + // The message had been encrypted by the sender, and could successfully be + // decrypted for the registration it has been received for. The encryption + // scheme used for the message was draft-ietf-webpush-encryption-08. + DECRYPTED_DRAFT_08 = 8, + + // The payload's length is smaller than the smallest valid message. + INVALID_BINARY_HEADER_PAYLOAD_LENGTH = 9, + + // The payload's record size is smaller than the smallest valid record + 1. + INVALID_BINARY_HEADER_RECORD_SIZE = 10, + + // The public key included in the payload does not have the length + // corresponding to an uncompressed P-256 ECDH key (65 bytes). + INVALID_BINARY_HEADER_PUBLIC_KEY_LENGTH = 11, + + // The public key included in the message does not adhere to the format of + // an uncompressed P-256 ECDH key. (I.e. it must start with 0x04.) + INVALID_BINARY_HEADER_PUBLIC_KEY_FORMAT = 12, + + // Should be one more than the otherwise highest value in this enumeration. + ENUM_SIZE = INVALID_BINARY_HEADER_PUBLIC_KEY_FORMAT + 1 +}; + +// Converts the GCMDecryptionResult value to a string that can be used to +// explain the issue on chrome://gcm-internals/. +std::string ToGCMDecryptionResultDetailsString(GCMDecryptionResult result); + +} // namespace gcm + +#endif // COMPONENTS_GCM_DRIVER_CRYPTO_GCM_DECRYPTION_RESULT_H_ |