/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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/. */

/* An interface for verifying signatures */

#include "nsISupports.idl"

// NB: This isn't actually a principal at all. The naming is just historical.
interface nsICertificatePrincipal;

[uuid(22870b07-b5ef-481b-9f7f-d41787d4e617)]
interface nsISignatureVerifier : nsISupports
{
   /* Sig Verification Error Codes */
  const long VERIFY_OK = 0;
  const long VERIFY_ERROR_UNKNOWN_CA  = -8172; /* -8172 is the error code returned by PSM */
  
  nsICertificatePrincipal verifySignature(in string aSignature,
                                          in unsigned long aSignatureLen,
                                          in string plaintext,
                                          in unsigned long plaintextLen,
                                          out long errorCode);
};


%{C++
#define SIGNATURE_VERIFIER_CONTRACTID "@mozilla.org/psm;1"
%}
