/* -*- 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 * * 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" interface nsISupportsArray; interface nsIX509Cert; %{ C++ typedef void (*NSSCMSContentCallback)(void *arg, const char *buf, unsigned long len); %} native NSSCMSContentCallback(NSSCMSContentCallback); [ptr] native UnsignedCharPtr(unsigned char); /* * nsIHash * Generic hashing interface */ [uuid(a31a3028-ae28-11d5-ba4b-00108303b117)] interface nsIHash : nsISupports { const short HASH_AlgNULL = 0; const short HASH_AlgMD2 = 1; const short HASH_AlgMD5 = 2; const short HASH_AlgSHA1 = 3; const unsigned long MD2_LEN = 16; const unsigned long MD5_LEN = 16; const unsigned long SHA1_LEN = 20; const unsigned long MAX_HASH_LEN = SHA1_LEN; unsigned long resultLen(in short aAlg); void create(in short aAlg); void begin(); void update(in UnsignedCharPtr aBuf, in unsigned long aLen); void end(in UnsignedCharPtr aHash, out unsigned long aLen, in unsigned long aMaxLen); }; /** * nsICMSMessage * Interface to a CMS Message */ [uuid(a4557478-ae16-11d5-ba4b-00108303b117)] interface nsICMSMessage : nsISupports { void contentIsSigned(out boolean aSigned); void contentIsEncrypted(out boolean aEncrypted); void getSignerCommonName(out string aName); void getSignerEmailAddress(out string aEmail); void getSignerCert(out nsIX509Cert scert); void getEncryptionCert(out nsIX509Cert ecert); void verifySignature(); void verifyDetachedSignature(in UnsignedCharPtr aDigestData, in unsigned long aDigestDataLen); void CreateEncrypted(in nsISupportsArray aRecipientCerts); void CreateSigned(in nsIX509Cert scert, in nsIX509Cert ecert, in UnsignedCharPtr aDigestData, in unsigned long aDigestDataLen); }; /** * 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 ENCRYPT_NO_BULK_ALG = 1056; }; /** * nsICMSDecoder * Interface to decode an CMS message */ [uuid(65244a06-a342-11d5-ba47-00108303b117)] interface nsICMSDecoder : nsISupports { void start(in NSSCMSContentCallback cb, in voidPtr arg); void update(in string aBuf, in long aLen); void finish(out nsICMSMessage msg); }; /** * nsICMSEncoder * Interface to Encode an CMS message */ [uuid(a15789aa-8903-462b-81e9-4aa2cff4d5cb)] interface nsICMSEncoder : nsISupports { void start(in nsICMSMessage aMsg, in NSSCMSContentCallback cb, in voidPtr arg); void update(in string aBuf, in long aLen); void finish(); void encode(in nsICMSMessage aMsg); }; /** * NS_CMSMESSAGE_CONTRACTID - contract id of a class that * implements nsICMSMessage */ %{C++ #define NS_CMSDECODER_CONTRACTID "@mozilla.org/nsCMSDecoder;1" #define NS_CMSENCODER_CONTRACTID "@mozilla.org/nsCMSEncoder;1" #define NS_CMSMESSAGE_CONTRACTID "@mozilla.org/nsCMSMessage;1" #define NS_HASH_CONTRACTID "@mozilla.org/nsHash;1" /** * 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_ENCRYPT_NO_BULK_ALG \ NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_SECURITY, \ nsICMSMessageErrors::ENCRYPT_NO_BULK_ALG) %} .