X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=prf_tls12%2Fprf_tls12.c;h=1fb9b728227a3513fa913ce106ffbb45584280df;hb=3edc70ba3f2306ec503fb5e99858d28659dcac65;hp=8b84d5210db7e868ae1f40a14e3a76b2f82ea6b2;hpb=b9d6e1eb867eaa431c4c555a7409342805fa2706;p=arm-crypto-lib.git diff --git a/prf_tls12/prf_tls12.c b/prf_tls12/prf_tls12.c index 8b84d52..1fb9b72 100644 --- a/prf_tls12/prf_tls12.c +++ b/prf_tls12/prf_tls12.c @@ -70,9 +70,9 @@ #include #include #include -#include -#include -#include +#include "hashfunction_descriptor.h" +#include "hfal-basic.h" +#include "hfal-hmac.h" #include "prf_tls12.h" uint8_t prf_tls12_init(prf_tls12_ctx_t* ctx, const hfdesc_t* hash, @@ -133,3 +133,21 @@ uint8_t prf_tls12_next(void* dest, prf_tls12_ctx_t* ctx){ return 0; } +uint8_t prf_tls12_fill(void* dest, uint16_t length_B, prf_tls12_ctx_t* ctx){ + uint16_t bs = ctx->blocklength_b/8; + while(length_B>=bs){ + if(prf_tls12_next(dest, ctx)){ + return 1; + } + length_B -= bs; + dest = (uint8_t*)dest + bs; + } + if(length_B){ + uint8_t buffer[bs]; + if(prf_tls12_next(buffer, ctx)){ + return 2; + } + memcpy(dest, buffer, length_B); + } + return 0; +}