[SLOF] [PATCH 4/4] Add testprograms

Stefan Berger stefanb at linux.ibm.com
Wed Jun 30 22:26:36 AEST 2021


On 6/29/21 11:10 PM, Alexey Kardashevskiy wrote:
> What does this actually test? It runs sha384/etc but it is not 
> comparing the outcome with known good values or anything like this.
>
I visually compared the results against the expected results from test 
vectors or results from  command line output of echo -n "..." | 
sha512sum for example.


>
> On 16/06/2021 00:41, Stefan Berger wrote:
>> ---
>>   lib/libtpm/sha.c    | 42 ++++++++++++++++++++++++++++++
>>   lib/libtpm/sha512.c | 62 +++++++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 104 insertions(+)
>>
>> diff --git a/lib/libtpm/sha.c b/lib/libtpm/sha.c
>> index 98ab300..d8330f4 100644
>> --- a/lib/libtpm/sha.c
>> +++ b/lib/libtpm/sha.c
>> @@ -197,3 +197,45 @@ void sha1(const uint8_t *data, uint32_t length, 
>> uint8_t *hash)
>>       sha1_do(&ctx, data, length);
>>       memcpy(hash, &ctx.h[0], 20);
>>   }
>> +
>> +#ifdef MAIN
>> +
>> +#include <stdio.h>
>> +// gcc -DMAIN sha.c -o sha-test -I ../../include -I ../../slof -I 
>> ../../lib/libc/include
>> +int main(void)
>> +{
>> +    unsigned i, j;
>> +    uint8_t hash[20];
>> +    char buffer[70];
>> +
>> +    sha1("abc", 3, hash);
>> +    for (i = 0; i < sizeof(hash); i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> +    sha1("", 0, hash);
>> +    for (i = 0; i < sizeof(hash); i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> + sha1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 
>> 448/8, hash);
>> +    for (i = 0; i < sizeof(hash); i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> +    for (i = 54; i < sizeof(buffer); i++) {
>> +        memset(buffer, 0, sizeof(buffer));
>> +        for (j = 0; j <= i; j++)
>> +        buffer[j] = 'a';
>> +        printf("input %d: %s\n", i, buffer);
>> +        sha1(buffer, i, hash);
>> +        for (j = 0; j < sizeof(hash); j++) {
>> +            printf("%02x", hash[j]);
>> +        }
>> +        printf("\n");
>> +    }
>> +}
>> +#endif
>> diff --git a/lib/libtpm/sha512.c b/lib/libtpm/sha512.c
>> index a59f659..addeacf 100644
>> --- a/lib/libtpm/sha512.c
>> +++ b/lib/libtpm/sha512.c
>> @@ -241,3 +241,65 @@ void sha512(const uint8_t *data, uint32_t 
>> length, uint8_t *hash)
>>       sha512_do(&ctx, data, length);
>>       memcpy(hash, ctx.h, sizeof(ctx.h));
>>   }
>> +
>> +
>> +#ifdef MAIN
>> +
>> +#include <stdio.h>
>> +// gcc -DMAIN sha512.c -o sha512-test -I ../../include -I ../../slof 
>> -I ../../lib/libc/include
>> +int main(void)
>> +{
>> +    unsigned i, j;
>> +    uint8_t hash[64];
>> +    char buffer[128];
>> +
>> +    sha512("abc", 3, hash);
>> +    for (i = 0; i < sizeof(hash); i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> +    sha384("abc", 3, hash);
>> +    for (i = 0; i < 384/8; i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> +    sha512("", 0, hash);
>> +    for (i = 0; i < sizeof(hash); i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> +    sha384("", 0, hash);
>> +    for (i = 0; i < 384/8; i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> + sha512("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 
>> 448/8, hash);
>> +    for (i = 0; i < sizeof(hash); i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> + sha384("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 
>> 448/8, hash);
>> +    for (i = 0; i < 384/8; i++) {
>> +        printf("%02x", hash[i]);
>> +    }
>> +    printf("\n");
>> +
>> +
>> +    for (i = 110; i < sizeof(buffer); i++) {
>> +        memset(buffer, 0, sizeof(buffer));
>> +        for (j = 0; j <= i; j++)
>> +        buffer[j] = 'a';
>> +        printf("input %d: %s\n", i, buffer);
>> +        sha512(buffer, i, hash);
>> +        for (j = 0; j < sizeof(hash); j++) {
>> +            printf("%02x", hash[j]);
>> +        }
>> +        printf("\n");
>> +    }
>> +}
>> +#endif
>>
>


More information about the SLOF mailing list