Пример #1
0
void SYS_RANDOM_CryptoBlockGet( void *buffer, size_t size )
{
    if(buffer != 0 && size != 0)
    {
        CRYPT_RNG_BlockGenerate(&sysRandCtx, (unsigned char*)buffer, size);
    }

    // TODO: set error status/return error if failed

}
Пример #2
0
uint32_t SYS_RANDOM_CryptoGet( void )
{
    union
    {
        uint8_t     u8[4];
        uint32_t    u32;
    }sUint;


    CRYPT_RNG_BlockGenerate(&sysRandCtx, (unsigned char*)sUint.u8, sizeof(sUint.u8));

    return sUint.u32;
    // TODO: set error status/return error if failed
}
Пример #3
0
/* check mcapi rng */
static int check_rng(void)
{
    int           ret;
    int           i; 
    byte          in[RANDOM_BYTE_SZ];
    byte          out[RANDOM_BYTE_SZ];

    for (i = 0; i < RANDOM_BYTE_SZ; i++)
        in[i] = (byte)i;

    for (i = 0; i < RANDOM_BYTE_SZ; i++)
        out[i] = (byte)i;

    ret = InitRng(&defRng);
    if (ret != 0) {
        printf("default rng init failed\n");
        return -1;
    }

    ret = CRYPT_RNG_Initialize(&mcRng);
    if (ret != 0) {
        printf("mcapi rng init failed\n");
        return -1;
    }

    ret = CRYPT_RNG_Get(&mcRng, &out[0]);
    if (ret != 0) {
        printf("mcapi rng get failed\n");
        return -1;
    }

    ret = CRYPT_RNG_BlockGenerate(&mcRng, out, RANDOM_BYTE_SZ);
    if (ret != 0) {
        printf("mcapi rng block gen failed\n");
        return -1;
    }

    if (memcmp(in, out, RANDOM_BYTE_SZ) == 0) {
        printf("mcapi rng block gen output failed\n");
        return -1;
    }

    printf("rng         mcapi test passed\n");

    return 0;
}