Skip to content

SDK and Supported Programming Languages

KeyNub ships as one core library with a stable C ABI, with thin bindings layered on top. That matters more than a long language list: the cryptography, the USB transport and the protocol live in one tested place, and a binding is a translation layer rather than a reimplementation. When we fix something, every language gets the fix.

The SDK is Apache-2.0 licensed and readable before you buy. You can evaluate the integration effort without talking to sales, because the protection is the ECC key inside the dongle’s secure element, not secrecy about the protocol.

Supported languages

LanguageHow it binds
Cthe core library and its header directly
C++RAII wrapper over the C ABI
C# / VB.NET / F#one .NET assembly, KeyNub.LicenseDongle
Pythonctypes binding, keynub-licdongle
JavaJNA binding
DelphiPascal unit plus the shared library
Visual Basic 6COM server — see the VB6 page
twinBASICthe same COM server, 32- or 64-bit
VBA (Excel, Access, Word)Declare PtrSafe module, or COM
MATLAB / SimulinkMEX gateway, including MATLAB Coder output
LabVIEWCall Library Function nodes
Node.js / Electron@keynub/licdongle
Go, Rust, Ruby, PHP, LuaFFI bindings shipped with the SDK
Fortran, COBOL, Zig, Julia, NimISO-binding / FFI modules shipped with the SDK

Every binding is built and tested on Windows, Linux and macOS on every change to the SDK, against an in-process software dongle that speaks the real protocol — so the test suite covers the full flow without hardware. Where an environment cannot be automated on a build server (VB6, twinBASIC, MATLAB, LabVIEW) we ship a sample and test the interface it depends on; treat the first run in those IDEs as bring-up.

Where you put the check matters more than which language you use

The most common mistake in dongle integration is asking a yes/no question:

If IsGenuine() Then
    unlockEverything()
End If

One patched jump instruction defeats that, in any language. A dongle cannot stop someone editing your binary — so do not give them a single branch to edit. Instead, make the program need something only the dongle can produce:

coefficients = dongle.AppDecrypt(blobShippedWithYourInstaller)

Now the license check is not a gate in front of the feature; it is the feature’s input. Remove the dongle and the code does not run wrong, it has nothing to run on. The SDK documents this pattern for every binding, and the MATLAB and Simulink samples demonstrate it on real plant coefficients.

What a typical integration looks like

  • Enumerate and open the dongle (no driver install — it is a HID device)
  • Verify it is genuine, against a trust root compiled into your application
  • Open an encrypted session
  • Read your license record, or decrypt data your application needs
  • Ship

Most integrations are a day’s work. If yours is not, tell us what got in the way — that is the kind of bug report we act on.

KeyNub

A project of AB-Tools GmbH.
Address: Marsstraße 78 · 80335 Munich · Germany
Phone: +49 89 38898588 · Fax: +49 89 38898589
E-mail: info@keynub.com

Managing Director: Andreas Breitschopp
Commercial register HRB 202859 · Amtsgericht München (Munich local court)
VAT ID DE268720895 · Munich tax office for corporations
Grenke Bank AG · IBAN: DE49201304000060270139 · BIC: GREBDEH1XXX

Developers · Payment Methods · Shipping · Terms & Conditions · Right of Withdrawal · Privacy Policy · Legal Notice