PageSourceSearch

https://eideasy-docs.netlify.app/assets/cloud-based-eseal.html-1075fad5.js

js eideasy-docs.netlify.app collected 2026-10-03 10:43:00 UTC 24,277 bytes, 62 lines download raw bytes

1import{_ as c,r as p,o as u,c as r,e,b as s,d as a,a as t,w as i}from"./app-4488e322.js";const d={},k={href:"https://documenter.getpostman.com/view/3869493/Szf6WoG1#b6fac30b-412b-459f-973e-b9360326be74",target:"_blank",rel:"noopener noreferrer"};function g(m,n){const o=p("RouterLink"),l=p("ExternalLinkIcon");return u(),r("div",null,[n[17]||(n[17]=e('<h1 id="cloud-based-e-seal" tabindex="-1"><a class="header-anchor" href="#cloud-based-e-seal" aria-hidden="true">#</a> Cloud based e-seal</h1><h2 id="_1-configuration" tabindex="-1"><a class="header-anchor" href="#_1-configuration" aria-hidden="true">#</a> 1. Configuration</h2><h3 id="test-environment" tabindex="-1"><a class="header-anchor" href="#test-environment" aria-hidden="true">#</a> Test environment</h3>',3)),s("ol",null,[s("li",null,[n[1]||(n[1]=a("Follow the ",-1)),t(o,{to:"/guide/test-environment.html"},{default:i(()=>[...n[0]||(n[0]=[a("Test environment API credentials guide",-1)])]),_:1}),n[2]||(n[2]=a(" to obtain the test API credentials.",-1))]),n[3]||(n[3]=s("li",null,"Contact [email protected] to enable the e-seal service for your account.",-1)),n[4]||(n[4]=s("li",null,[a("Use "),s("code",null,"https://test.eideasy.com"),a(" as the "),s("code",null,"base_url"),a(" in the API calls.")],-1)),n[5]||(n[5]=s("li",null,"Note that in test environment the e-seal will be created with an eID Easy test certificate and will not be legally binding.",-1))]),n[18]||(n[18]=s("h3",{id:"production-environment",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#production-environment","aria-hidden":"true"},"#"),a(" Production environment")],-1)),s("ol",null,[s("li",null,[n[7]||(n[7]=a("Follow the ",-1)),t(o,{to:"/guide/api-credentials.html"},{default:i(()=>[...n[6]||(n[6]=[a("API credentials guide",-1)])]),_:1}),n[8]||(n[8]=a(" to obtain the production API credentials.",-1))]),n[9]||(n[9]=s("li",null,"Contact [email protected] to enable the e-seal service for your account.",-1)),n[10]||(n[10]=s("li",null,[a("Use "),s("code",null,"https://id.eideasy.com"),a(" as the "),s("code",null,"base_url"),a(" in the API calls.")],-1))]),n[19]||(n[19]=e(`<h2 id="_2-usage" tabindex="-1"><a class="header-anchor" href="#_2-usage" aria-hidden="true">#</a> 2. Usage</h2><h3 id="_2-1-prepare-the-file-for-signing" tabindex="-1"><a class="header-anchor" href="#_2-1-prepare-the-file-for-signing" aria-hidden="true">#</a> 2.1 Prepare the file for signing</h3><p>Send a server-side <strong>POST</strong> request to <code>{{base_url}}/api/signatures/prepare-files-for-signing</code></p><p>The request body might look something like this:</p><div class="language-json line-numbers-mode" data-ext="json"><pre class="language-json"><code><span class="token punctuation">{</span>
2  <span class="token property">&quot;files&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
3    <span class="token punctuation">{</span>
4      <span class="token property">&quot;fileContent&quot;</span><span class="token operator">:</span> <span class="token string">&quot;JVBERi0xLjMNCiXi48/TDQoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL091dGxpbmVzIDIgMCBSDQovUGFnZXMgMyAwIFINCj4+DQplbmRvYmoNCg0KMiAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KL0NvdW50IDANCj4+DQplbmRvYmoNCg0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0NvdW50IDINCi9LaWRzIFsgNCAwIFIgNiAwIFIgXSANCj4+DQplbmRvYmoNCg0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDMgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YxIDkgMCBSIA0KPj4NCi9Qcm9jU2V0IDggMCBSDQo+Pg0KL01lZGlhQm94IFswIDAgNjEyLjAwMDAgNzkyLjAwMDBdDQovQ29udGVudHMgNSAwIFINCj4+DQplbmRvYmoNCg0KNSAwIG9iag0KPDwgL0xlbmd0aCAxMDc0ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBBIFNpbXBsZSBQREYgRmlsZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIFRoaXMgaXMgYSBzbWFsbCBkZW1vbnN0cmF0aW9uIC5wZGYgZmlsZSAtICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjY0LjcwNDAgVGQNCigganVzdCBmb3IgdXNlIGluIHRoZSBWaXJ0dWFsIE1lY2hhbmljcyB0dXRvcmlhbHMuIE1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NTIuNzUyMCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDYyOC44NDgwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjE2Ljg5NjAgVGQNCiggdGV4dC4gQW5kIG1vcmUgdGV4dC4gQm9yaW5nLCB6enp6ei4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjA0Ljk0NDAgVGQNCiggbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDU5Mi45OTIwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNTY5LjA4ODAgVGQNCiggQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA1NTcuMTM2MCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBFdmVuIG1vcmUuIENvbnRpbnVlZCBvbiBwYWdlIDIgLi4uKSBUag0KRVQNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA8PA0KL0ZvbnQgPDwNCi9GMSA5IDAgUiANCj4+DQovUHJvY1NldCA4IDAgUg0KPj4NCi9NZWRpYUJveCBbMCAwIDYxMi4wMDAwIDc5Mi4wMDAwXQ0KL0NvbnRlbnRzIDcgMCBSDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8IC9MZW5ndGggNjc2ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBTaW1wbGUgUERGIEZpbGUgMiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIC4uLmNvbn
4RpbnVlZCBmcm9tIHBhZ2UgMS4gWWV0IG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NzYuNjU2MCBUZA0KKCBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY2NC43MDQwIFRkDQooIHRleHQuIE9oLCBob3cgYm9yaW5nIHR5cGluZyB0aGlzIHN0dWZmLiBCdXQgbm90IGFzIGJvcmluZyBhcyB3YXRjaGluZyApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY1Mi43NTIwIFRkDQooIHBhaW50IGRyeS4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NDAuODAwMCBUZA0KKCBCb3JpbmcuICBNb3JlLCBhIGxpdHRsZSBtb3JlIHRleHQuIFRoZSBlbmQsIGFuZCBqdXN0IGFzIHdlbGwuICkgVGoNCkVUDQplbmRzdHJlYW0NCmVuZG9iag0KDQo4IDAgb2JqDQpbL1BERiAvVGV4dF0NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UeXBlMQ0KL05hbWUgL0YxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCg0KMTAgMCBvYmoNCjw8DQovQ3JlYXRvciAoUmF2ZSBcKGh0dHA6Ly93d3cubmV2cm9uYS5jb20vcmF2ZVwpKQ0KL1Byb2R1Y2VyIChOZXZyb25hIERlc2lnbnMpDQovQ3JlYXRpb25EYXRlIChEOjIwMDYwMzAxMDcyODI2KQ0KPj4NCmVuZG9iag0KDQp4cmVmDQowIDExDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTkgMDAwMDAgbg0KMDAwMDAwMDA5MyAwMDAwMCBuDQowMDAwMDAwMTQ3IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAwMDM5MCAwMDAwMCBuDQowMDAwMDAxNTIyIDAwMDAwIG4NCjAwMDAwMDE2OTAgMDAwMDAgbg0KMDAwMDAwMjQyMyAwMDAwMCBuDQowMDAwMDAyNDU2IDAwMDAwIG4NCjAwMDAwMDI1NzQgMDAwMDAgbg0KDQp0cmFpbGVyDQo8PA0KL1NpemUgMTENCi9Sb290IDEgMCBSDQovSW5mbyAxMCAwIFINCj4+DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg==&quot;</span><span class="token punctuation">,</span>
5      <span class="token property">&quot;fileName&quot;</span><span class="token operator">:</span> <span class="token string">&quot;somefiletest.pdf&quot;</span><span class="token punctuation">,</span>
6      <span class="token property">&quot;mimeType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;application/pdf&quot;</span>
7    <span class="token punctuation">}</span>
8  <span class="token punctuation">]</span><span class="token punctuation">,</span>
9  <span class="token property">&quot;client_id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;{{client_id}}&quot;</span><span class="token punctuation">,</span>
10  <span class="token property">&quot;secret&quot;</span><span class="token operator">:</span> <span class="token string">&quot;{{secret}}&quot;</span><span class="token punctuation">,</span>
11  <span class="token property">&quot;container_type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;pdf&quot;</span><span class="token punctuation">,</span>
12  <span class="token property">&quot;show_visual&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
13  <span class="token property">&quot;noemails&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span>
14<span class="token punctuation">}</span>
15</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>fileContent</code> - a base64 encoded PDF document.</p><p><code>noemails</code> - Determines whether email notifications will be sent. Default value is <code>true</code>. For API clients created before 2024-08-28, the default value is <code>false</code>.</p><p><strong>Note:</strong> Staging environment does not send out real emails.</p><p><strong>Note:</strong> Don’t forget to set header <code>Content-Type: application/json</code></p><p>If everything goes well the API responds with a <code>doc_id</code> like this:</p><div class="language-json line-numbers-mode" data-ext="json"><pre class="language-json"><code><span class="token punctuation">{</span>
16  <span class="token property">&quot;status&quot;</span><span class="token operator">:</span> <span class="token string">&quot;OK&quot;</span><span class="token punctuation">,</span>
17  <span class="token property">&quot;doc_id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;QLcJD03LUP0S7DUeTGNobQdsiJGfzqRnULrGE0iV&quot;</span><span class="token punctuation">,</span>
18  <span class="token property">&quot;expires_at&quot;</span><span class="token operator">:</span> <span class="token string">&quot;2025-05-17T05:06:00Z&quot;</span>
19<span class="token punctuation">}</span>
20</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Make a note of the <code>doc_id</code> value you receive (do not use the one in this example, it is expired) as you&#39;ll need it in the next steps.</p><div class="custom-container warning"><p class="custom-container-title">NOTE expires_at in the response</p><p>Be aware that doc_id expires in 14 days. Make sure to prepare files for signing just before user goes to sign. Currently it is not possible extend the expiry time of the doc_id, but can call prepare endpoint again and get new doc_id.</p></div><h3 id="_2-2-create-an-e-seal" tabindex="-1"><a class="header-anchor" href="#_2-2-create-an-e-seal" aria-hidden="true">
20#</a> 2.2 Create an e-seal</h3><p>Send a server-side <strong>POST</strong> request to <code>{{base_url}}/api/signatures/e-seal/create</code></p><p>The request body might look something like this:</p><div class="language-json line-numbers-mode" data-ext="json"><pre class="language-json"><code><span class="token punctuation">{</span>
21  <span class="token property">&quot;client_id&quot;</span><span class="token operator">:</span><span class="token string">&quot;{{client_id}}&quot;</span><span class="token punctuation">,</span>
22  <span class="token property">&quot;secret&quot;</span><span class="token operator">:</span><span class="token string">&quot;{{secret}}&quot;</span><span class="token punctuation">,</span>
23  <span class="token property">&quot;doc_id&quot;</span><span class="token operator">:</span><span class="token string">&quot;{{col_doc_id}}&quot;</span>
24<span class="token punctuation">}</span>
25</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><table><thead><tr><th>Request Param</th><th>Description</th></tr></thead><tbody><tr><td>client_id</td><td>Your eID Easy API client_id</td></tr><tr><td>secret</td><td>Your eID Easy API secret</td></tr><tr><td>doc_id</td><td>The same doc_id you got in step &quot;1. Prepare the file for signing&quot;</td></tr></tbody></table><p>Hmac and timestamp are sent to the server in the request header.</p>`,19)),s("table",null,[n[16]||(n[16]=s("thead",null,[s("tr",null,[s("th",null,"Header"),s("th",null,"Description")])],-1)),s("tbody",null,[n[15]||(n[15]=s("tr",null,[s("td",null,"X-Timestamp"),s("td",null,"UNIX timestamp in seconds, must not differ by more than 1 minute from the eID Easy server time")],-1)),s("tr",null,[n[14]||(n[14]=s("td",null,"X-HMAC-Signature",-1)),s("td",null,[n[12]||(n[12]=a("SHA256 HMAC in base64 format created by appending the client_id, doc_id, timestamp and the request path (including leading slash /) and signing the result with your eID Easy eseal HMAC key. See the ",-1)),s("a",k,[n[11]||(n[11]=a("Postman docs",-1)),t(l)]),n[13]||(n[13]=a(" for a calculation example.",-1))])])])]),n[20]||(n[20]=e(`<p>Here is the JavaScript reference for HMAC calculation:</p><div class="language-javascript line-numbers-mode" data-ext="js"><pre class="language-javascript"><code><span class="token keyword">let</span> timestamp <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>Date<span class="token punctuation">.</span><span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// current UNIX timestamp in seconds</span>
26console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>timestamp<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 1768990206</span>
27<span class="token keyword">let</span> requestURI <span class="token operator">=</span> <span class="token string">&#39;/api/signatures/e-seal/create&#39;</span><span class="token punctuation">;</span> <span class="token comment">// always this path</span>
28<span class="token keyword">let</span> client_id <span class="token operator">=</span> <span class="token string">&#39;9kKmNtYQ7LDOlHvasAE9oYQ0gKS4V4Bl&#39;</span><span class="token punctuation">;</span> <span class="token comment">// Get from id.eideasy.com after signing up.</span>
29<span class="token keyword">let</span> secret <span class="token operator">=</span> <span class="token string">&#39;XvsYIa0QBKySBOU2HXwPSPqtH6gaDcrv&#39;</span><span class="token punctuation">;</span> <span class="token comment">// Get from id.eideasy.com after signing up.</span>
30<span class="token keyword">let</span> doc_id <span class="token operator">=</span> <span class="token string">&#39;3iSYuofit9jUSrEMrYP736Yd0dQNvBjo0B9x8hBv&#39;</span><span class="token punctuation">;</span> <span class="token comment">
30// Known after previous request: 2.1 Prepare the file for signing</span>
31<span class="token keyword">let</span> hmac_key <span class="token operator">=</span> <span class="token string">&#39;A9ZxKpM7cB2QyFJ0WvRHSaD4nU6EwT5&#39;</span><span class="token punctuation">;</span> <span class="token comment">// Get from id.eideasy.com once eseal method is configured for you</span>
32
33<span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">createHmac</span><span class="token punctuation">(</span><span class="token parameter">key<span class="token punctuation">,</span> message</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
34    <span class="token keyword">const</span> enc <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">TextEncoder</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
35    <span class="token keyword">const</span> cryptoKey <span class="token operator">=</span> <span class="token keyword">await</span> crypto<span class="token punctuation">.</span>subtle<span class="token punctuation">.</span><span class="token function">importKey</span><span class="token punctuation">(</span>
36        <span class="token string">&#39;raw&#39;</span><span class="token punctuation">,</span>
37        enc<span class="token punctuation">.</span><span class="token function">encode</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">,</span>
38        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">&#39;HMAC&#39;</span><span class="token punctuation">,</span> <span class="token literal-property property">hash</span><span class="token operator">:</span> <span class="token string">&#39;SHA-256&#39;</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
39        <span class="token boolean">false</span><span class="token punctuation">,</span>
40        <span class="token punctuation">[</span><span class="token string">&#39;sign&#39;</span><span class="token punctuation">]</span>
41    <span class="token punctuation">)</span><span class="token punctuation">;</span>
42
43    <span class="token keyword">const</span> signature <span class="token operator">=</span> <span class="token keyword">await</span> crypto<span class="token punctuation">.</span>subtle<span class="token punctuation">.</span><span class="token function">sign</span><span class="token punctuation">(</span><span class="token string">&#39;HMAC&#39;</span><span class="token punctuation">,</span> cryptoKey<span class="token punctuation">,</span> enc<span class="token punctuation">.</span><span class="token function">encode</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
44    <span class="token keyword">return</span> <span class="token function">btoa</span><span class="token punctuation">(</span>String<span class="token punctuation">.</span><span class="token function">fromCharCode</span><span class="token punctuation">(</span><span class="token operator">...</span><span class="token keyword">new</span> <span class="token class-name">Uint8Array</span><span class="token punctuation">(</span>signature<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
45<span class="token punctuation">}</span>
46
47<span class="token keyword">let</span> message <span class="token operator">=</span> client_id <span class="token operator">+</span> doc_id <span class="token operator">+</span> timestamp <span class="token operator">+</span> requestURI<span class="token punctuation">;</span>
48console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// message string is &quot;9kKmNtYQ7LDOlHvasAE9oYQ0gKS4V4Bl3iSYuofit9jUSrEMrYP736Yd0dQNvBjo0B9x8hBv1768990109/api/signatures/e
48-seal/create&quot;</span>
49
50<span class="token keyword">let</span> hmac <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">createHmac</span><span class="token punctuation">(</span>hmac_key<span class="token punctuation">,</span> message<span class="token punctuation">)</span><span class="token punctuation">;</span>
51console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>hmac<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// iJcn537VbFwPiMDGPBx2dyuRcpx7OAONiTlyqFHFUjU=</span>
52</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_2-3-fetch-the-e-sealed-file" tabindex="-1"><a class="header-anchor" href="#_2-3-fetch-the-e-sealed-file" aria-hidden="true">#</a> 2.3 Fetch the e-sealed file</h3><p>Make a POST request to <code>{{base_url}}/api/signatures/download-signed-file</code> with the following request body:</p><div class="language-json line-numbers-mode" data-ext="json"><pre class="language-json"><code><span class="token punctuation">{</span>
53  <span class="token property">&quot;secret&quot;</span><span class="token operator">:</span> <span class="token string">&quot;{{secret}}&quot;</span><span class="token punctuation">,</span>
54  <span class="token property">&quot;client_id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;{{client_id}}&quot;</span><span class="token punctuation">,</span>
55  <span class="token property">&quot;doc_id&quot;</span><span class="token operator">:</span><span class="token string">&quot;{{doc_id}}&quot;</span>
56<span class="token punctuation">}</span>
57</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>doc_id</code> - the same doc_id you got in step &quot;1. Prepare the file for signing&quot;</p><div class="custom-container warning"><p class="custom-container-title">NOTE</p><p>Just a friendly reminder that this request should be made server-side. You do not want to expose your <strong>secret</strong> in the front-end.</p></div><p>Example response:</p><div class="language-json line-numbers-mode" data-ext="json"><pre class="language-json"><code><span class="token punctuation">{</span>
58  <span class="token property">&quot;status&quot;</span><span class="token operator">:</span><span class="token string">&quot;OK&quot;</span><span class="token punctuation">,</span>
59  <span class="token property">&quot;signed_file_contents&quot;</span><span class="token operator">:</span><span class="token string">&quot;UEsDBBQAAAgAAHI6z06KIflFHwAA&quot;</span><span class="token punctuation">,</span>
60  <span class="token property">&quot;filename&quot;</span><span class="token operator">:</span><span class="token string">&quot;signed_doc.pdf&quot;</span>
61<span class="token punctuation">}</span>
62</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>signed_file_contents</code> - signed file in base64 encoding.</p>`,10))])}const b=c(d,[["render",g],["__file","cloud-based-eseal.html.vue"]]);export{b as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.