Documentation · SoftActivate Licensing

Install the SDK

The SoftActivate SDK is the free client library your application embeds. One SDK covers both halves: a native C++ library and a .NET assembly usable from C# and VB.NET.

The SDK is the client for the SoftActivate Web Services (SWS) platform - that is the sws/SWS stem you will meet in the code: sws.dll (native), SWS.dll (.NET, namespace SWS.Licensing) and the sws:: C++ API. The packages themselves carry the product name: the softactivate-sdk archives and the SoftActivate.Sdk NuGet package.

Downloads and packages

All artifacts are on the SDK download page, with a published SHA256SUMS.txt. Windows binaries are Authenticode-signed.

Artifact Contents
softactivate-sdk.zip One multi-platform package: headers, prebuilt libraries and samples for every supported platform, the .NET assembly, the NuGet package
softactivate-sdk.msi / .exe The same package as a Windows installer (per-user, no elevation)
NuGet package SoftActivate.Sdk The .NET assembly on its own (.NET 8), also included in the archive

Filenames carry the release channel rather than the version (no suffix on the stable channel), so a download link never goes stale - the exact version is in the VERSION file inside every package and in the installer properties. Always use the newest build from the download page.

Where everything is

Each bin/<platform>/ folder in the package holds everything for that platform in one place - the prebuilt library, the built sample executables, and on Windows the Licensing Demo:

bin/x64-windows/   sws.dll, sws.lib, quickstart_cpp.exe,
                   licensing_demo.exe
bin/x64-linux/     libsws.so, quickstart_cpp
bin/dotnet/        SWS.dll, quickstart_csharp.exe, quickstart_vbnet.exe,
                   SoftActivate.Sdk..nupkg

One note for products that ship a native application and a .NET tool together: sws.dll and SWS.dll cannot share one folder on Windows (filenames are case-insensitive) - keep the managed part in its own subfolder.

Native C++

The SDK exposes two public headers, softactivate/sws.h for transport and errors and softactivate/sws_licensing.h for the licensing domain, through a stable C-style interface with header-only C++ wrapper classes in the sws::licensing namespace. Installed builds export a CMake package:

find_package(sws CONFIG REQUIRED)
target_link_libraries(your_app PRIVATE sws::sws)

.NET (C# / VB.NET)

Add the NuGet package - the assembly inside is SWS.dll, the namespace you import is SWS.Licensing, and both languages consume the same assembly:

dotnet add package SoftActivate.Sdk

The configuration surface

Every integration, in every language, configures four things:

Setting What it is
Service endpoint https://lm.sws.softactivate.com for the hosted service (or your Licensing Server's URL)
Vendor id your tenant's id, shown in the console under Settings
License key the customer's key, minted in the console

C++

#include "softactivate/sws_licensing.h"

// create a licensing client pointed at the activation endpoint
auto client = sws::licensing::client::create(endpointUrl);

// your tenant's licensing domain - license certificate chains are
// validated against ca.<this domain>
client->set_metadata("trusted_domain", trustedDomain);

// your vendor id and the customer's license key (both live in the console)
client->set_vendor_id(vendorId);
client->set_license_key(customerLicenseKey);

// your product's Reference Id (console -> Products) - binds licenses to
// THIS product; a key sold for a different product is refused
client->set_product_id("YOUR_PRODUCT_ID");

C#

using SWS.Licensing;

// create a licensing client pointed at the activation endpoint
var client = new LicensingClient(endpointUrl);

// your tenant's licensing domain - license certificate chains are
// validated against ca.<this domain>
client.TrustedDomain = trustedDomain;

// your vendor id and the customer's license key (both live in the console)
client.VendorId = vendorId;
client.LicenseKey = customerLicenseKey;

// your product's Reference Id (console -> Products) - binds licenses to
// THIS product; a key sold for a different product is refused
client.SetProductId("YOUR_PRODUCT_ID");

VB.NET

Imports SWS.Licensing

' create a licensing client pointed at the activation endpoint
Dim client As New LicensingClient(endpointUrl)

' your tenant's licensing domain - license certificate chains are
' validated against ca.<this domain>
client.TrustedDomain = trustedDomain

' your vendor id and the customer's license key (both live in the console)
client.VendorId = vendorId
client.LicenseKey = customerLicenseKey

' your product's Reference Id (console -> Products) - binds licenses to
' THIS product; a key sold for a different product is refused
client.SetProductId("YOUR_PRODUCT_ID")

Two optional knobs sit behind those four:

  • trusted_domain (native metadata key / TrustedDomain in .NET): the domain the SDK trusts when validating licenses; defaults to the endpoint host. For the hosted service, set it to sws.softactivate.com (the endpoint host is the lm. service subdomain).
  • Corporate TLS environments: natively, the ca_cert_file metadata key adds an extra TLS trust bundle (server verification always stays on); in .NET, pass your own HttpClient to the LicensingClient constructor instead.

Next: Quickstart: C++ or Quickstart: .NET.