]> git.cryptolib.org Git - arm-crypto-lib.git/commitdiff
now with function
authorbg <daniel.otte@rub.de>
Fri, 7 Oct 2011 03:11:07 +0000 (05:11 +0200)
committerbg <daniel.otte@rub.de>
Fri, 7 Oct 2011 03:11:07 +0000 (05:11 +0200)
prf_tls12/prf_tls12.c
prf_tls12/prf_tls12.h
test_src/main-prf_tls12-test.c

index 8b84d5210db7e868ae1f40a14e3a76b2f82ea6b2..d88ab70cf5dd155caa478d3dd9846ea2f8ce8a6d 100644 (file)
@@ -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;
+}
index 759580d3adaffb7464b442cbf28e060ddf58f383..dbd6938b3251c1b0d761f2c6fddc737ecc7a82b8 100644 (file)
@@ -43,6 +43,7 @@ uint8_t prf_tls12_init_w_label(prf_tls12_ctx_t* ctx, const hfdesc_t* hash,
 
 void prf_tls12_free(prf_tls12_ctx_t* ctx);
 uint8_t prf_tls12_next(void* dest, prf_tls12_ctx_t* ctx);
+uint8_t prf_tls12_fill(void* dest, uint16_t length_B, prf_tls12_ctx_t* ctx);
 
 
 #endif /* PRF_TLS12_H_ */
index 4da039e886fee7f6081db7792e8ac74cfb551c83..b97d8ea804dca6dc5b5681fd4d9de4a37a0b7613 100644 (file)
@@ -76,17 +76,13 @@ const char test_label[] = "test label";
 
 void test_prf(const hfdesc_t* hash){
        prf_tls12_ctx_t ctx;
+       uint8_t buffer[100];
        prf_tls12_init_w_label(&ctx, hash, test_secret, 16*8, test_label, strlen(test_label), test_seed, 16*8);
-       uint8_t buffer[ctx.blocklength_b/8];
-       uint16_t i=0;
        cli_putstr("\r\n== Testing PRF-TLSv1.2 with ");
        cli_putstr(hash->name);
        cli_putstr(" ==\r\n");
-       do{
-               prf_tls12_next(buffer, &ctx);
-               cli_hexdump_block(buffer, ctx.blocklength_b/8, 4, 8);
-               i += ctx.blocklength_b/8;
-       }while(i<100);
+       prf_tls12_fill(buffer, 100, &ctx);
+       cli_hexdump_block(buffer, 100, 4, 8);
        prf_tls12_free(&ctx);
 }