Jump to content

Project Provider Framework: Difference between revisions

From LabVIEW Wiki
No edit summary
Category reorg
Line 29: Line 29:
* [http://lavag.org/topic/18545-i-have-taken-the-first-step-towards-unofficially-opening-up-the-project-provider-framework/ Forum post announcing the discovery of the algorithm]
* [http://lavag.org/topic/18545-i-have-taken-the-first-step-towards-unofficially-opening-up-the-project-provider-framework/ Forum post announcing the discovery of the algorithm]
* [http://lavag.org/index.php?app=core&module=attach&section=attach&attach_id=9546 Open-source tool to automatically sign an INI file]
* [http://lavag.org/index.php?app=core&module=attach&section=attach&attach_id=9546 Open-source tool to automatically sign an INI file]
[[Category:Frameworks]]
[[Category:IDE Add-ons]]

Revision as of 21:09, 17 June 2020

The Project Provider Framework is a semi-NI-internal API used to extend LabVIEW in various ways, mostly relating to the project interface. In order to create plugins for this framework, you need to create an INI file in (your LabVIEW installation directory)/resource/Framework/Providers/GProviders, and said INI file needs to be signed, presumably by NI or an approved developer for the framework. The method by which this signature (actually a checksum, as there is no separate private key) is calculated has been reverse-engineered, however. Until more information about this framework has been publicly documented, this page shall serve as an explanation on the signature's calculation. (See the bottom of this page for a link to a tool that automatically calculates the required signature.)

First, take the values (not the keys) in the INI file in order, and concatenate them. Only include the values for keys in this list (rule of thumb: string values, not Boolean or numeric values, and don't include the Signature key of course):

  • "InterfaceVersion"
  • "LicenseRestrictions"
  • "LicenseVersion"
  • "LicenseName"
  • "Alias"
  • "SupportedType"
  • "SupportedInterface"
  • "CreateNewWizardHost"
  • "BuildInterfaceVI"
  • "DeployInterfaceVI"
  • "SourceControlInterfaceVI"
  • "CreateNewWizardInterfaceVI"
  • "GlobalItemInterfaceVI"
  • "ProviderInterfaceVI"
  • "ItemInterfaceVI"

Do not include spaces or any other types of delimiters between values in the concatenated string. Take the MD5 hash of this string, and apply the following substitution cipher to each of the digits:

Change: 0123456789ABCDEF
    To: T3C5K7W9SBNRJLX2

Finally, for each pair of two consecutive digits, switch them. For example, CRTTR3X7 would become RCTT3R7X. You now have your signature!

See also