File: gcm_decryption_result.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (71 lines) | stat: -rw-r--r-- 2,759 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Copyright 2017 The Chromium Authors
// 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_