[#Obfuscation]
= Obfuscation
:mrdocs:

XOR&hyphen;based obfuscation over a fixed&hyphen;size key, applied to byte ranges&period;

== Synopsis

Declared in `&lt;util&sol;obfuscation&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class Obfuscation;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:Obfuscation/KeyType.adoc[`KeyType`] 
| Unsigned integer type holding one obfuscation key word&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:Obfuscation/2constructor-0e.adoc[`Obfuscation`]         [.small]#[constructor]#
| Constructors
| xref:Obfuscation/HexKey.adoc[`HexKey`] 
| Return the key as a hex string&period;
| xref:Obfuscation/Serialize.adoc[`Serialize`] 
| Serialize the key as a length&hyphen;prefixed byte vector&period;
| xref:Obfuscation/Unserialize.adoc[`Unserialize`] 
| Read the key from a length&hyphen;prefixed byte vector, throwing on a wrong size&period;
| xref:Obfuscation/operator_call.adoc[`operator()`] 
| Obfuscate (or de&hyphen;obfuscate) a byte range in place by XORing it with the key&period;
| xref:Obfuscation/2conversion.adoc[`operator bool`] 
| Test whether the obfuscation is active&period;
|===


== Static Data Members

[cols="1,4"]
|===
| Name| Description
| xref:Obfuscation/KEY_SIZE.adoc[`KEY&lowbar;SIZE`] 
| Size of the obfuscation key in bytes&period;
|===


== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:dbwrapper_private/GetObfuscation.adoc[`dbwrapper&lowbar;private&colon;&colon;GetObfuscation`]
| Work around circular dependency, as well as for testing in dbwrapper&lowbar;tests&period; Database obfuscation should be considered an implementation detail of the specific database&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
