forked from mirrors/gecko-dev
		
	# ignore-this-changeset Depends on D28954 Differential Revision: https://phabricator.services.mozilla.com/D28956 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* 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/. */
 | 
						|
 | 
						|
#ifndef CacheHashUtils__h__
 | 
						|
#define CacheHashUtils__h__
 | 
						|
 | 
						|
#include "nsISupports.h"
 | 
						|
#include "mozilla/Types.h"
 | 
						|
#include "prnetdb.h"
 | 
						|
#include "nsPrintfCString.h"
 | 
						|
 | 
						|
#define LOGSHA1(x)                                         \
 | 
						|
  PR_htonl((reinterpret_cast<const uint32_t*>(x))[0]),     \
 | 
						|
      PR_htonl((reinterpret_cast<const uint32_t*>(x))[1]), \
 | 
						|
      PR_htonl((reinterpret_cast<const uint32_t*>(x))[2]), \
 | 
						|
      PR_htonl((reinterpret_cast<const uint32_t*>(x))[3]), \
 | 
						|
      PR_htonl((reinterpret_cast<const uint32_t*>(x))[4])
 | 
						|
 | 
						|
#define SHA1STRING(x) \
 | 
						|
  (nsPrintfCString("%08x%08x%08x%08x%08x", LOGSHA1(x)).get())
 | 
						|
 | 
						|
namespace mozilla {
 | 
						|
 | 
						|
class OriginAttributes;
 | 
						|
 | 
						|
namespace net {
 | 
						|
 | 
						|
class CacheHash : public nsISupports {
 | 
						|
 public:
 | 
						|
  NS_DECL_THREADSAFE_ISUPPORTS
 | 
						|
 | 
						|
  typedef uint16_t Hash16_t;
 | 
						|
  typedef uint32_t Hash32_t;
 | 
						|
 | 
						|
  static Hash32_t Hash(const char* aData, uint32_t aSize,
 | 
						|
                       uint32_t aInitval = 0);
 | 
						|
  static Hash16_t Hash16(const char* aData, uint32_t aSize,
 | 
						|
                         uint32_t aInitval = 0);
 | 
						|
 | 
						|
  explicit CacheHash(uint32_t aInitval = 0);
 | 
						|
 | 
						|
  void Update(const char* aData, uint32_t aLen);
 | 
						|
  Hash32_t GetHash();
 | 
						|
  Hash16_t GetHash16();
 | 
						|
 | 
						|
 private:
 | 
						|
  virtual ~CacheHash() = default;
 | 
						|
 | 
						|
  void Feed(uint32_t aVal, uint8_t aLen = 4);
 | 
						|
 | 
						|
  uint32_t mA, mB, mC;
 | 
						|
  uint8_t mPos;
 | 
						|
  uint32_t mBuf;
 | 
						|
  uint8_t mBufPos;
 | 
						|
  uint32_t mLength;
 | 
						|
  bool mFinalized;
 | 
						|
};
 | 
						|
 | 
						|
typedef uint64_t OriginAttrsHash;
 | 
						|
 | 
						|
OriginAttrsHash GetOriginAttrsHash(const mozilla::OriginAttributes& aOA);
 | 
						|
 | 
						|
}  // namespace net
 | 
						|
}  // namespace mozilla
 | 
						|
 | 
						|
#endif
 |