summaryrefslogtreecommitdiffstats
path: root/toolkit/components/url-classifier/nsIUrlClassifierUtils.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--toolkit/components/url-classifier/nsIUrlClassifierUtils.idl158
1 files changed, 158 insertions, 0 deletions
diff --git a/toolkit/components/url-classifier/nsIUrlClassifierUtils.idl b/toolkit/components/url-classifier/nsIUrlClassifierUtils.idl
new file mode 100644
index 0000000000..d98340e9a7
--- /dev/null
+++ b/toolkit/components/url-classifier/nsIUrlClassifierUtils.idl
@@ -0,0 +1,158 @@
+/* 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"
+/**
+ * Some utility methods used by the url classifier.
+ */
+
+interface nsIURI;
+interface nsIChannel;
+
+/**
+ * Interface for parseFindFullHashResponseV4 callback
+ */
+[scriptable, uuid(fbb9684a-a0aa-11e6-88b0-08606e456b8a)]
+interface nsIUrlClassifierParseFindFullHashCallback : nsISupports {
+ /**
+ * Callback when a match is found in full hash response. This callback may be
+ * called multiple times when there are more than one matches in response.
+ *
+ * @param aCompleteHash A 32-byte complete hash string.
+ * @param aTableNames The table names that this complete hash is associated with.
+ * Since the server responded with a threat type, multiple
+ * list names can be returned. The caller is reponsible
+ * for filtering out the unrequested table names.
+ * See |convertThreatTypeToListNames| for the format.
+ * @param aPerHashCacheDuration See "FindFullHashesResponse" in safebrowsing.proto.
+ *
+ */
+ void onCompleteHashFound(in ACString aCompleteHash,
+ in ACString aTableNames,
+ in unsigned long aPerHashCacheDuration);
+
+ /**
+ * Callback when full hash response is received.
+ *
+ * @param aMinWaitDuration See "FindFullHashesResponse" in safebrowsing.proto.
+ * @param aNegCacheDuration See "FindFullHashesResponse" in safebrowsing.proto.
+ *
+ */
+ void onResponseParsed(in unsigned long aMinWaitDuration,
+ in unsigned long aNegCacheDuration);
+};
+
+[scriptable, uuid(e4f0e59c-b922-48b0-a7b6-1735c1f96fed)]
+interface nsIUrlClassifierUtils : nsISupports
+{
+ /**
+ * Get the lookup string for a given URI. This normalizes the hostname,
+ * url-decodes the string, and strips off the protocol.
+ *
+ * @param uri URI to get the lookup key for.
+ *
+ * @returns String containing the canonicalized URI.
+ */
+ ACString getKeyForURI(in nsIURI uri);
+
+ /**
+ * Get the provider by table name.
+ *
+ * @param tableName The table name that we want to lookup
+ *
+ * @returns the provider name that the given table belongs.
+ */
+ ACString getProvider(in ACString tableName);
+
+ /**
+ * Get the provider used for Telemetry.
+ * Because recording Telemetry will leak user-controlled strings,
+ * only built-in providers should be recorded.
+ *
+ * @param tableName The table name that we want to lookup
+ *
+ * @returns the filtered provider for telemetry.
+ *
+ */
+ ACString getTelemetryProvider(in ACString tableName);
+
+ /**
+ * Get the protocol version for the given provider.
+ *
+ * @param provider String the provider name. e.g. "google"
+ *
+ * @returns String to indicate the protocol version. e.g. "2.2"
+ */
+ ACString getProtocolVersion(in ACString provider);
+
+ /**
+ * Convert threat type to list name.
+ *
+ * @param Integer to indicate threat type.
+ *
+ * @returns The list names separated by ','. For example,
+ * 'goog-phish-proto,test-phish-proto'.
+ */
+ ACString convertThreatTypeToListNames(in uint32_t threatType);
+
+ /**
+ * Convert list name to threat type.
+ *
+ * @param The list name.
+ *
+ * @returns The threat type in integer.
+ */
+ uint32_t convertListNameToThreatType(in ACString listName);
+
+ /**
+ * Make update request for given lists and their states.
+ *
+ * @param aListNames An array of list name represented in string.
+ * @param aState An array of states (encoded in base64 format) for each list.
+ *
+ * The two argument arrays must be the same length.
+ *
+ * @returns A base64url encoded string.
+ */
+ ACString makeUpdateRequestV4(in Array<ACString> aListNames,
+ in Array<ACString> aStatesBase64);
+
+ /**
+ * Make "find full hash" request by for the given prefixes.
+ *
+ * @param aListNames An array of list names represented in string.
+ * @param aListStatesBase64 An array of list states represented in base64.
+ * @param aPrefixes An array of prefixes for which we'd like to find full hashes..
+ *
+ * The aListNames and aListStatesBase64 arrays must be the same length.
+ *
+ * @returns A base64url encoded string.
+ */
+ ACString makeFindFullHashRequestV4(in Array<ACString> aListNames,
+ in Array<ACString> aListStatesBase64,
+ in Array<ACString> aPrefixes);
+
+ /**
+ * Make ThreatHit report request body.
+ *
+ * @param aChannel channel which encountered the threat.
+ * @param aListName listname represented in string.
+ * @param aHashBase64 hash-based hit represented in base64.
+ *
+ * @returns A base64 encoded string.
+ */
+ ACString makeThreatHitReport(in nsIChannel aChannel,
+ in ACString aListName,
+ in ACString aHashBase64);
+
+ /**
+ * Parse V4 FindFullHash response.
+ *
+ * @param aResponse Byte stream from the server.
+ * @param aCallback The callback function on each complete hash parsed.
+ * Can be called multiple times in one parsing.
+ */
+ void parseFindFullHashResponseV4(in ACString aResponse,
+ in nsIUrlClassifierParseFindFullHashCallback aCallback);
+};