/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Mozilla Communicator.
 *
 * The Initial Developer of the Original Code is
 * Netscape Communications Corp..
 * Portions created by the Initial Developer are Copyright (C) 2001
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s): David Drinan <ddrinan@netscape.com>
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

#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)
%}
