| // 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. |
| |
| #include "components/gcm_driver/crypto/gcm_decryption_result.h" |
| |
| #include "base/logging.h" |
| |
| namespace gcm { |
| |
| std::string ToGCMDecryptionResultDetailsString(GCMDecryptionResult result) { |
| switch (result) { |
| case GCMDecryptionResult::UNENCRYPTED: |
| return "Message was not encrypted"; |
| case GCMDecryptionResult::DECRYPTED_DRAFT_03: |
| return "Message decrypted (draft 03)"; |
| case GCMDecryptionResult::DECRYPTED_DRAFT_08: |
| return "Message decrypted (draft 08)"; |
| case GCMDecryptionResult::INVALID_ENCRYPTION_HEADER: |
| return "Invalid format for the Encryption header"; |
| case GCMDecryptionResult::INVALID_CRYPTO_KEY_HEADER: |
| return "Invalid format for the Crypto-Key header"; |
| case GCMDecryptionResult::NO_KEYS: |
| return "There are no associated keys with the subscription"; |
| case GCMDecryptionResult::INVALID_SHARED_SECRET: |
| return "The shared secret cannot be derived from the keying material"; |
| case GCMDecryptionResult::INVALID_PAYLOAD: |
| return "AES-GCM decryption failed"; |
| case GCMDecryptionResult::INVALID_BINARY_HEADER_PAYLOAD_LENGTH: |
| return "The message payload is smaller than the smallest valid message " |
| "(104 bytes)"; |
| case GCMDecryptionResult::INVALID_BINARY_HEADER_RECORD_SIZE: |
| return "The record size indicated in the binary message header is " |
| "smaller than the smallest valid record size (18 bytes)"; |
| case GCMDecryptionResult::INVALID_BINARY_HEADER_PUBLIC_KEY_LENGTH: |
| return "The public key included in the binary message header must be a " |
| "valid P-256 ECDH uncompressed point that is 65 bytes in length."; |
| case GCMDecryptionResult::INVALID_BINARY_HEADER_PUBLIC_KEY_FORMAT: |
| return "The public key included in the binary message header must be a " |
| "valid P-256 ECDH uncompressed poin that starts with an 0x04 " |
| "byte."; |
| case GCMDecryptionResult::ENUM_SIZE: |
| break; // deliberate fall-through |
| } |
| |
| NOTREACHED(); |
| return "(invalid result)"; |
| } |
| |
| } // namespace gcm |