Smart Web Signer Documentation

Complete guide to integrating digital signatures in your web applications

Getting Started

Smart Web Signer enables secure digital signatures in web applications by bridging browser-based apps with local cryptographic hardware and certificates.

Prerequisites: Prerequisites. Purchase a license Prerequisites.

What You'll Need

  • Windows 10/11 (64-bit)
  • Valid digital certificate
  • Modern web browser (Chrome, Edge, Firefox)
  • Active internet connection for license check

Quick Start Guide

  1. Download and install Smart Web Signer
  2. Activate your license key
  3. Integrate with your web app using the code samples below
  4. Start signing documents and texts!

Installation

Download the Application

Download the latest version from your dashboard.

Run the Installer

# Run as Administrator (right-click → Run as administrator)smart-web-signer-setup.exe

# Follow the installation wizard# Choose installation directory (default: C:\Program Files\Smart Web Signer)# Create desktop shortcut (optional)

Step 3: Activate Your License

On first launch, you'll be prompted to enter your license key:

License Key Format: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Example: ECE3459A7FA1680BB6BFB8B26571C0E113C56E86FA2B26D1CE
Note: Online activation requires an internet connection. For offline activation, contact support.

System Requirements

Minimum Requirements

Component Requirement
Operating System Windows 10 (64-bit) or later
Processor Intel Core i3 or equivalent
RAM 4 GB minimum, 8 GB recommended
Disk Space 200 MB for application
Network Internet connection for activation

Supported Devices

  • ePass2003 eToken
  • SafeNet eToken
  • Any PKCS#11 compatible device

NodeJs API

List Available Certificates

// Get all available certificates
var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://localhost.smartwebsigner.com:2070/api/certificates',
  'headers': {
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Sign Data

// Sign text data
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://localhost.smartwebsigner.com:2070/api/sign/text',
  'headers': {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "originaltext": "Hello",
    "certificatethumbprint": "2ba3d890d918814bcf0535b2c51c74113d187fff",
    "tsaurl": "http://timestamp.comodoca.com"
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

PDF Signing Example

var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://localhost.smartwebsigner.com:2070/api/sign/pdf/file',
  'headers': {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "originalpdf": "D:\\Files\\PDF\\original.pdf",
    "outputpdf": "D:\\Files\\PDF\\signed223.pdf",
    "tsaurl": "http://timestamp.comodoca.com",
    "tsa_username": "",
    "tsa_password": "",
    "reason": "FYK",
    "certificatethumbprint": "2ba3d890d918814bcf0535b2c51c74113d187fff",
    
    "signaturepositions": [
      {
        "page": 1,
        "bottom": 360,
        "left": 325,
        "top": 410,
        "right": 545,
        "fontsize": 10
      }
    ]
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

AJAX (jQuery) API

List Available Certificates

// Get all available certificates
$.ajax({
    url: "https://localhost.smartwebsigner.com:2070/api/certificates",
    method: "GET",
    success: function(response) {
        console.log(response);
    },
    error: function(xhr, status, error) {
        console.error("Error:", error);
    }
});

Sign Data

$.ajax({
    url: "https://localhost.smartwebsigner.com:2070/api/sign/text",
    method: "POST",
    contentType: "application/json",
    data: JSON.stringify({
        originaltext: "Hello",
        certificatethumbprint: "2ba3d890d918814bcf0535b2c51c74113d187fff",
        tsaurl: "http://timestamp.comodoca.com"
    }),
    success: function(response) {
        console.log(response);
    },
    error: function(xhr, status, error) {
        console.error("Error:", error);
    }
});

PDF Signing Example

$.ajax({
    url: "https://localhost.smartwebsigner.com:2070/api/sign/pdf/file",
    method: "POST",
    contentType: "application/json",
    data: JSON.stringify({
        originalpdf: "D:\\Files\\PDF\\original.pdf",
        outputpdf: "D:\\Files\\PDF\\signed223.pdf",
        tsaurl: "http://timestamp.comodoca.com",
        tsa_username: "",
        tsa_password: "",
        reason: "FYK",
        certificatethumbprint: "2ba3d890d918814bcf0535b2c51c74113d187fff",
       
        signaturepositions: [
            {
                page: 1,
                bottom: 360,
                left: 325,
                top: 410,
                right: 545,
                fontsize: 10
            }
        ]
    }),
    success: function(response) {
        console.log(response);
    },
    error: function(xhr, status, error) {
        console.error("Error:", error);
    }
});

Important Note: AJAX cannot directly access local file paths like: D:\Files\PDF\original.pdf from the browser for security reasons. You must either Upload the PDF using input file tag, or Pass the file as Base64.

C# API

List Available Certificates

// Get all available certificates
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost.smartwebsigner.com:2070/api/certificates");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Sign Data

// Sign text data
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://localhost.smartwebsigner.com:2070/api/sign/text");
var content = new StringContent("{\r\n    \"originaltext\":\"Hello\",\r\n    \"certificatethumbprint\":\"2ba3d890d918814bcf0535b2c51c74113d187fff\",\r\n    \"tsaurl\":\"http://timestamp.comodoca.com\"\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

PDF Signing Example

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://localhost.smartwebsigner.com:2070/api/sign/pdf/file");
var content = new StringContent("{\r\n    \"originalpdf\":\"D:\\\\Files\\\\PDF\\\\original.pdf\",\r\n    \"outputpdf\":\"D:\\\\Files\\\\PDF\\\\signed223.pdf\",\r\n    \"tsaurl\":\"http://timestamp.comodoca.com\",\r\n   \"tsa_username\":\"\",\r\n \"tsa_password\":\"\",\r\n    \"reason\" : \"FYK\",\r\n    \"certificatethumbprint\":\"2ba3d890d918814bcf0535b2c51c74113d187fff\",\r\n       \"signaturepositions\":\r\n    [\r\n        {\r\n            \"page\":1,\r\n            \"bottom\":360,\r\n            \"left\":325,\r\n            \"top\":410,\r\n            \"right\":545,\r\n            \"fontsize\":10\r\n        }\r\n    ]\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Available APIs

Available endpoints


        "GET:/api/certificates",
        "GET:/api/status",
        "POST:/api/sign/pdf/base64",
        "POST:/api/sign/pdf/file",
        "POST:/api/sign/text",
        "POST:/api/verify/pdf/base64",
        "POST:/api/verify/pdf/file",
        "POST:/api/verify/text"

Troubleshooting

Common Issues

Possible Causes:

  • Smart Web Signer service is not running
  • Firewall blocking the connection
  • Incorrect port configuration

Solutions:

  1. Open Services (Win + R, type "services.msc")
  2. Find "SmartWebSigner Service" and ensure it's running
  3. Check Windows Firewall allows port 9443
  4. Verify config file has correct port setting

Solution:

  • Ensure certificate is installed in Windows Certificate Store
  • Run certmgr.msc to verify certificate location
  • Check certificate has private key attached
  • Verify certificate is not expired

Frequently Asked Questions

Can I use Smart Web Signer on Linux or Mac?

Currently, Smart Web Signer only supports Windows. Linux and Mac support is planned for future releases.

Which certificates can be used?

There's no limit. Smart Web Signer can access all certificates in your Windows Certificate Store. You can specify allowed certificate thumbprints from your dashboard.

Is my license tied to a specific machine?

No, you can install the application on any machine with the same license, but the same allowed certificates must be used.

Can I use it offline?

No, you must be connected to our servers during usage for license check.

Does it support PAdES signatures?

Yes, Smart Web Signer fully supports PAdES qualified electronic signatures when used with qualified certificates.

Changelog

Version 1.2.0 - November 2025

  • Added timestamp usage
  • Allow PDF pages selection and positioning

Version 1.1.0 - September 2025

  • Improved certificate selection UI
  • Added check status API endpoint
  • Allow multiple PDF signers

Need More Help?

Can't find what you're looking for? Our support team is here to help.