Skip to content

Workaround for lack of NPAPI support in Google Chrome #102

@kylehuff

Description

@kylehuff

In order to continue to supporting Google Chrome after their discontinuation of NPAPI, WebPG will need to use "Native Messaging".

Native Messaging is a mechanism whereby request/response messsages are sent/collected using chrome.runtime.sendNativeMessage or via a native messaging port.

The underlying WebPG binary component has been designed to support Native Messaging, however, it requires that a manifest file (and registry key in Windows) be installed on the host system along with a binary. An installer will be necessary in order to accomplish this.

The contents of said file are as follows -

{
   "name": "org.webpg.nativeHost",
   "description": "WebPG Native Messaging Host",
   "path": "C:\\Users\\{USER}\\AppData\\WebPG\\webpg_message_host.exe",
   "type": "stdio",
   "allowed_origins": [
     "chrome-extension://<EXTENSION_ID>" // Production extension ID
     "chrome-extension://<EXTENSION_ID>" // Development extension ID
     "chrome-extension://<EXTENSION_ID>" // Offline extension ID
  ]
}

File Location (Proposed):

  • Linux: ~/.config/google-chrome/NativeMessagingHosts/org.webpg.nativeHost.json
  • OSX: ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/org.webpg.nativeHost.json
  • Windows: C:\Users\{USER}\AppData\WebPG\nativeHost.json

Additional install items

  • Linux: ~/bin/webpg/webpg_message_host
  • OSX: ~/bin/webpg/webpg_message_host (?? better location in OSX)
  • Windows
    • C:\Users{USER}\AppData\WebPG\webpg_message_host.exe
    • C:\Users{USER}\AppData\WebPG\libassuan-0.dll
    • C:\Users{USER}\AppData\WebPG\libgpg-error-0.dll
    • C:\Users{USER}\AppData\WebPG\libgpgme-11.dll
    • Registry key: HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\org.webpg.nativeHost
      • Value: C:\Users\{USER}\AppData\WebPG\nativeHost.json

Points of discussion -

  • File locations
  • binary naming convention
  • Should the release version be included in the path or binary naming scheme?
  • More?

Objectives -

  • Easy to install
  • Should be easy to uninstall
  • Aware of system vs. user installation
  • As least "hokey" as possible.

Ancillary items -

  • Extension needs to be modified to in order to communicate with the host (assigned: kylehuff)
  • Need to hook into installation events of extension to catch uninstall
  • PGPMime methods need to be moved from webpg-npapi to libwebpg (completed with kylehuff/libwebpg@e31f59c)
  • Others?

References -

Persons tagged in this issue -

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions