github.com
Open in
urlscan Pro
140.82.121.3
Public Scan
Submitted URL: http://api.stage.verify.switch.ch/
Effective URL: https://github.com/certifaction/cli
Submission Tags: discord.fish
Submission: On June 24 via api from FI — Scanned from FI
Effective URL: https://github.com/certifaction/cli
Submission Tags: discord.fish
Submission: On June 24 via api from FI — Scanned from FI
Form analysis
1 forms found in the DOMGET /certifaction/cli/search
<form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="344484247" data-scoped-search-url="/certifaction/cli/search" data-owner-scoped-search-url="/orgs/certifaction/search"
data-unscoped-search-url="/search" data-turbo="false" action="/certifaction/cli/search" accept-charset="UTF-8" method="get">
<label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
<input type="text" class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable" data-hotkey="s,/" name="q" data-test-selector="nav-search-input" placeholder="Search"
data-unscoped-placeholder="Search GitHub" data-scoped-placeholder="Search" autocapitalize="off" role="combobox" aria-haspopup="listbox" aria-expanded="false" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search"
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" spellcheck="false" autocomplete="off">
<input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="TmRKOSu+HwaBBiYped/Q0ISOlv0/adw+erQwl6hXB7rR7ApHswKhjv2/dKIWSK8WnHHLLMBNOsaqo4EAQIW1xA==">
<input type="hidden" class="js-site-search-type-field" name="type">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash">
<path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path>
<path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path>
</svg>
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
<ul class="d-none js-jump-to-suggestions-template-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
</ul>
<ul class="d-none js-jump-to-no-results-template-container">
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
<span class="color-fg-muted">No suggested jump to results</span>
</li>
</ul>
<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this organization">
In this organization
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
</ul>
</div>
</label>
</form>
Text Content
Skip to content Sign up * Product * Features * Mobile * Actions * Codespaces * Copilot * Packages * Security * Code review * Issues * Integrations * GitHub Sponsors * Customer stories * Team * Enterprise * Explore * Explore GitHub * Learn and contribute * Topics * Collections * Trending * Skills * GitHub Sponsors * Open source guides * Connect with others * The ReadME Project * Events * Community forum * GitHub Education * GitHub Stars program * Marketplace * Pricing * Plans * Compare plans * Contact Sales * Education * In this repository All GitHub ↵ Jump to ↵ * No suggested jump to results * In this repository All GitHub ↵ Jump to ↵ * In this organization All GitHub ↵ Jump to ↵ * In this repository All GitHub ↵ Jump to ↵ Sign in Sign up {{ message }} certifaction / cli Public * Notifications * Fork 2 * Star 2 Certifaction CLI utility to sign and verify document 2 stars 2 forks Star Notifications * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights CERTIFACTION/CLI This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 9 branches 23 tags Go to file Code * Clone HTTPS GitHub CLI Use Git or checkout with SVN using the web URL. Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP LAUNCHING GITHUB DESKTOP If nothing happens, download GitHub Desktop and try again. LAUNCHING GITHUB DESKTOP If nothing happens, download GitHub Desktop and try again. LAUNCHING XCODE If nothing happens, download Xcode and try again. LAUNCHING VISUAL STUDIO CODE Your codespace will open once ready. There was a problem preparing your codespace, please try again. LATEST COMMIT Nittarab Fix authentication token example (#13) … c258b4e on May 8 Fix authentication token example (#13) c258b4e GIT STATS * 16 commits FILES Permalink Failed to load latest commit information. Type Name Latest commit message Commit time assets BP-4062: Update CLI documentation (#14) 3 months ago .gitignore Initial public release (#1) 16 months ago README.md Fix authentication token example (#13) 2 months ago blockchain_certification.md BP-4062: Update CLI documentation (#14) 3 months ago View code Certifaction CLI Introduction Requirements Functionality Document signature Simple document signature Document Digital Twin Document signature request Usage options Standalone application integration Running the HTTP server on a node Authentication Proxy settings Installation Interactive CLI General usage Deleting Certifaction access to the file Usage Description Download file from digital archive Usage Description Checking the health of the API and its dependencies Usage Description Checking the API liveliness Usage Description: Get document metadata Usage Description: Prepare a document for signing Usage Description Flags Sign a document Usage Description Flags Retract a document Usage Description Flags Request a document signature Usage Description Flags Edit a document signature request Usage Description Flags List document signature requests Usage Description Cancel a document signature request Usage Description Flags Cancel a document signing process Usage Description Flags Get the authenticated user information Usage Description Check QES status Usage Description Flags Start the HTTP server Usage Description Flags HTTP Server Mode General usage Authentication TLS connection Common response code Checking the health of the API and its dependencies Usage Description Authenticated Query parameters Response Checking the API liveliness Usage Description Authenticated Query parameters Response Prepare a document for signing Usage Description Authenticated Header Query parameters Response Body Sign a document Usage Description Authenticated Header Query parameters Response Body Retract a document Usage Description Authenticated Header Query parameters Response Body Download file from digital archive Usage Description Authenticated Query parameters Response Delete Certifaction access to the file Usage Description Authenticated Body Response Request a document signature Usage Description Authenticated Header Query parameters Response Body Example Edit a document signature request Usage Description Authenticated Header Query parameters Response Body List document signature requests Usage Description Authenticated Header Response Body Cancel a document signature request Usage Description Authenticated Header Query parameters Response Body Cancel a document signing process Usage Description Authenticated Header Query parameters Response Body Get the authenticated user information Usage Description Authenticated Header Query parameters Response Body Example Explanation of essential fields: Get the API documentation [Upcoming feature] Usage Description Authenticated Query parameters Response README.MD CERTIFACTION CLI This is the Certifaction CLI repository with the documentation and the executables for different platforms. Directly jump to the Installation section to install the CLI for your platform. Please create an Issue to report any bug and propose new features. Notes: Certifaction CLI is being developed at a fast pace and this documentation will already contain upcoming features not yet available in the most recent public release. Those features will be flagged with the [Upcoming Feature] notation. * Introduction * Requirements * Functionality * Document signature * Simple Document signature * Document Digital Twin * Document signature request * Usage options * Standalone application integration * Running the HTTP server on a node * Authentication * Installation * Interactive CLI * HTTP Server Mode INTRODUCTION Certifaction is the electronic signature technology for the Internet. With our solution, we empower people and companies to sign and verify documents in total privacy at any time, at any scale. By integrating with our straightforward API and tools, any business can provide the right level of security and compliance to their processes and products. This document describes the Certifaction command line interface (CLI) , which provides a command line interface and an HTTP server that can be used by third party applications to sign and verify documents while preserving the documents’ confidentiality. REQUIREMENTS The CLI is distributed as an executable file compatible with recent Linux, Windows and macOS operating systems and can be run in a Docker container. The CLI requires access to the Certifaction API and an authentication token for most of its commands. When using the CLI as an HTTP server, the executable will listen to HTTP ports which must be accessible to client applications. FUNCTIONALITY The CLI provides three main functionalities for your documents: * Digital signatures * Certification * Verification The certification and verification functionality is detailed in the Blockchain certification page. The rest of this document will focus on the document digital signature. DOCUMENT SIGNATURE Certifaction digital signature allows client to add one or more digital signatures to PDF documents. Client can also invite other people to sign documents by providing them with secure document URLs containing a secret key. The secret key will decrypt the document before signing, ensuring that Certifaction never access the document in clear text. Certifaction document signature is based on the PAdES standard, which uses cryptography and the public PKI infrastructure to provides the highest guarantee against forgery. Certifaction uses three signature levels with increasing identity verification assurances: * Standard Electronic Signature (SES): email verification * Professional Electronic Signature (PES): identification using ID document scanning and verification * Qualified Electronic Signature (QES): Swiss and EU qualified electronic signature requirements Certifaction unique privacy-first signature ensures that document content does not leave your IT infrastructure in clear text without your consent. SIMPLE DOCUMENT SIGNATURE Here are the steps during a simple document signature: 1. The CLI Receives the PDF document to sign and process it (add security features including a unique secure URL and one or more signature pages). 2. The hash of the file is sent to Certifaction API for signature 3. Certifaction API uses one of its pluggable signature provider depending on the signature level and jurisdiction 4. Certifaction API returns the PKCS #7 CMS signature to the CLI 5. The CLI embeds the signature in the PDF document and returns to the Client Additional signatures can be appended to an already signed document sequentially. Sending a signed document to an other signer is a simple and valid option. DOCUMENT DIGITAL TWIN In addition to storing the secure URL inside the PDF as custom information. A Digital Twin QR code can be added to the document. This QR code contains the secure URL that can be used to retrieve the encrypted version of document stored in Certifaction servers. When printing the document, the visible QR code can be scanned to retrieve the last version of the document. Certifaction Digital Twin bridges the world of printed and digital documents. Here are the steps to store an encrypted version of the document and return a Digital Twin URL: 1. Before signature, a unique and secure URL created and added to the document with a QR code 2. The document is encrypted 3. The encrypted copy is stored in Certifaction Digital Archive (DA) 4. The Digital Twin URL is recorded in Certifaction document locator DOCUMENT SIGNATURE REQUEST Certifaction document signature request rely on the Certifaction Digital Archive to store end-to-end encrypted document. During a signature request, the CLI will: 1. Receive the PDF document to sign and the signer information 2. Processe the document, adding security features including the secure Digital Twin URL 3. Encrypt the document using the secret key contained in the Digital Twin URL 4. Store the document in Certifaction Digital Archive for later retrieval. 5. Return the secure URL The Digital Twin URL can be shared with the invited person. A new URL must be created for each signer. Since the URL contains a secret, access to its content must be protected as well as would be the original document. USAGE OPTIONS The Certifaction CLI can be used in two modes: * Interactive to execute commands on the shell, as part of a script or from a third party application. * Server mode that exposes HTTP endpoints. In both cases, the CLI sits between the third party application and the Certifaction API and will handle document signing, certification, verification and revocation without leaking the document content outside the controlled IT infrastructure of the client. In addition to being a useful command line utility, the CLI can be used by standalone applications to sign and certify documents with Certifaction without having to integrate and link to external libraries. An application can call the CLI to either process documents stored in a directory or using the standard input/output. The CLI can also be deployed as an HTTP server container in the client's datacenter or cloud in order to integrate existing document workflows with Certifaction without ever exposing documents to the outside world. STANDALONE APPLICATION INTEGRATION In this scenario, the standalone application will use the OS command execution available to their platform to run the Certifaction commands. The documents can either be saved and loaded on the file system, or they can be passed to the command using the standard input and output. RUNNING THE HTTP SERVER ON A NODE In this scenario, the Certifaction CLI is started in server mode, either directly in a node or VM, or inside a Docker container. The client will use HTTP to sign and verify documents with the guarantee that documents do not leave the client IT system. This is the best option for centralized document signature where documents are signed during an automated document workflow. AUTHENTICATION Document signature, revocation and getting user information require authentication. The authentication is done by passing an authentication token or an API key: * Access tokens can be issued by you or by an external OIDC provider. Either case, Certifaction will have to register the identity provider. * API keys are managed from the Certifaction web application. They can only be used for server side API integration. * For HIN Sign authentication, please follow the instructions: * German * French PROXY SETTINGS The CLI integrates with Certifaction API using HTTPS. If the deployment is behind a proxy you must configure the proxy using an environment variable. The proxy can be configured by setting the HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the lowercase versions thereof). HTTPS_PROXY takes precedence over HTTP_PROXY for https requests. The environment values may be either a complete URL or a "host[:port]", in which case the "http" scheme is assumed. The schemes "http", "https", and "socks5" are supported. An error is returned if the value is a different form. INSTALLATION The CLI is delivered as an executable compatible with most of the usual platforms and can be found in the Release section of this repository. Simply download the file for your platform and install it. Please create an Issue if you do not find an executable for your platform. INTERACTIVE CLI * General usage * Checking the health of the API and its dependencies * Checking the API liveliness * Prepare a document for signing * Sign a document * Retract a document * Request a document signature * Cancel a document signature request * Get the authenticated user information * Export data * Check QES status * Start the HTTP server GENERAL USAGE certifaction [certifaction flags] <command> [arguments] The available commands are: help getting help about a command delete-access remove Certifaction access to the file download download and decrypt document from digital archive export export data health return the health of the Certifaction API info return the metadata of provided file ping ping the Certifaction API info return the metadata of provided file prepare prepare a document for signing qes check returns whether the current user is QES enabled sign sign a document request cancel cancel a signature request request cancel-all cancel signing of the document request create request a document signature request edit edit a signature request request list list signature requests for a document user return the authenticated user information server starts the HTTP server Use certifaction help <command> for more information about a command. Here are the command global flags that can be used for every command: --env <name> Optional environment name. Defaults to prod. Will automatically setup the API URL and for a given Certifaction environment. --api <URL> Overrides the default Certifaction API URL --token <access token> The authentication token. Please ensure that you surround the token with quotes as it could contain special characters. --api-key <api key> An API key created in the account settings --verbose Increase logs verbosity. Can be repeated multiple times to increase it even more. DELETING CERTIFACTION ACCESS TO THE FILE > USAGE > > certifaction delete-access [input file | URL] > > > > > DESCRIPTION > > This makes files inaccessible for the Certifaction system for further > processing. Because of that it will no longer be possible to download files > from the collection page or request new signatures, although it will still be > possible to access them through the original signature request emails. DOWNLOAD FILE FROM DIGITAL ARCHIVE > USAGE > > certifaction download [DA URL] > > > > > DESCRIPTION > > Downloads document from the digital archive and then decrypts it. CHECKING THE HEALTH OF THE API AND ITS DEPENDENCIES > USAGE > > certifaction health > > > > > DESCRIPTION > > Returns the API and its dependencies' health. The result is formatted as a > JSON array of dependency objects. Returns an error if the API or any of its > dependencies is not healthy. CHECKING THE API LIVELINESS > USAGE > > certifaction ping > > > > > DESCRIPTION: > > Returns success if the API is responsive, returns an error if not. GET DOCUMENT METADATA > USAGE > > certifaction info [input | url] > > > > > DESCRIPTION: > > Retrieves metadata (salt, digital archive URL, hash and claim keys) stored > from the file and returns them as a JSON. PREPARE A DOCUMENT FOR SIGNING > USAGE > > certifaction prepare [prepare flags] [-o output] [input | url] > > > > > DESCRIPTION > > Prepares a document for signing. A salt and a document claim encryption key > pair is added to the document, and optionally a branded footer. If enabled, a > Digital Twin QR code with a document encryption key will be added to the > document. If the input file is already a digital original then the command > will return the input file unchanged. Currently only processes PDF files. An > error is returned if the input is not a PDF file. If the input parameter is > omitted, then the command will take its input from stdin. If the output > parameter is omitted, then the output will be returned to stdout. > > FLAGS > > --digital-twin Adds a Digital Twin footer, encrypts the document and stores it. > Uses the footer template given by the -footer parameter. > If no -footer parameter is provided, then the default footer is used. > --language Overrides the default language. Available languages are de, en, fr and it. > --scope Optional signature scope override to choose between > register, sign and certify. SIGN A DOCUMENT > USAGE > > certifaction sign [sign flags] [prepare flags] [-o output] [input | url] > > > > > DESCRIPTION > > Digitally sign the document given as input or digitally sign the document with > the hash given with the --hash flag. The document must be prepared. If the > document is not prepared then it will be prepared first before signing unless > the --no-prepare flag is used. If the --no-prepare flag is used and the > document was not prepared, then an error is returned. If the document is > prepared during signing, then the command will honor the prepare command > flags. If the input parameter and the --hash flag are omitted, then the > command will take its input from stdin. The command will output the prepared > file. If the output parameter is omitted, then the output will be returned to > stdout. > > FLAGS > > --no-prepare Do not prepare the document if it is not already > prepared and return an error instead. > --hash String, the hash of the document to sign > --legal-weight Allows to select type of the signature. Possible values are > "standard" and "QES". Defaults to "standard". > --jurisdiction Only valid with "QES" signature, currently the only supported > value is "ZertES" RETRACT A DOCUMENT > USAGE > > certifaction retract [retract flags] [input | url] > > > > > DESCRIPTION > > Digitally mark the document given as input as retracted. The document must be > already signed. If the input parameter and the --hash flag are omitted, then > the command will take its input from stdin. All signature requests for given > file will be canceled. > > FLAGS > > --hash String, the hash of the document to retract > --note Optional note to be saved together with the signature REQUEST A DOCUMENT SIGNATURE > USAGE > > certifaction request create [request flags] [input | url] > > > > > DESCRIPTION > > Create a document signature URL for the person with the given email address > and name. The signature request URL can either be sent to the user mailbox or > returned by this command. If the request URL is sent by email, then it is not > returned by the command. If the input parameter is omitted, then the command > will take its input from stdin. Returns to stdout the URL to be handed to the > signer if the URL is not sent by email otherwise return nothing. Document have > to be already registered otherwise it will return an error. > > FLAGS > > --name string Full name of the signer > --email string Email address of the signer [required] > --send-email bool When this flag is enabled the API will send a signing request to the user EDIT A DOCUMENT SIGNATURE REQUEST > USAGE > > certifaction request edit [input file | URL] [flags] > > > > > DESCRIPTION > > Allows changing the email address and/or name for a given signature request > for a given document. If the input parameter is omitted, then the command will > take its input from stdin. > > FLAGS > > --email string Current email address of the signer. [required] > --new-email string New email address of the signer. > --new-name string New name of the signer. LIST DOCUMENT SIGNATURE REQUESTS > USAGE > > certifaction request list [input file | URL] > > > > > DESCRIPTION > > Lists all sent signature requests and their status for a given document. CANCEL A DOCUMENT SIGNATURE REQUEST > USAGE > > certifaction request cancel [request cancel flags] [input | url] > > > > > DESCRIPTION > > Cancels a signature request for a given file for the user with a given e-mail > address. > > FLAGS > > --email string Email address of the signer [required] > --note string Note to be sent to the invitee explaining why the request > was cancelled CANCEL A DOCUMENT SIGNING PROCESS > USAGE > > certifaction request cancel-all [input file | URL] [flags] > > > > > DESCRIPTION > > Cancels all signature requests for a given document. If the input parameter is > omitted, then the command will take its input from stdin. > > FLAGS > > --note string Note to be sent to the invitee explaining why the request > was cancelled GET THE AUTHENTICATED USER INFORMATION > USAGE > > certifaction user [user flags] > > > > > DESCRIPTION > > Returns the user information as a JSON. Returns an error if the user is not > authenticated. CHECK QES STATUS > USAGE > > certifaction qes check [qes check flags] > > > > > DESCRIPTION > > Returns true or false depending on a user's QES status. If the user is QES > enabled, it will return exit code 0, otherwise 1. > > FLAGS > > --jurisdiction string Jurisdiction. For example: eIDAS or ZertES START THE HTTP SERVER > USAGE > > certifaction server [server flags] > > > > > DESCRIPTION > > Starts the Certifaction HTTP server. > > FLAGS > > --port number server port number HTTP SERVER MODE * General usage * Authentication * TLS connection * Common response code * Get the API documentation * Checking the health of the API and its dependencies * Response * Checking the API liveliness * Prepare a document for signing * Sign a document * Verify a document * Revoke a document * Request a document signature * Get the authenticated user information GENERAL USAGE This is the mode when the CLI is started using the certifaction server command as following: certifaction server [server flags] The CLI will start an HTTP server at the configured port and listen to the following endpoints: GET /health Returns the health of the Certifaction API GET /ping Pings the Certifaction API POST /prepare Prepares a document for signing POST /sign Signs a document POST /retract Retracts a document POST /download Downloads and decrypts a document from the digital archive POST /delete-access Removes Certifaction access to the file POST /request/create Requests a document signature POST /request/edit Edits a signature request POST /request/cancel Cancels a signature request POST /request/cancel/all Cancels signing of the document POST /request/list Lists signature requests for a document GET /user Returns the authenticated user information POST /qes/check Checks whether the current user is QES enabled GET /docs Returns the API documentation [Upcoming feature] The endpoints directly mirror the CLI commands. AUTHENTICATION When indicated, the requests must be authenticated using the Authorization header as following: Authorization: <API key> or Authorization: Bearer <3rd party Oauth token> API keys can be created in the setting section of the Certifaction web application. If the request is not authenticated a HTTP 401 Unauthorized response is returned. TLS CONNECTION The server does not terminate TLS connections. If TLS is required, a proxy must be placed before the server. COMMON RESPONSE CODE 400 Bad Request Client error 401 Unauthorized The request is not authenticated 403 Forbidden The request is authenticated but the client is not authorized 500 Internal Server Error An unexpected server error occurred 503 Service Unavailable Temporary service unavailability CHECKING THE HEALTH OF THE API AND ITS DEPENDENCIES > USAGE > > GET /health > > > > > DESCRIPTION > > Returns the health of Certifaction services dependency. > > AUTHENTICATED > > No > > QUERY PARAMETERS > > None > > > RESPONSE > > 200 OK an application/json array containing service status objects CHECKING THE API LIVELINESS > USAGE > > GET /ping > > > > > DESCRIPTION > > Returns success if the API is running. > > AUTHENTICATED > > No > > QUERY PARAMETERS > > None > > RESPONSE > > 200 OK No content PREPARE A DOCUMENT FOR SIGNING > USAGE > > POST /prepare > > > > > DESCRIPTION > > Takes the input file and prepares it for signing. A salt and a document claim > encryption key pair is added to the document, and optionally a branded footer. > If enabled, a Digital Twin QR code with a document encryption key will be > added to the document. The resulting document is called a digital original. If > the input file is already a digital original then the command will return the > input file unchanged. Currently only processes PDF files. An error is returned > if the input is not a PDF file. > > AUTHENTICATED > > Yes > > HEADER > > Accept-Language: used to select the right footer language > > > > > QUERY PARAMETERS > > digital-twin=true: activates the Digital Twin feature > scope=<string>: overrides the default user signing scope. The possible values are register, sign and certify > > > > > RESPONSE > > 200 OK the prepared application/pdf file > > > > > BODY > > An application/pdf body containing the document to prepare SIGN A DOCUMENT > USAGE > > POST /sign > > > > > DESCRIPTION > > Digitally sign the document given as input. The document must be a digital > original, i.e. it must have been prepared with the prepare command. If the > document is not a digital original, then it will be prepared first before > signing unless the no-prepare flag is used. If the no-prepare flag is used and > the document was not prepared, then an error is returned. If the document is > prepared during signing, then the command will honor the prepare query > parameters. > > AUTHENTICATED > > Yes > > HEADER > > Accept-Language: used to select the right footer language > > > > > QUERY PARAMETERS > > no-prepare=true: do not prepare the document if it is not prepared and return an error instead. > hash=<string>: the hash of the document to sign > filename=<string>: the name of the file > legal-weight=<string>: allows to select type of the signature. Posible values are "standard" and "QES". Defaults to "standard". > jurisdinction=<string>: only valid with "QES" signature, currently only supported value is "ZertES" > > In addition, the query will accept the prepare query parameters. > > > > > RESPONSE > > 200 OK the signed application/pdf file > > > > > BODY > > An application/pdf body containing the document to sign RETRACT A DOCUMENT > USAGE > > POST /retract > > > > > DESCRIPTION > > Retracts the document given as input. The document must be a digital original > document. After retraction, all signature requests are cancelled. Returns an > error if the document cannot be retracted. > > AUTHENTICATED > > Yes > > HEADER > > None > > QUERY PARAMETERS > > hash=<string>: the hash of the document to sign > filename=<string>: the name of the file > note=<string>: additional note to be stored in claim > > > > > > RESPONSE > > 200 OK the signed application/pdf file > > > > > BODY > > An application/pdf body containing the document to retract DOWNLOAD FILE FROM DIGITAL ARCHIVE > USAGE > > GET /download > > > > > DESCRIPTION > > Downloads document from the digital archive and then decrypts it. > > AUTHENTICATED > > No > > QUERY PARAMETERS > > file=: digital archive URL > > > RESPONSE > > 200 OK An application/pdf body containing the document DELETE CERTIFACTION ACCESS TO THE FILE > USAGE > > GET /delete-access > > > > > DESCRIPTION > > This makes files inaccessible for the Certifaction system for further > processing. Because of that it will no longer be possible to download files > from the collection page or request new signatures, although it will still be > possible to access them through the original signature request emails. > > AUTHENTICATED > > Yes > > BODY > > An application/pdf body containing the document for which a signature is > requested > > > RESPONSE > > 200 OK An application/pdf body containing the document REQUEST A DOCUMENT SIGNATURE > USAGE > > POST /request/create > > > > > DESCRIPTION > > Create a document signature URL for the person with the given email address > and name. The signature request URL can either be sent to the user mailbox or > returned by this command. If the request URL is sent by email, then it is not > returned by the command. If the input parameter is omitted, then the command > will take its input from stdin. Returns to stdout the URL to be handed to the > signer if the URL is not sent by email otherwise return nothing. Document have > to be already registered otherwise it will return an error. > > AUTHENTICATED > > Yes > > HEADER > > None > > QUERY PARAMETERS > > name=<string>: Full name of the signer > email=<string>: Email address of the signer > send-email=true: When this flag is enabled the API will send a signing request to the user > > > > > RESPONSE > > 200 OK an application/json containing the resulting request URL > > > > > BODY > > An application/pdf body containing the document for which a signature is > requested > > EXAMPLE > > { > "request_url":"<the URL to be handed to the signer>" > } EDIT A DOCUMENT SIGNATURE REQUEST > USAGE > > POST /request/edit > > > > > DESCRIPTION > > Allows changing the email address and/or name for a given signature request > for a given document. If the input parameter is omitted, then the command will > take its input from stdin. > > AUTHENTICATED > > Yes > > HEADER > > None > > QUERY PARAMETERS > > email=<string>: Current email address of signer. > new-name=<string>: New name of the signer. > new-emain=<string>: New email address of the signer. > > > > > RESPONSE > > 200 OK > > > > > BODY > > An application/pdf body containing the document for which a signature is > requested LIST DOCUMENT SIGNATURE REQUESTS > USAGE > > POST /request/list > > > > > DESCRIPTION > > Lists all sent signature requests and their status for a given document. > > AUTHENTICATED > > Yes > > HEADER > > None > > RESPONSE > > 200 OK A JSON object representing all signature requests for the file. > > > > > BODY > > An application/pdf body containing the document for which a signature is > requested CANCEL A DOCUMENT SIGNATURE REQUEST > USAGE > > POST /request/cancel > > > > > DESCRIPTION > > Cancels a signature request for a given document for the person with the given > email address. > > AUTHENTICATED > > Yes > > HEADER > > None > > QUERY PARAMETERS > > email=<string>: email address of signer > note=<string>: Note to be sent to the invitee explaining why the request was cancelled. > > > > > RESPONSE > > 204 No Content > > > > > BODY > > An application/pdf body containing the document for which a signature request > should be cancelled CANCEL A DOCUMENT SIGNING PROCESS > USAGE > > POST /request/cancel/all > > > > > DESCRIPTION > > Cancels all signature request for a given document. If the input parameter is > omitted, then the command will take its input from stdin. > > AUTHENTICATED > > Yes > > HEADER > > None > > QUERY PARAMETERS > > note=<string>: Note to be sent to the invitee explaining why the request was cancelled. > > > > > RESPONSE > > 204 No Content > > > > > BODY > > An application/pdf body containing the document for which a signature is > requested GET THE AUTHENTICATED USER INFORMATION > USAGE > > GET /user > > > > > DESCRIPTION > > Returns the user information as a JSON. > > AUTHENTICATED > > Yes > > HEADER > > None > > QUERY PARAMETERS > > None > > RESPONSE > > 200 OK an application/json user object > > > > > BODY > > An application/pdf body containing the document for which a signature is > requested > > EXAMPLE > > { > "id": 506, > "uuid": "GzOysSHa8EB", > "external_id": "5fe0a47220148a00686f055a", > "email": "hans.muster@certifaction.com", > "name": "Hans Muster", > "eth_address": "0x124bf6e60b4ec8dc7bc314aaca4ab09dc4da1ecd", > "quota": 2, > "subscription_type": "credits" > } > > > > EXPLANATION OF ESSENTIAL FIELDS: > > Field | Description ----- | ----------- email| Email address of the user > quota| The amount of credits the user has left to register or revoke files if > the subscription type is credits. subscription_type| The subscription type of > the user. Can be credits or flat_rate GET THE API DOCUMENTATION [UPCOMING FEATURE] > USAGE > > GET /docs > > > > > DESCRIPTION > > Returns the API documentation that was generated from a swagger file. The > source swagger file URL can be found in the page. > > AUTHENTICATED > > No > > QUERY PARAMETERS > > None > > RESPONSE > > 200 OK Returns the text/html documentation file ABOUT Certifaction CLI utility to sign and verify document RESOURCES Readme STARS 2 stars WATCHERS 10 watching FORKS 2 forks RELEASES 22 v1.3.7 Latest 11 days ago + 21 releases PACKAGES 0 No packages published CONTRIBUTORS 6 * * * * * * * © 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can’t perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.