forked from mirrors/gecko-dev
		
	 82d1bb0e94
			
		
	
	
		82d1bb0e94
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D31022 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			158 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /* 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);
 | |
| };
 |