|
1 | 1 | # Key Derivation Functions Concepts # {#kdf_concepts}
|
2 | 2 |
|
3 | 3 | ## Key Derivation Function Concepts ## {#kdf_concept}
|
| 4 | + |
| 5 | +A ```KeyDerivationFunction``` is an object intended to compute non-isomorphic permutations from non-fixed size |
| 6 | + elements integral field to fixed-size elements integral field, |
| 7 | + |
| 8 | +### Requirements ### {#block_ciphers_concepts_requirements} |
| 9 | + |
| 10 | +The type ```X``` satisfies ```KeyDerivationFunction``` if |
| 11 | + |
| 12 | +Given |
| 13 | +* ```MacType```, the type named by ```X::mac_type``` |
| 14 | +* ```KeyType```, the type named by ```X::key_type``` |
| 15 | +* ```SaltType```, the type named by ```X::salt_type``` |
| 16 | +* ```LabelType```, the type named by ```X::label_type``` |
| 17 | +* ```SecretType```, the type template named by ```X::secret_type``` |
| 18 | + |
| 19 | +The following type members must be valid and have their specified effects |
| 20 | + |
| 21 | +|Expression |Type |Requirements and Notes | |
| 22 | +|-----------------------------|------------------|-----------------------------| |
| 23 | +|```X::mac_type``` |```MacType``` |```MacType``` type satisfies ```MessageAuthenticationCode``` concept| |
| 24 | +|```X::key_type``` |```KeyType``` |```KeyType``` type is a ```SequenceContainer``` of type ```T``` which satisfies ```Integral``` concept| |
| 25 | +|```X::salt_type``` |```SaltType``` |```SaltType``` type is a ```SequenceContainer``` of type ```T``` which satisfies ```Integral``` concept| |
| 26 | +|```X::label_type``` |```LabelType``` |```LabelType``` type is a ```SequenceContainer``` of type ```T``` which satisfies ```Integral``` concept| |
| 27 | +|```X::secret_type``` |```SecretType``` |```SecretType``` type is a ```SequenceContainer``` of type ```T``` which satisfies ```Integral``` concept| |
| 28 | + |
| 29 | +The following static data member definitions must be valid and have their specified effects |
| 30 | + |
| 31 | +|Expression |Type |Requirements and Notes | |
| 32 | +|--------------------|-----------------|---------------------------------------| |
| 33 | +|```X::key_bits``` |```std::size_t```|```Integral``` bits amount in ```KeyType```| |
| 34 | +|```X::salt_bits``` |```std::size_t```|```Integral``` bits amount in ```SaltType```| |
| 35 | +|```X::label_bits``` |```std::size_t```|```Integral``` bits amount in ```LabelType```| |
| 36 | +|```X::secret_bits```|```std::size_t```|```Integral``` bits amount in ```SecretType```| |
| 37 | + |
| 38 | +The following expressions must be valid and have their specified effects |
| 39 | + |
| 40 | +|Expression |Requirements |Return Type | |
| 41 | +|---------------------------|------------------|-------------------------------| |
| 42 | +|```X(key_type)```|Constructs stateful ```BlockCipher``` object with input key of ```key_type```|```KeyDerivationFunction```| |
0 commit comments