Požadavek encrypt
Účel a dopady
Zašifruje vstupní data. Podporuje jak symetrické šifrování (klíč přímo v požadavku), tak asymetrické šifrování veřejným klíčem/certifikátem (cert). Bez vedlejších účinků.
Dostupnost, kontext, oprávnění apod.
Dostupné každému přihlášenému uživateli, bez zvláštních omezení.
XML požadavek (syntax + popis)
<request>
<encrypt
cipher="{string}"
key="{string}"
key-prep="{bool}"
key-format="plain|base64|unicode|hex|url"
init-format="plain|base64|unicode|hex|url"
init="{string}"
hash="{string}"
iter="{number}"
cert="{string}"
padding="{string}"
params="{string}"
input="plain|base64|unicode|hex|url|jwt"
part="{number}"
data="{string}"
output="{string}"
>
{string}
</encrypt>
</request>
Parametry a pravidla (atributy, potomci)
Zpracování encrypt sdílí jeden dispečer s decrypt, cnthash a cnthmac.
Symetrické šifrování
cipher- Šifra podle názvosloví OpenSSL, s volitelnou příponou_nppro variantu bez paddingu (NO PADDING); hodnotaasymetricpřepne na asymetrický režim níže. (typ:string; nepovinný; výchozí:des-ede3-cbc)key,key-format- Šifrovací klíč a jeho formát;key-formatneuvedený se pokusí rozpoznat automaticky. (typ:string; nepovinné)key-prep- Klíč před použitím zahashovat. (typ:bool; nepovinný; výchozí:false)init,init-format- Inicializační vektor a jeho formát. (typ:string; nepovinné;init-formatvýchozí:plain)hash,iter- Hashovací funkce a počet iterací přípravy klíče, jen skey-prep="true". (typ:string/number; nepovinné; výchozí:sha256a3iterace)
Asymetrické šifrování (cipher="asymetric") – v dosavadní dokumentaci zcela chybělo
cert- Relativní cesta k souboru s veřejným klíčem/certifikátem (PEM) v adresáři certifikátů serveru; mimo tento adresář nepřístupné. (typ:string; povinný v asymetrickém režimu)padding- RSA padding: číselná hodnota, nebopkcs1|tls|oaep|x931|pss; jiná/chybějící hodnota = bez paddingu. (typ:string; nepovinný)params- Další parametry algoritmu ve tvarujméno=hodnotaoddělené;. (typ:string; nepovinný)
Společné
input- Formát vstupních dat:plain|base64|unicode|hex|url|jwt(jwt+partv dosavadní dokumentaci chyběly). (typ:enum; nepovinný; výchozí:plain)data- Vstupní data. (typ:string; nepovinný) – chybí-li, použije se obsah samotného uzlu<encrypt>.output- Řetězec po sobě jdoucích konverzí výstupního formátu. (typ:string; nepovinný; výchozí:base64)
Příklady požadavku
(Zatím bez ověřeného příkladu.)
Zpracování a vedlejší účinky
Varianta _np u cipher musí být na obou stranách komunikace shodná. Přípravou klíče (key-prep="true") se v praxi nešifruje přímo zadaným klíčem, ale jeho hashem – výchozí kombinace (sha256, 3 iterace) odpovídá nejobvyklejšímu způsobu přípravy klíče používanému i jinými aplikacemi.
XML odpověď (syntax + popis)
<response>
<encrypt type="ok" value="{string}"/>
</response>
nebo (byla-li vstupní data zadána obsahem uzlu):
<response>
<encrypt type="ok">{string}</encrypt>
</response>
Zásadní oprava: dosavadní dokumentace uváděla výsledek jako vnořený element <value>…</value>. Ve skutečnosti žádný takový vnořený element nevzniká – výsledek je buď v atributu value (byla-li vstupní data zadána atributem data), nebo jako přímý textový obsah <encrypt> (byla-li zadána obsahem uzlu).
Příklady odpovědi
(Zatím bez ověřeného příkladu.)
Chyby a reakce
type="error" detail="Nespravny parametr"– neplatný/chybějící vstupní atribut, neplatná/nedostupná cesta k certifikátu, nebo chybějící data.type="error" detail="Pri provadeni doslo k chybe"– selhání samotného šifrování.