mbedtls/tests
Neil Armstrong 0270b9f5a4 Rm useless use of MD in PKCS#1v2.1 test functions
We had a message in the data file, and were computing its hash in the
test function. It is more efficient (and simpler when it comes to
dependencies) to directly have the message hash in the data file.

It was probably this way because some test vectors provide the message
for the sake of all-in-one implementation that hash-and-sign at once.
But our API gets a hash as the input and signs it. In unit tests, this
should be reflected in the signature of the test function, which should
take a hash as input.

The changes to the .data file were done using the following python
script:

import hashlib

suite = 'pkcs1_v21'

functions = {
        'pkcs1_rsassa_pss_sign': (6, 8),
        'pkcs1_rsassa_pss_verify': (4, 6),
        'pkcs1_rsassa_pss_verify_ext': (4, 8),
}

def hash_ctx(s):
    if s == 'MBEDTLS_MD_MD5':
        return hashlib.md5()
    if s == 'MBEDTLS_MD_SHA1':
        return hashlib.sha1()
    if s == 'MBEDTLS_MD_SHA224':
        return hashlib.sha224()
    if s == 'MBEDTLS_MD_SHA256':
        return hashlib.sha256()
    if s == 'MBEDTLS_MD_SHA384':
        return hashlib.sha384()
    if s == 'MBEDTLS_MD_SHA512':
        return hashlib.sha512()

def fix(l):
    parts = l.rstrip().split(":")

    fun = parts[0]
    if fun not in functions:
        return l

    (digest_idx, msg_idx) = functions[fun]

    alg_str = parts[digest_idx]
    if alg_str == "MBEDTLS_MD_NONE":
        return l
    h = hash_ctx(alg_str)

    msg_str = parts[msg_idx]
    msg_hex = msg_str[1:-1]
    msg = bytes.fromhex(msg_hex)
    h.update(msg)
    msg_hash = h.hexdigest()
    msg_hash_str = '"' + msg_hash + '"'

    parts[msg_idx] = msg_hash_str
    return ":".join(parts) + '\n'

filename = 'tests/suites/test_suite_' + suite + '.data'
with open(filename) as f:
    lines = f.readlines()

lines = [fix(l) for l in lines]

with open(filename, 'w') as f:
    f.writelines(lines)

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
2022-07-20 09:34:20 +02:00
..
.jenkins
configs
data_files Fix parsing of special chars in X509 DN values 2022-06-27 11:19:50 +01:00
docker/bionic
git-scripts
include Merge pull request #5834 from mprse/HKDF_1 2022-06-20 15:27:46 +02:00
opt-testcases Refactor compat scripts 2022-06-12 20:53:02 +08:00
scripts Merge pull request #952 from gilles-peskine-arm/stdio_buffering-setbuf 2022-07-04 10:12:22 +01:00
src Initilize variable 2022-07-01 15:06:34 +02:00
suites Rm useless use of MD in PKCS#1v2.1 test functions 2022-07-20 09:34:20 +02:00
.gitignore
CMakeLists.txt Merge pull request #5635 from gilles-peskine-arm/psa-test-op-fail 2022-04-15 10:52:47 +02:00
compat-in-docker.sh
compat.sh Add comment in compat.sh about callers 2022-04-14 09:21:56 +02:00
context-info.sh
Descriptions.txt
make-in-docker.sh
Makefile
ssl-opt-in-docker.sh
ssl-opt.sh Improve comment 2022-07-14 10:49:47 +08:00