SDK
Intégrez Keyline dans votre logiciel
Quatre SDK officiels, une même interface : activer une licence, garder la session vivante, réagir à une révocation.
JavaScript / TypeScript
Node 20+, navigateurs, Electron, Deno, Bun
- Dépendances
- aucune (fetch + WebCrypto)
- Sources
- packages/sdk-ts
Python
Python 3.9+
- Dépendances
- cryptography
- Sources
- sdks/python
C# / .NET
.NET 8+
- Dépendances
- aucune
- Sources
- sdks/csharp
C++
C++17 · Windows, Linux, macOS
- Dépendances
- Windows : aucune · ailleurs : OpenSSL 3, libcurl
- Sources
- sdks/cpp
Ce que fait chaque SDK
- Activation, validation, heartbeat, désactivation
- Signature ECDSA de chaque réponse vérifiée, nonce par requête
- HTTPS obligatoire, certificats vérifiés, redirections refusées
- Délais, nouvelles tentatives avec backoff, respect de Retry-After
- Heartbeat automatique et identifiant d’appareil haché localement
- Résultats typés : aucun refus de licence ne lève d’exception
Exemple
typescript
import { LicenseClient } from '@keyline/sdk';
import { defaultDeviceId } from '@keyline/sdk/node'; // Node / Electron
const client = new LicenseClient({
apiUrl: 'https://keyline.example.com/api/v1',
applicationId: '<application_id>',
publicKeys: { '<kid>': PUBLIC_KEY_PEM },
appVersion: '1.4.2',
});
const result = await client.activate({ licenseKey, deviceId: defaultDeviceId('mon-logiciel') });
if (result.success) {
const stop = client.startHeartbeat({ onFailure: (r) => lockPremiumFeatures(r.error.code) });
} else if (result.error.code === 'DEVICE_LIMIT_REACHED') {
// inviter l'utilisateur à libérer un appareil depuis son espace client
}Aucun secret dans votre logiciel
Un SDK n’utilise que l’identifiant public de l’application et sa clé publique de signature. Les clés API restent sur vos serveurs.
Ce qu’un SDK ne peut pas garantir
Un logiciel exécuté chez l’utilisateur peut être modifié. La vérification des signatures empêche de forger une réponse du serveur, pas de patcher le binaire : faites dépendre les fonctionnalités à forte valeur d’appels serveur.