Skip to main content
v3.0

API Reference

Complete developer documentation

API Sections

Authentication

Initialize Device

Connect and initialize a QuantumShield device. This must be called before any other operations.

Code Example

JavaScript
import QuantumShield from '@quantumshield/sdk';

const device = await QuantumShield.init({
  transport: 'usb',
  timeout: 5000,
  debug: false
});

console.log('Device ID:', device.id);
console.log('Firmware:', device.version);

Parameters

ParameterTypeRequiredDescription
transportstringYesConnection type: "usb", "nfc", or "bluetooth"
timeoutnumberNoConnection timeout in milliseconds (default: 5000)
debugbooleanNoEnable debug logging (default: false)

Returns

Promise<QuantumShieldDevice>

Authenticate User (FIDO2/WebAuthn)

Perform FIDO2 authentication with quantum-safe signatures.

Code Example

JavaScript
const result = await device.authenticate({
  challenge: challengeBytes,
  rpId: 'mycompany.in',
  userVerification: 'required',
  algorithm: 'ML-DSA-65'
});

console.log('Signature:', result.signature);
console.log('Public Key:', result.publicKey);
console.log('Credential ID:', result.credentialId);

Parameters

ParameterTypeRequiredDescription
challengeUint8ArrayYesRandom challenge from server (32-64 bytes)
rpIdstringYesRelying party identifier (domain)
userVerificationstringNo"required", "preferred", or "discouraged"
algorithmstringNoSignature algorithm: "ML-DSA-65" or "ML-DSA-87"

Returns

Promise<AuthenticationResult>

Register New Credential

Create a new FIDO2 credential for user registration.

Code Example

JavaScript
const credential = await device.register({
  challenge: challengeBytes,
  rpId: 'mycompany.in',
  rpName: 'My Application',
  userId: userIdBytes,
  userName: 'rahul.sharma@mycompany.in',
  userDisplayName: 'Rahul Sharma',
  requireResidentKey: false
});

console.log('Credential ID:', credential.id);
console.log('Public Key:', credential.publicKey);

Parameters

ParameterTypeRequiredDescription
challengeUint8ArrayYesRandom challenge from server
rpIdstringYesRelying party identifier
rpNamestringYesHuman-readable RP name
userIdUint8ArrayYesUnique user identifier
userNamestringYesUser account name
userDisplayNamestringYesUser display name
requireResidentKeybooleanNoStore credential on device

Returns

Promise<RegistrationResult>