Deep Link Protocol

Complete specification for securesign:// signing handoff.

URL Scheme

Mobile browsers and desktop browsers use the same scheme. On Android/iOS it opens SecureSign Mobile App; on Windows/Linux/macOS it opens SecureSign Desktop Software.

securesign://sign

Query Parameters

ParameterRequiredDescription
requestIdYesUnique request UUID (correlate callback)
hashBase64Yes*Base64-encoded document hash
hashAlgoYesSHA256 | SHA384 | SHA512
documentTypeYeshash | pdf | xml
documentBase64For pdf/xmlBase64 document when not hash-only
callbackUrlYesURL-encoded HTTPS or app scheme return URL
apiKeyYesSecureSign API key
certSerialNoFilter certificate by serial (hex)

Success Callback

SecureSign App redirects to callbackUrl with signed payload as query param ss_result (base64 JSON) or POST body for app schemes:

https://portal.example.gov.in/sign/callback?ss_result=eyJyZXF1ZXN0SWQiOi4uLn0=
{"requestId":"a1b2","success":true,"signatureBase64":"MEUCIQD...","certificate":{"subjectCN":"Rajesh Kumar","serialNumber":"4A3B2C1D","validTo":"2027-01-01"},"signedAt":"2026-06-22T10:30:00Z"}

Error Callbacks

On failure or cancellation, success is false and error contains a code:

error codeMeaningPortal action
SS_SIGN_CANCELLEDUser cancelled signingAllow retry
SS_PIN_INVALIDWrong PINShow remaining attempts if provided
SS_PIN_BLOCKEDToken blockedDirect user to unlock token
SS_TOKEN_NOT_FOUNDNo DSC token connectedPrompt to connect token
SS_APP_NOT_INSTALLEDSecureSign App missingShow install link from Admin Console
SS_DOMAIN_NOT_ALLOWEDCallback origin not whitelistedFix domain whitelist config
{"requestId":"a1b2","success":false,"error":"SS_SIGN_CANCELLED","message":"User cancelled signing"}

Universal Links (iOS)

Production iOS integrations may use universal links instead of custom scheme:

  1. Host apple-app-site-association at https://yourdomain.com/.well-known/apple-app-site-association
  2. Register domain in Admin Console → Domain Whitelist
  3. Use https://sign.securesign.toolsbots.com/open?... with same query parameters as securesign://sign
{
  "applinks": {
    "apps": [],
    "details": [{ "appID": "TEAMID.com.toolsbots.securesign", "paths": ["/open", "/open/*"] }]
  }
}