telemetry.internal.backends.chrome.crx_id
index
telemetry/internal/backends/chrome/crx_id.py

Read a CRX file and write out the App ID and the Full Hash of the ID.
See: http://code.google.com/chrome/extensions/crx.html
and 'http://stackoverflow.com/questions/'
  + '1882981/google-chrome-alphanumeric-hashes-to-identify-extensions'
for docs on the format.

 
Modules
       
base64
hashlib
json
os

 
Functions
       
GetCRXAppID(filename, from_file_path=False, is_win_path=False)
GetCRXHash(filename, from_file_path=False, is_win_path=False)
GetPublicKey(filename, from_file_path, is_win_path=False)
GetPublicKeyFromPath(filepath, is_win_path=False)
GetPublicKeyPacked(f)
GetPublicKeyUnpacked(f, filepath)
HasPublicKey(filename)
HexTo256(hex_chars)
Convert bytes to pairs of hex digits. E.g.,  -> "{0x00, 0x11}"
The format is taylored for copy and paste into C code:
const uint8 sha256_hash[] = { ... };
HexToInt(hex_chars)
Convert bytes like « -> 171
HexToMPDecimal(hex_chars)
Convert bytes to an MPDecimal string. Example  -> "aa"
This gives us the AppID for a chrome extension.

 
Data
        EXPECTED_CRX_MAGIC_NUM = 'Cr24'
EXPECTED_CRX_VERSION = 2