Added archive attribute to nsICertificatePrincipal...part of fix for 37481.

This commit is contained in:
mstoltz%netscape.com 2000-05-01 23:39:51 +00:00
parent e745453c6c
commit ad755522c3
4 changed files with 45 additions and 1 deletions

View File

@ -19,9 +19,11 @@
*
* Contributor(s):
* Norris Boyd
* Mitchell Stoltz <mstoltz@netscape.com>
*/
/* Defines an interface for certificate principals. */
#include "nsIPrincipal.idl"
#include "nsIZipReader.idl"
%{C++
#define NS_CERTIFICATEPRINCIPAL_PROGID "component://netscape/certificateprincipal"
@ -33,4 +35,7 @@ interface nsICertificatePrincipal : nsISupports {
readonly attribute string certificateID;
attribute string commonName;
// The archive containing the digital signature
attribute nsIZipReader archive;
};

View File

@ -27,6 +27,7 @@
#ifndef _NS_CERTIFICATE_PRINCIPAL_H_
#define _NS_CERTIFICATE_PRINCIPAL_H_
#include "jsapi.h"
#include "nsCOMPtr.h"
#include "nsICertificatePrincipal.h"
#include "nsBasePrincipal.h"
@ -67,6 +68,7 @@ public:
protected:
char* mCertificateID;
char* mCommonName;
nsCOMPtr<nsIZipReader> mArchive;
};
#endif // _NS_CERTIFICATE_PRINCIPAL_H_

View File

@ -73,6 +73,29 @@ nsAggregatePrincipal::SetCommonName(const char* aCommonName)
return certificate->SetCommonName(aCommonName);
}
NS_IMETHODIMP
nsAggregatePrincipal::GetArchive(nsIZipReader** aArchive)
{
if (!mCertificate)
{
*aArchive = nsnull;
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsICertificatePrincipal> certificate = do_QueryInterface(mCertificate);
return certificate->GetArchive(aArchive);
}
NS_IMETHODIMP
nsAggregatePrincipal::SetArchive(nsIZipReader* aArchive)
{
if (!mCertificate)
return NS_ERROR_FAILURE;
nsCOMPtr<nsICertificatePrincipal> certificate = do_QueryInterface(mCertificate);
return certificate->SetArchive(aArchive);
}
///////////////////////////////////////////////
// Methods implementing nsICodebasePrincipal //
///////////////////////////////////////////////

View File

@ -38,7 +38,7 @@ NSBASEPRINCIPALS_RELEASE(nsCertificatePrincipal);
// Methods implementing nsICertificatePrincipal //
//////////////////////////////////////////////////
NS_IMETHODIMP
nsCertificatePrincipal::GetCertificateID(char** aCertificateID)
nsCertificatePrincipal::GetCertificateID(char** aCertificateID)
{
*aCertificateID = nsCRT::strdup(mCertificateID);
return *mCertificateID ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
@ -59,6 +59,20 @@ nsCertificatePrincipal::SetCommonName(const char* aCommonName)
return * mCommonName ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}
NS_IMETHODIMP
nsCertificatePrincipal::GetArchive(nsIZipReader** aArchive)
{
*aArchive = mArchive;
NS_IF_ADDREF(*aArchive);
return NS_OK;
}
NS_IMETHODIMP
nsCertificatePrincipal::SetArchive(nsIZipReader* aArchive)
{
mArchive = aArchive;
return NS_OK;
}
///////////////////////////////////////
// Methods implementing nsIPrincipal //