Přejít na obsah
Skip to main content

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 _np pro variantu bez paddingu (NO PADDING); hodnota asymetric př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-format neuvedený 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-format výchozí: plain)
  • hash, iter - Hashovací funkce a počet iterací přípravy klíče, jen s key-prep="true". (typ: string/number; nepovinné; výchozí: sha256 a 3 iterace)

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, nebo pkcs1|tls|oaep|x931|pss; jiná/chybějící hodnota = bez paddingu. (typ: string; nepovinný)
  • params - Další parametry algoritmu ve tvaru jméno=hodnota oddělené ;. (typ: string; nepovinný)

Společné​

  • input - Formát vstupních dat: plain|base64|unicode|hex|url|jwt (jwt + part v 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í.

Související požadavky​