mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 00:55:37 +00:00
117 lines
3.8 KiB
Plaintext
117 lines
3.8 KiB
Plaintext
/* -*- Mode: C++; tab-width: 2; 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/. */
|
|
|
|
#include "nsISupports.idl"
|
|
#include "nsIStreamListener.idl"
|
|
|
|
interface nsIURI;
|
|
interface nsICacheEntry;
|
|
interface nsIPackagedAppVerifierListener;
|
|
|
|
/**
|
|
* nsIPackagedAppVerifier
|
|
*
|
|
* It inherits nsIStreamListener and all the data will be fed by
|
|
* onStartRequest/onDataAvailable/onStopRequest.
|
|
*
|
|
*/
|
|
[scriptable, uuid(37a5c208-0fce-4ad6-8431-aeb904dfe543)]
|
|
interface nsIPackagedAppVerifier : nsIStreamListener
|
|
{
|
|
// The package identifier of the signed package. For a unsigned package, this
|
|
// attribute is empty.
|
|
readonly attribute ACString packageIdentifier;
|
|
|
|
// Whether this package is signed.
|
|
readonly attribute boolean isPackageSigned;
|
|
|
|
/**
|
|
* @param aListener
|
|
* an object implementing nsIPackagedAppVerifierListener as the bridge that
|
|
* the client gets callback from the package verifier. The callback might be
|
|
* sync or async depending on the implementation.
|
|
*
|
|
* @param aPackageOrigin
|
|
* the origin of the package. It will be updated based on the package
|
|
* identifier defined in the manifest.
|
|
*
|
|
* @param aSignature
|
|
* the signature of the package we desire to verify against. See
|
|
* https://wiki.mozilla.org/User:Ptheriault/Packagedprivilegedcontent#The_Signed_Manifest
|
|
* for further information.
|
|
*
|
|
* @param aPackageCacheEntry
|
|
* the cache entry of the package itself (not the resource's cache).
|
|
* It will be used to store any necessary information like the signed
|
|
* package origin.
|
|
*
|
|
* The verifier init function.
|
|
*/
|
|
void init(in nsIPackagedAppVerifierListener aListener,
|
|
in ACString aPackageOrigin,
|
|
in ACString aSignature,
|
|
in nsICacheEntry aPackageCacheEntry);
|
|
|
|
/**
|
|
* @param aUri
|
|
* the URI of the resource.
|
|
*
|
|
* @param aCacheEntry
|
|
* the cache entry of the resource.
|
|
*
|
|
* @param aStatusCode
|
|
* the status code of the resource we just finished download.
|
|
*
|
|
* @param aIsLastPart
|
|
* whether this resource is the last one in the package.
|
|
*
|
|
* Create an object that we will pass to the verifier as a user context
|
|
* through onStartRequest. The main purpose of this function is to make
|
|
* nsIPackagedAppVerifier xpcshell-testable. See test_packaged_app_verifier.js.
|
|
*
|
|
*/
|
|
nsISupports createResourceCacheInfo(in nsIURI aUri,
|
|
in nsICacheEntry aCacheEntry,
|
|
in nsresult aStatusCode,
|
|
in boolean aIsLastPart);
|
|
};
|
|
|
|
/**
|
|
* nsIPackagedAppVerifierListener
|
|
*/
|
|
[scriptable, uuid(092eba70-4cbf-11e5-b970-0800200c9a66)]
|
|
interface nsIPackagedAppVerifierListener : nsISupports
|
|
{
|
|
/**
|
|
* @param aIsManifest
|
|
* indicate if this callback is for manifest or not. True for manifest and false
|
|
* for resource.
|
|
*
|
|
* @param aUri
|
|
* the URI of the resource that has just been verified.
|
|
*
|
|
* @param aCacheEntry
|
|
* the cache entry of the resource that has just been verified.
|
|
*
|
|
* @param aStatusCode
|
|
* the resource download status code from nsIMultipartChannel.
|
|
*
|
|
* @param aIsLastPart
|
|
* indicate if the verified resource is that last one in the package.
|
|
*
|
|
* @param aVerificationSuccess
|
|
* the verification result.
|
|
*
|
|
* Callback'ed when a manifest/resource is verified.
|
|
*/
|
|
void onVerified(in boolean aIsManifest,
|
|
in nsIURI aUri,
|
|
in nsICacheEntry aCacheEntry,
|
|
in nsresult aStatusCode,
|
|
in boolean aIsLastPart,
|
|
in boolean aVerificationSuccess);
|
|
};
|
|
|