コード例 #1
0
ファイル: sha_alt_hw.c プロジェクト: dinau/mbed
void mbedtls_sha1_hw_starts(crypto_sha_context *ctx)
{
    // NOTE: mbedtls may call mbedtls_shaXXX_starts multiple times and then call the ending mbedtls_shaXXX_finish. Guard from it.
    CRPT->SHA_CTL |= CRPT_SHA_CTL_STOP_Msk;
    
    ctx->total = 0;
    ctx->buffer_left = 0;
    ctx->blocksize = 64;
    ctx->blocksize_mask = 0x3F;

    SHA_Open(SHA_MODE_SHA1, SHA_NO_SWAP);
    
    // Ensure we have correct initial inernal states in SHA_DGST registers even though SHA H/W is not actually started.
    CRPT->SHA_CTL |= CRPT_SHA_CTL_START_Msk;
    
    return;
}
コード例 #2
0
ファイル: sha_alt_hw.c プロジェクト: Archcady/mbed-os
void mbedtls_sha512_hw_starts( crypto_sha_context *ctx, int is384)
{
    // NOTE: mbedtls may call mbedtls_shaXXX_starts multiple times and then call the ending mbedtls_shaXXX_finish. Guard from it.
    CRPT->HMAC_CTL |= CRPT_HMAC_CTL_STOP_Msk;
     
    ctx->total = 0;
    ctx->buffer_left = 0;
    ctx->blocksize = 128;
    ctx->blocksize_mask = 0x7F;
    ctx->is224_384 = is384;

    SHA_Open(is384 ? SHA_MODE_SHA384 : SHA_MODE_SHA512, SHA_NO_SWAP, 0);
    
    // Ensure we have correct initial inernal states in SHA_DGST registers even though SHA H/W is not actually started.
    CRPT->HMAC_CTL |= CRPT_HMAC_CTL_START_Msk;
    
    return;
}