// Copyright 2019 The Chromium OS 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 "kerberos/error_strings.h"

namespace kerberos {

#define HANDLE_ERROR(error) \
  case error:               \
    return #error

const char* GetErrorString(ErrorType error) {
  switch (error) {
    HANDLE_ERROR(ERROR_NONE);
    HANDLE_ERROR(ERROR_UNKNOWN);
    HANDLE_ERROR(ERROR_DBUS_FAILURE);
    HANDLE_ERROR(ERROR_NETWORK_PROBLEM);
    HANDLE_ERROR(ERROR_UNKNOWN_KRB5_ERROR);
    HANDLE_ERROR(ERROR_BAD_PRINCIPAL);
    HANDLE_ERROR(ERROR_BAD_PASSWORD);
    HANDLE_ERROR(ERROR_PASSWORD_EXPIRED);
    HANDLE_ERROR(ERROR_PASSWORD_REJECTED);
    HANDLE_ERROR(ERROR_NO_CREDENTIALS_CACHE_FOUND);
    HANDLE_ERROR(ERROR_KERBEROS_TICKET_EXPIRED);
    HANDLE_ERROR(ERROR_KDC_DOES_NOT_SUPPORT_ENCRYPTION_TYPE);
    HANDLE_ERROR(ERROR_CONTACTING_KDC_FAILED);
    HANDLE_ERROR(ERROR_PARSE_REQUEST_FAILED);
    HANDLE_ERROR(ERROR_LOCAL_IO);
    HANDLE_ERROR(ERROR_UNKNOWN_PRINCIPAL_NAME);
    HANDLE_ERROR(ERROR_DUPLICATE_PRINCIPAL_NAME);
    HANDLE_ERROR(ERROR_IN_PROGRESS);
    HANDLE_ERROR(ERROR_PARSE_PRINCIPAL_FAILED);
    HANDLE_ERROR(ERROR_BAD_CONFIG);
    HANDLE_ERROR(ERROR_JAIL_FAILURE);
    HANDLE_ERROR(ERROR_KERBEROS_DISABLED);
    HANDLE_ERROR(ERROR_COUNT);
  }
}

}  // namespace kerberos
