Commit 0bf0ff68 authored by Jaromil's avatar Jaromil
Browse files

Deployed 0886d175 with MkDocs version: 1.0.4

parent 6af568f4
......@@ -259,7 +259,7 @@ in 2001.</p>
<span class="n">cG1</span> <span class="o">=</span> <span class="n">G1</span> <span class="o">*</span> <span class="n">c</span>
<span class="n">cG2</span> <span class="o">=</span> <span class="n">G2</span> <span class="o">*</span> <span class="n">c</span>
<span class="c1">-- Theoretical proof of ε(G, G)^abc</span>
<span class="n">K</span> <span class="o">=</span> <span class="n">ECP2</span><span class="p">.</span><span class="n">miller</span><span class="p">(</span><span class="n">G2</span><span class="p">,</span> <span class="n">G1</span><span class="p">)</span> <span class="o">^</span> <span class="p">(</span> <span class="n">a</span><span class="p">:</span><span class="n">modmul</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="n">O</span><span class="p">):</span><span class="n">modmul</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">O</span><span class="p">)</span> <span class="p">)</span>
<span class="n">K</span> <span class="o">=</span> <span class="n">ECP2</span><span class="p">.</span><span class="n">miller</span><span class="p">(</span><span class="n">G2</span><span class="p">,</span> <span class="n">G1</span><span class="p">)</span> <span class="o">^</span> <span class="p">(</span> <span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">*</span> <span class="n">c</span> <span class="p">)</span>
<span class="c1">-- A computes KA = ε(bG, cG)^a</span>
<span class="n">KA</span> <span class="o">=</span> <span class="n">ECP2</span><span class="p">.</span><span class="n">miller</span><span class="p">(</span><span class="n">bG2</span><span class="p">,</span> <span class="n">cG1</span><span class="p">)</span> <span class="o">^</span> <span class="n">a</span>
<span class="c1">-- B computes KB = ε(aG, cG)^b</span>
......
......@@ -192,7 +192,6 @@ var ZR = (function() {
layout.registerComponent('OUTPUT', setupOutputComponent)
layout.on('stackCreated', bindAutoFocus)
layout.on('stackCreated', addControls)
layout.on('stateChanged', () => localStorage.setItem('savedState', JSON.stringify(layout.toConfig())))
layout.init()
}
......
Scenario simple: Encrypt a message with the password
Given nothing # no input is given to this contract
Given nothing
# only inline input, no KEYS or DATA passed
When I write 'my secret word' in 'password'
and I write 'a very short but very confidential message' in 'whisper'
and I write 'for your eyes only' in 'header'
# header is implicitly used when encrypt
and I encrypt the secret message 'whisper' with 'password'
# anything introduced by 'the' becomes a new variable
Then print the 'secret message'
{"zenroom":{"curve":"goldilocks","encoding":"url64","version":"1.0.0+53387e8","scenario":"simple"},"Alice":{"keypair":{"public_key":"u64:BCYfOkN2YUXJxGYToRt3Z1ESg_niBQ1DZbwI8lZnX04KmR4tYjL5zy40u5FZvtoi93GWvIQYalusL4KsgfOt73UrO2vixOztl2pzkhBh6HVBWiLRTXtCb_HaIZFGyqxMF_hMI30ZWzsSgKgiZsb-YQw","private_key":"u64:Ok51-tVCCCFCC4FOj6SgL0KPjHxELqDN8aEtODCo0LDcIHxy5T8k2Ns79zn2n23a_qszfGE5g5A"}}}
{"zenroom":{"curve":"goldilocks","encoding":"url64","version":"1.0.0+c261744","scenario":"simple"},"Alice":{"keypair":{"public_key":"u64:BARaM1oJueAZ3TKgxxQvFans8iPspvoeDQW2ZhPOkdrgbMqmVcO_8j8SBAJraHECX9f1ErtEcAAsU9Z5l3W64-sz2RDHeayWpeuwRaRU1cifpBPk-V_Pf3DtDjDbSXguHpeDugfwZYM5y3pYS4coi7c","private_key":"u64:NsPF02b3wDuX77SOXow874D3kHaRhn3cXNov4tij1IvUfPxU9mey3UEbYzBxgfe17N2rDg-iFjA"}}}
{"Bob":{"keypair":{"public_key":"u64:BGx9Of0O2se9j6hLtgSc-2qo_mdaMhRgoMGtvNFC72xLMm-oGTpRkavl1gzpv1wi_KMpZNEIef6fDUfDR0UrPyPE5kKhbOAqX4jwHFkO0HbRNNeOwe-KZtiXiDQ60iOOt5dogqu5QqULVaiP2Q9PBsI","private_key":"u64:IOiaPxbheBUDFD4V4tai-I_wFeqT5QkMKEMGD39k_pQJdaDPC1p7PQmNakJnaYTFuHpSn8_JKIA"}},"zenroom":{"curve":"goldilocks","encoding":"url64","version":"1.0.0+53387e8","scenario":"simple"}}
{"Bob":{"keypair":{"public_key":"u64:BE4Y_eh-7i382EgGJH5Ctffppryeo6wU81d4r9qGpaz3hEx4P9xLj-YzkSFvPibPBuXhu0zSt-RQltkJyiTA_KpLUUtLBcM-vA9lV9n8GYHl9NCG6dE_rpM3FMbmaTcVa3TD1axUL6qk88jPstacpHA","private_key":"u64:OROwAv3oglFs1rE0eW02iZ4NMkUONaN30fcXG3c2PTQrpQuHWWJihGOHvbdxCTKzD9emN_g2P48"}},"zenroom":{"curve":"goldilocks","encoding":"url64","version":"1.0.0+c261744","scenario":"simple"}}
......@@ -5,21 +5,20 @@
-- setup
ECP = require_once'zenroom_ecp'
order = ECP.order()
G = ECP.generator()
-- typical EC key generation on G1
-- take a random big integer modulo curve order
-- and multiply it by the curve generator
function keygen(modulo)
local key = INT.modrand(modulo)
function keygen()
local key = INT.random()
return { private = key,
public = key * G }
end
-- generate the certification request
certreq = keygen(order)
certreq = keygen()
-- certreq.private is preserved in a safe place
-- certreq.public is sent to the CA along with a declaration
declaration = { requester = "Alice",
......@@ -32,10 +31,10 @@ I.print(declaration)
-- --> CA receives from Requester
-- keypair for CA (known to everyone as the Mad Hatter)
CA = keygen(order)
CA = keygen()
-- from here the CA has received the request
certkey = keygen(order)
certkey = keygen()
-- certkey.private is sent to requester
-- certkey.public is broadcasted
......@@ -57,7 +56,7 @@ certpriv = (CERThash * certkey.private + CA.private)
-- Alice has received from the CA the certpriv and CERT
-- which can be used to create a new CERTprivate key
CERTprivate = (CERThash * certreq.private + certpriv) % order
CERTprivate = (CERThash * certreq.private + certpriv) % ECP.order()
-- Anyone may receive the certpub and CERThash and, knowing the CA
-- public key, can recover the same CERTpublic key from them
......
......@@ -313,15 +313,16 @@ Nina Boelsums, Andrea D'Intino and Sofía Celi for their expert
reviews.</p>
<p>This software includes software components by: R. Ierusalimschy,
W. Celes and L.H. de Figueiredo (lua), Mike Scott and Kealan McCusker
(milagro-crypto-c), Ralph Hempel (umm_malloc), Mark Pulford
(lua-cjson), Daan Sprenkels (randombytes), Salvatore Sanfilippo
(cmsgpack)</p>
(milagro-crypto-c), Mark Pulford (lua-cjson), Daan Sprenkels
(randombytes), Salvatore Sanfilippo (cmsgpack), Tilen Majerle (lwmem),
Sean Barrett (stb_c_lexer), Jeff Roberts (stb_sprintf), Kim Alvefur
(cbor)</p>
<p>Some Lua extensions included are written by: Kyle Conroy
(statemachine), Enrique García Cota (inspect and semver).</p>
<p>Zenroom is Licensed under the terms of the Affero GNU Public License as
published by the Free Software Foundation; either version 3 of the
License, or (at your option) any later version.</p>
<p>Software contained include Lua 5.3, Copyright (C) 1994-2017 Lua.org,
<p>Software contained include Lua 5.3.5, Copyright (C) 1994-2019 Lua.org,
PUC-Rio licensed with an MIT style license. Also included Milagro,
Copyright 2016 MIRACL UK Ltd licensed with the Apache License, Version
2.0 (the "License").</p>
......
......@@ -106,7 +106,7 @@ res = {}
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -79,7 +79,7 @@ keyring:keygen()
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -152,14 +152,8 @@ href="https://zenroom.org">Zenroom.org</a>.</p>
<h1>Zencode language parser</h1>
<p> Zencode is a <a
href="https://en.wikipedia.org/wiki/Domain-specific_language">Domain
Specific Language (DSL)</a> made to be understood by humans and
inspired by <a
href="https://en.wikipedia.org/wiki/Behavior-driven_development">Behavior
Driven Development (BDD)</a> and <a
href="https://en.wikipedia.org/wiki/Domain-driven_design">Domain
Driven Design (DDD)</a>.</p>
<p> <a href="https://dev.zenroom.org/zencode/">Zencode</a> is a Domain
Specific Language (DSL) made to be understood by humans.</p>
</td>
</tr>
<tr>
......@@ -200,7 +194,7 @@ href="https://zenroom.org">Zenroom.org</a>.</p>
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -93,6 +93,10 @@
<td class="summary">Generate a random Big number whose ceiling is defined by the modulo to another number.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#random">random ()</a></td>
<td class="summary">Generate a random Big number whose ceiling is the order of the curve.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#modmul">modmul (coefficient, modulo)</a></td>
<td class="summary">Multiply a BIG number by another BIG while ceiling the operation to a modulo to avoid excessive results.</td>
</tr>
......@@ -156,6 +160,25 @@
</dd>
<dt>
<a name = "random"></a>
<strong>random ()</strong>
</dt>
<dd>
Generate a random Big number whose ceiling is the order of the curve. ()
<h3>Returns:</h3>
<ol>
a new Big number
</ol>
</dd>
<dt>
<a name = "modmul"></a>
......@@ -193,7 +216,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -600,7 +600,7 @@ signature = ecdh:sign(m)
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -562,7 +562,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -176,7 +176,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -76,6 +76,11 @@
<a href="../modules/INSPECT.html#print">print</a> function that can represent complex data structures (Lua
tables) and tag their encoding formats and size. Another <a href="../modules/INSPECT.html#spy">spy</a>
function prints the same as pass-through.</p>
<h3>Info:</h3>
<ul>
<li><strong>License</strong>: MIT</li>
<li><strong>Author</strong>: Kikito <a href="http://github.com/kikito/inspect.lua">github.com/kikito/inspect.lua</a></li>
</ul>
<h2><a href="#Functions">Functions</a></h2>
......@@ -179,7 +184,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -456,7 +456,7 @@ newly allocated octet, does not change the contents of other octets.
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -663,7 +663,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -282,7 +282,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
......@@ -71,37 +71,27 @@
<h1>Zencode language parser</h1>
<p> Zencode is a <a
href="https://en.wikipedia.org/wiki/Domain-specific_language">Domain
Specific Language (DSL)</a> made to be understood by humans and
inspired by <a
href="https://en.wikipedia.org/wiki/Behavior-driven_development">Behavior
Driven Development (BDD)</a> and <a
href="https://en.wikipedia.org/wiki/Domain-driven_design">Domain
Driven Design (DDD)</a>.</p>
<p> <a href="https://dev.zenroom.org/zencode/">Zencode</a> is a Domain
Specific Language (DSL) made to be understood by humans.</p>
</p>
<p> Its
purpose is detailed in <a
href="https://files.dyne.org/zenroom/Zencode_Whitepaper.pdf">the
Zencode Whitepaper</a> and DECODE EU project.</p>
<h3>Info:</h3>
<ul>
<li><strong>Copyright</strong>: Dyne.org foundation 2018-2020</p>
<p> The Zenroom VM is capable of parsing specific scenarios written in
Zencode and execute high-level cryptographic operations described
in them; this is to facilitate the integration of complex
operations in software and the non-literate understanding of what a
distributed application does. A generic Zencode looks like this:</p>
<p> <code>
Given that I am known as 'Alice'</p>
<p> When I create my new keypair</p>
<p> Then print my data
</code></p>
distributed application does.</p>
<p> This section doesn't provide the documentation on how to write
Zencode, but illustrates the internals on how the Zencode parser is
made and how it integrates with the Zenroom memory model. It serves
as a reference documentation on functions used to write parsers for
new Zencode scenarios in Zenroom's Lua.</p>
<h3>Info:</h3>
<ul>
<li><strong>Copyright</strong>: Dyne.org foundation 2018-2019</li>
Zencode. Refer to the links above to learn it. This documentation
continues to illustrate internals: how the Zencode direct-syntax
parser is made, how it integrates in the Zenroom memory model.</li>
<li><strong>License</strong>: AGPLv3</li>
<li><strong>Author</strong>: Denis "Jaromil" Roio</li>
</ul>
......@@ -525,7 +515,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
<i style="float:right;">Last updated 2019-12-23 15:00:14 </i>
<i style="float:right;">Last updated 2019-12-26 19:52:00 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Zenroom LUA</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div> <!-- id="product" -->
<div id="main">
<!-- Menu -->
<div id="navigation">
<br/>
<h1>Zenroom</h1>
<ul>
<li><a href="../index.html">Index</a></li>
</ul>
<h2>Contents</h2>
<ul>
<li><a href="#Given_block__IN_read_only_memory_">Given block (IN read-only memory) </a></li>
<li><a href="#When_block__ACK_read_write_memory_">When block (ACK read-write memory) </a></li>
<li><a href="#Then_block__OUT_write_only_memory_">Then block (OUT write-only memory) </a></li>
</ul>
<h2>Modules</h2>
<ul class="nowrap">
<li><a href="../modules/OCTET.html">OCTET</a></li>
<li><a href="../modules/HASH.html">HASH</a></li>
<li><a href="../modules/ECDH.html">ECDH</a></li>
<li><a href="../modules/ECP.html">ECP</a></li>
<li><a href="../modules/String.html">String</a></li>
<li><a href="../modules/Table.html">Table</a></li>
<li><a href="../modules/INSPECT.html">INSPECT</a></li>
<li><strong>lua.zencode</strong></li>
<li><a href="../modules/BIG.html">BIG</a></li>
</ul>
<h2>Tutorials</h2>
<ul class="nowrap">
<li><a href="../tutorials/Syntax.html">Syntax</a></li>
<li><a href="../tutorials/StateMachine.html">StateMachine</a></li>
</ul>
<h2>Examples</h2>
<ul class="nowrap">
<li><a href="../examples/keygen.lua.html">keygen.lua</a></li>
<li><a href="../examples/crypt-to-multi.lua.html">crypt-to-multi.lua</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>lua.zencode</code></h1>
<p>
<h1>Zencode language parser</h1>
<p> <a href="https://dev.zenroom.org/zencode/">Zencode</a> is a Domain
Specific Language (DSL) made to be understood by humans.</p>
</p>
<p> Its
purpose is detailed in <a
href="https://files.dyne.org/zenroom/Zencode_Whitepaper.pdf">the
Zencode Whitepaper</a> and DECODE EU project.</p>
<p> An example of Zencode looks like this:</p>
<p> <code>
Given that I am known as 'Alice'</p>
<p> When I create my new keypair</p>
<p> Then print my data
</code></p>
<p> The Zenroom VM is capable of parsing specific scenarios written in
Zencode and execute high-level cryptographic operations described
in them; this is to facilitate the integration of complex
operations in software and the non-literate understanding of what a
distributed application does.</p>
<p> This section doesn't provide the documentation on how to write
Zencode. Refer to the links above to learn it. This documentation
continues to illustrate internals: how the Zencode direct-syntax
parser is made, how it integrates in the Zenroom memory model.</p>
<h2><a href="#Given_block__IN_read_only_memory_">Given block (IN read-only memory) </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#ZEN:Iam">ZEN:Iam (name)</a></td>
<td class="summary">Declare 'my own' name that will refer all uses of the 'my' pronoun
to structures contained under this name.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:pick">ZEN:pick (name, data)</a></td>
<td class="summary">Pick a generic data structure from the <b>IN</b> memory
space.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:pickin">ZEN:pickin (section, name)</a></td>
<td class="summary">Pick a data structure named 'what' contained under a 'section' key
of the at the root of the <b>IN</b> memory space.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:validate">ZEN:validate (name, schema)</a></td>
<td class="summary">Optional step inside the <b>Given</b> block to execute schema
validation on the last data structure selected by <a href="../modules/lua.zencode.html#ZEN:pick">pick</a>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:ack">ZEN:ack (name)</a></td>
<td class="summary">Final step inside the <b>Given</b> block towards the <b>When</b>:
pass on a data structure into the ACK memory space, ready for
processing.</td>
</tr>
</table>
<h2><a href="#When_block__ACK_read_write_memory_">When block (ACK read-write memory) </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#ZEN:draft">ZEN:draft (string)</a></td>
<td class="summary">Draft a new text made of a simple string: convert it to <a href="../modules/OCTET.html#">OCTET</a>
and append it to ACK.draft.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:eq">ZEN:eq ()</a></td>
<td class="summary">Compare equality of two data objects (TODO: octet, ECP, etc.)</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:gt">ZEN:gt ()</a></td>
<td class="summary">Check that the first object is greater than the second (TODO)</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:lt">ZEN:lt ()</a></td>
<td class="summary">Check that the first object is lesser than the second (TODO)</td>
</tr>
</table>
<h2><a href="#Then_block__OUT_write_only_memory_">Then block (OUT write-only memory) </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#ZEN:out">ZEN:out ()</a></td>
<td class="summary">Move a generic data structure from ACK to OUT memory space, ready
for its final JSON encoding and print out.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:outmy">ZEN:outmy ()</a></td>
<td class="summary">Move 'my own' data structure from ACK to OUT.whoami memory space,
ready for its final JSON encoding and print out.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:export">ZEN:export (object, format)</a></td>
<td class="summary">Convert a data object to the desired format (argument name provided
as string), or use CONF.encoding when called without argument</td>
</tr>
<tr>
<td class="name" nowrap><a href="#ZEN:import">ZEN:import (object)</a></td>
<td class="summary">Import a generic data element from the tagged format, or use
CONF.encoding</td>
</tr>
<tr>
<td class="name" nowrap><a href="#begin">begin (verbosity)</a></td>
<td class="summary">ZENCODE PARSER</td>
</tr>
</table>
<br/>
<br/>
<h2><a name="Given_block__IN_read_only_memory_"></a>Given block (IN read-only memory) </h2>
<dl class="function">
<dt>
<a name = "ZEN:Iam"></a>
<strong>ZEN:Iam (name)</strong>
</dt>
<dd>
Declare 'my own' name that will refer all uses of the 'my' pronoun
to structures contained under this name. (name)
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">name</span>
own name to be saved in ACK.whoami
</li>
</ul>
</dd>
<dt>
<a name = "ZEN:pick"></a>
<strong>ZEN:pick (name, data)</strong>
</dt>
<dd>
Pick a generic data structure from the <b>IN</b> memory
space. Looks for named data on the first and second level and makes
it ready for <a href="../modules/lua.zencode.html#ZEN:validate">validate</a> or <a href="../modules/lua.zencode.html#ZEN:ack">ack</a>.
(name, data)
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">name</span>
string descriptor of the data object
</li>
<li><span class="parameter">data</span>
[opt] optional data object (default search inside IN.*)
</li>
</ul>
<h3>Returns:</h3>
<ol>
true or false
</ol>
</dd>
<dt>
<a name = "ZEN:pickin"></a>
<strong>ZEN:pickin (section, name)</strong>
</dt>
<dd>
Pick a data structure named 'what' contained under a 'section' key
of the at the root of the <b>IN</b> memory space. Looks for named
data at the first and second level underneath IN[section] and moves
it to TMP[what][section], ready for <a href="../modules/lua.zencode.html#ZEN:validate">validate</a> or <a href="../modules/lua.zencode.html#ZEN:ack">ack</a>. If
TMP[what] exists already, every new entry is added as a key/value
(section, name)
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">section</span>
string descriptor of the section containing the data
</li>
<li><span class="parameter">name</span>
string descriptor of the data object
</li>
</ul>
<h3>Returns:</h3>
<ol>
true or false
</ol>
</dd>
<dt>
<a name = "ZEN:validate"></a>
<strong>ZEN:validate (name, schema)</strong>