Skip to content

ETA Signing Agent and Console

The EGKits ETA Signing Agent is a Windows app that signs ETA documents with the company's USB tax token (Egypt Trust, SafeNet, ePass2003). EGKits runs in the cloud and cannot reach a token plugged into your computer, so the agent does the signing locally and sends back only the signature. The private key stays inside the token.

The EGKits Signing Agent Console is a Windows app for checking and managing the agent: its tokens, certificates, settings, logs, and security events. Version 1.3.0 adds live views of the server's ETA configuration, certificate assignments, and the server's history of signing jobs with a next step for each one.

Download the installer from Downloads → ETA Signing Agent.

#How signing works

sequenceDiagram
  participant App as EGKits (cloud)
  participant Agent as Signing Agent (your PC)
  participant Token as USB token
  participant ETA as ETA portal
  Agent->>App: Ask for documents to sign (registered device identity)
  App-->>Agent: Canonical document
  Agent->>Token: Sign with the token's private key (PIN from the encrypted store)
  Token-->>Agent: CAdES-BES signature
  Agent->>App: Signature only
  App->>App: Verify signature, certificate, and taxpayer
  App->>ETA: Submit the signed document
  ETA-->>App: Accepted or rejected

EGKits verifies every signature itself before submission. A success reported by the agent is never treated as proof of a valid signature.

#Install

Step What to do
1 Install the token vendor's middleware so the certificate appears under Personal certificates (certmgr.msc).
2 In EGKits, open ETA → Signing devices and create a registration key for this computer.
3 Download the MSI. Choose x86 for 32-bit token middleware such as ePass2003; choose x64 or ARM64 only when the middleware ships a matching provider.
4 Run the MSI. Silent install: msiexec /i EGKits.EtaSigningAgent-1.3.0-win-x86.msi /qn /norestart. Server install: add INSTALLMODE=server.

The installer adds two Start Menu shortcuts: EGKits ETA Signing Agent (the tray agent) and EGKits Signing Agent Console.

#First run

  1. Start EGKits Signing Agent Console from the Start Menu, or double-click the agent's tray icon.
  2. Choose Restart as administrator in the console header. Viewing status works for any local user; registering, setting PINs, scanning tokens, and changing settings need an elevated console.
  3. Open Agent & Connection Settings, paste the registration key, and register the computer.
  4. Set the token PIN for each company's token. The PIN goes straight to the agent's encrypted store on this computer and the field is cleared at once.
  5. Open Dashboard and confirm the agent, server connection, token, and certificate are healthy.
  6. In EGKits, confirm the computer shows as Active with its certificates on the Signing devices page.

The tray menu keeps the quick actions: Open console, Register device…, and Set token PIN….

#Console sections

Section What it shows or does
Dashboard Agent, server, token, certificate, server verification, submission, and ETA decision, each from its own source.
Token Management Tokens with stable ids, presence, reinsertion count, alias, and a sign-and-verify test on the token.
Digital Certificates Validity, chain, revocation, issuer policy, and taxpayer id, read from public certificate data.
Agent & Connection Settings Validated settings (applied when the agent restarts), device registration, secret rotation, local removal, and token PINs.
Diagnostics & Logs Live log tail with filters, a self-test, and a diagnostic bundle that the agent redacts and the console shows in full before you save it.
Security & Audit Refused requests, malformed or oversized messages, and every admin action.
Tenant Management The tenants this computer is registered for, with the last heartbeat and any failure.
Company & Tax Registration Each ETA configuration: company, registration number (RIN, leading zeros kept), environment, e-invoice or e-receipt, document version, and whether this computer reports the taxpayer's certificate.
Branch & POS The branch and point-of-sale scope of each configuration.
Signing Assignments This computer's certificate assignments, whether each assigned certificate is present, and how EGKits treats each configuration.
Auto-Signing Rules The automatic signing, automatic submission, browser signing, and legacy agent login flags of each e-invoice configuration.
Signing Jobs The server's history of the documents this computer signed, with the next step for each one, and the agent's local activity.

The four configuration sections and the server history are read-only. They come from EGKits through the computer's device identity and carry no ETA client secret, access token, or PIN. Users with the ETA configuration permission change them in EGKits.

The console never signs and never holds a private key. Every action goes through the running agent.

#Certificate assignments

An assignment binds one certificate on one signing computer to one ETA e-invoice configuration. Once a configuration has an assignment, EGKits accepts its invoices' signatures only from assigned certificates. It also stops handing those invoices to computers without an assignment.

  1. In EGKits, open E-Invoices → ETA Signing Devices (also under system settings). You need the ETA configuration permission.
  2. Find the computer. Its reported certificates are listed under it.
  3. Choose the link icon beside a certificate, then pick the configuration it signs for. Only e-invoice configurations of the certificate's own taxpayer appear.
  4. Confirm. The assignment appears as a chip on the certificate and in the console under Signing Assignments.

To remove an assignment, close its chip and confirm. Every change is recorded and raises a security alert.

EGKits refuses an assignment when:

  • the computer is revoked or not active;
  • the computer never reported the certificate;
  • the certificate has expired;
  • the configuration is an e-receipt configuration (e-receipts use POS credentials and no certificate);
  • the certificate's taxpayer differs from the configuration's company.

A configuration without assignments works as before: any active computer holding the taxpayer's certificate may sign, and EGKits still verifies every signature.

#Signing jobs and next steps

Signing Jobs → Server history lists the signing sessions this computer held, as EGKits recorded them. The console shows the server's guidance. Each action runs on the invoice in EGKits under your invoice permissions; the agent's device identity never resubmits a document.

Next step Meaning What to do
In progress The server is still working on it. Nothing yet.
Submit signed Signed and verified, and automatic submission is off. Open the invoice in EGKits and choose Submit signed.
Submit again No signature reached ETA (signing failed or the session expired). Submit the invoice again from EGKits.
Reconcile A verified signature went to submission and ETA's answer is unconfirmed. Use Recover or Sync status on the invoice before any resubmission, so ETA never receives the document twice.

Local activity remains a record of what the agent did since it started. The server history is the record of what was signed and submitted.

#Security model

  • Private keys stay in the token. Signing runs inside the token's own cryptographic provider.
  • Secrets stay encrypted on the signing computer. Token PINs and the device secret are kept in a Windows DPAPI-protected store under %ProgramData%\EGKits\EtaSigningAgent. They never appear in appsettings.json, EGKits, logs, diagnostics, or console responses.
  • Revocable device identity. Each computer registers with its own key and can be revoked from the Signing devices page.
  • Access-controlled control channel. The console talks to the agent over the local named pipe EGKits.EtaSigningAgent.Control.v1:
    • Network callers and anonymous callers are refused.
    • Authenticated local users can read status.
    • Admin operations need an elevated administrator or LocalSystem.
    • Only a fixed list of operations is accepted, and message size and time are limited.
    • The console checks that the pipe belongs to the agent installed beside it before sending anything.
  • Audit trail. Refusals, malformed messages, and every admin action are written to security-events.log without request payloads.
  • Narrow browser bridge. The local signer bridge for client-side signing accepts only the EGKits web addresses (plus any you add with ALLOWEDORIGINS). There is no other local web endpoint.

#Configuration

Setting Where Purpose
Automatic signing / submission EGKits → ETA configuration Choose whether invoices are signed automatically and whether signed invoices are submitted automatically.
Certificate assignments EGKits → E-Invoices → ETA Signing Devices Bind certificates to e-invoice configurations; EGKits enforces them when it verifies signatures.
Server URL, poll interval, batch size, log level, certificate expiry warning, trusted issuers Console → Agent & Connection Settings Validated before saving; the agent applies them on its next start.
Pkcs11ModulePath Console settings or appsettings.json The vendor's PKCS#11 DLL (32-bit for the x86 agent).
Agent:CertificateThumbprint appsettings.json Selects the token certificate.
LocalBridgeEnabled appsettings.json Keep true for client-side signing; disable on farm hosts.
ALLOWEDORIGINS MSI property Adds your own EGKits web address to the bridge; kept on upgrade.

#Troubleshooting

Symptom Resolution
Console says it cannot reach the agent Start EGKits ETA Signing Agent from the Start Menu, or start the Windows service on servers.
An action is refused as needing administrator rights Choose Restart as administrator in the console header.
Token not listed Plug the token in, confirm the middleware sees it, then scan again from Token Management. For x86, use the 32-bit PKCS#11 DLL.
Certificate shows as expired or untrusted Check Digital Certificates for the validity dates and chain; renew the certificate with the issuer.
Device shows as Revoked Create a new registration key and register the computer again.
An invoice fails with "Signing certificate … is not assigned" The configuration has assignments and the signing certificate is not one of them. Assign it on the ETA Signing Devices page, then submit the invoice again.
Signing in the browser says the company's invoices are signed only by certificates assigned on other computers Sign on a computer that holds an assignment for that company, or assign a certificate of this computer on the ETA Signing Devices page. EGKits refuses before the token is used, so no signature is wasted.
ETA Signing Devices warns that a company cannot be signed right now Its assigned certificates are all on revoked or unregistered computers, have expired, or sit on an unplugged token. Plug the token in, assign another certificate, or remove the old assignment. Assignments are kept when a computer is revoked, so revoking one never opens signing to every computer.
Signing Assignments shows an assigned certificate as "Not found" Plug in the token that holds it, then scan again from Token Management.
A configuration section says the server does not offer this information yet The EGKits server runs an older version. The section fills in once EGKits is updated.
Support asks for logs Diagnostics & Logs → export the diagnostic bundle. Review the redacted preview, then save and send it.

Logs live under %ProgramData%\EGKits\EtaSigningAgent\logs: agent-YYYYMMDD.log for daily activity and security-events.log for console access. EGKits.EtaSigningAgent.exe --test-token (or Self-test in the console) signs a short sample text with the token, never a document, and checks the signature has the form ETA requires: SHA-256, the signing-certificate attribute, and a certificate valid today and issued for signing. The EGKits server checks every real signature again before anything reaches ETA.

#Upgrade and uninstall

  • Run the newer MSI. Windows Installer replaces the previous version in place, and operator-edited appsettings.json is kept.
  • Upgrading to 1.3.0 adds the configuration, assignment, and server history sections. Upgrading from 1.1.x also adds the console and its shortcut. Device registration, token PINs, and settings carry over unchanged.
  • Upgrading from 1.0.x: register the computer on the Signing devices page. A TokenPin left in appsettings.json moves to the encrypted store at first start; then clear it from the file.
  • Uninstall from Settings → Apps. The installer stops the agent and the console. Logs and the encrypted store remain under %ProgramData%; revoke the computer on the Signing devices page.

Reconnecting to the server…

This page stays right here while we reconnect.

Still waiting? You can reload the page.