/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

/**
 * nsICMSMessageErrors
 *  Scriptable error constants for nsICMSMessage
 */
[scriptable,uuid(f2aec680-60a0-49f0-afe5-6cf1d3f15e0d)]
interface nsICMSMessageErrors : nsISupports
{
  const long SUCCESS = 0;
  const long GENERAL_ERROR = 1;
  const long VERIFY_NOT_SIGNED = 1024;
  const long VERIFY_NO_CONTENT_INFO = 1025;
  const long VERIFY_BAD_DIGEST = 1026;
  const long VERIFY_NOCERT = 1028;
  const long VERIFY_UNTRUSTED = 1029;
  const long VERIFY_ERROR_UNVERIFIED = 1031;
  const long VERIFY_ERROR_PROCESSING = 1032;
  const long VERIFY_BAD_SIGNATURE = 1033;
  const long VERIFY_DIGEST_MISMATCH = 1034;
  const long VERIFY_UNKNOWN_ALGO = 1035;
  const long VERIFY_UNSUPPORTED_ALGO = 1036;
  const long VERIFY_MALFORMED_SIGNATURE = 1037;
  const long VERIFY_HEADER_MISMATCH = 1038;
  const long VERIFY_NOT_YET_ATTEMPTED = 1039;
  const long VERIFY_CERT_WITHOUT_ADDRESS = 1040;

  const long ENCRYPT_NO_BULK_ALG = 1056;
  const long ENCRYPT_INCOMPLETE = 1057;
};

%{ C++
/**
 * CMS specific nsresult error codes
 */

#define NS_ERROR_CMS_VERIFY_NOT_SIGNED \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_NOT_SIGNED)
#define NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_NO_CONTENT_INFO)
#define NS_ERROR_CMS_VERIFY_BAD_DIGEST \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_BAD_DIGEST)
#define NS_ERROR_CMS_VERIFY_NOCERT \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_NOCERT)
#define NS_ERROR_CMS_VERIFY_UNTRUSTED \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_UNTRUSTED)
#define NS_ERROR_CMS_VERIFY_ERROR_UNVERIFIED \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_ERROR_UNVERIFIED)
#define NS_ERROR_CMS_VERIFY_ERROR_PROCESSING \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_ERROR_PROCESSING)
#define NS_ERROR_CMS_VERIFY_BAD_SIGNATURE \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_BAD_SIGNATURE)
#define NS_ERROR_CMS_VERIFY_DIGEST_MISMATCH \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_DIGEST_MISMATCH)
#define NS_ERROR_CMS_VERIFY_UNKNOWN_ALGO \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_UNKNOWN_ALGO)
#define NS_ERROR_CMS_VERIFY_UNSUPPORTED_ALGO \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_UNSUPPORTED_ALGO)
#define NS_ERROR_CMS_VERIFY_MALFORMED_SIGNATURE \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_MALFORMED_SIGNATURE)
#define NS_ERROR_CMS_VERIFY_HEADER_MISMATCH \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_HEADER_MISMATCH)
#define NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_NOT_YET_ATTEMPTED)
#define NS_ERROR_CMS_VERIFY_CERT_WITHOUT_ADDRESS \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::VERIFY_CERT_WITHOUT_ADDRESS)
#define NS_ERROR_CMS_ENCRYPT_NO_BULK_ALG \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::ENCRYPT_NO_BULK_ALG)
#define NS_ERROR_CMS_ENCRYPT_INCOMPLETE \
  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \
                            nsICMSMessageErrors::ENCRYPT_INCOMPLETE)
%}
