Skip to main content

License & Activation

In one sentence

A license key unlocks the SDK. It is verified on the first call to Octet.start(...) and the SDK works from a local cache afterwards.

Getting a license

Free trial keys are issued via sdk.octetproof.com/signup. Paste the key into OctetConfig.licenseKey and call Octet.start(...). Nothing else is required.

The first call activates the license over the network. Subsequent launches read from a local cache. The SDK does not contact the activation backend again until the license needs to renew.

Validity

A license is active for 90 days from issuance, followed by a 15-day grace period. During the grace period, devices that already activated keep working. No new devices can activate. After the grace period the SDK refuses to start until you replace the key.

You can install on as many devices as your evaluation needs. There is no per-license device cap.

License states

Read the state at any time:

// iOS
if let status = sdk.licenseStatus {
print("state: \(status.state), days left: \(status.daysUntilHardStop ?? -1)")
}
// Android
sdk.licenseStatus?.let { status ->
println("state: ${status.state}, days left: ${status.daysUntilHardStop ?: -1}")
}

LicenseStatus.state drives in-app UI only. It never drives the cryptographic gate. Forcing state = ACTIVE in your own code accomplishes nothing.

Failure modes

Octet.start(...) throws a typed LicenseError. The complete taxonomy is in License Types. The headline cases:

  • MalformedKey. The key isn't a valid signed token. Fix: re-copy the key.
  • NoActivation. First launch, and the device is offline. Fix: retry when network returns.
  • Expired. License past the grace period. Fix: request a new key.
  • ActivationWindowClosed. A fresh device tries to activate after the 90-day window. Fix: request a new key.
  • Revoked. Admin revoke (key leaked, abuse). Fix: contact support.
  • Network(message:). Transient. Fix: retry.
  • ServerRejected(httpStatus:, reason:). Anything else from the backend. Fix: see reason.

Where to go next