mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-02-24 20:16:57 +00:00
Create sample key material for symmetric keys
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
df63968c0c
commit
397b0287b1
|
@ -85,3 +85,29 @@ class KeyType:
|
||||||
assert self.params is not None
|
assert self.params is not None
|
||||||
return self.ECC_KEY_SIZES[self.params[0]]
|
return self.ECC_KEY_SIZES[self.params[0]]
|
||||||
return self.KEY_TYPE_SIZES[self.private_type]
|
return self.KEY_TYPE_SIZES[self.private_type]
|
||||||
|
|
||||||
|
# "48657265006973206b6579a064617461"
|
||||||
|
DATA_BLOCK = b'Here\000is key\240data'
|
||||||
|
def key_material(self, bits: int) -> bytes:
|
||||||
|
"""Return a byte string containing suitable key material with the given bit length.
|
||||||
|
|
||||||
|
Use the PSA export representation. The resulting byte string is one that
|
||||||
|
can be obtained with the following code:
|
||||||
|
```
|
||||||
|
psa_set_key_type(&attributes, `self.expression`);
|
||||||
|
psa_set_key_bits(&attributes, `bits`);
|
||||||
|
psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_EXPORT);
|
||||||
|
psa_generate_key(&attributes, &id);
|
||||||
|
psa_export_key(id, `material`, ...);
|
||||||
|
```
|
||||||
|
"""
|
||||||
|
if bits % 8 != 0:
|
||||||
|
raise ValueError('Non-integer number of bytes: {} bits'.format(bits))
|
||||||
|
length = bits // 8
|
||||||
|
if self.name == 'PSA_KEY_TYPE_DES':
|
||||||
|
# "644573206b457901644573206b457902644573206b457904"
|
||||||
|
des3 = b'dEs kEy\001dEs kEy\002dEs kEy\004'
|
||||||
|
return des3[:length]
|
||||||
|
# TODO: ECC, RSA
|
||||||
|
return b''.join([self.DATA_BLOCK] * (length // len(self.DATA_BLOCK)) +
|
||||||
|
[self.DATA_BLOCK[:length % len(self.DATA_BLOCK)]])
|
||||||
|
|
Loading…
Reference in a new issue