X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=bcal%2Fkeysize_descriptor.c;h=579ef56d9f24bb2e183a8e064d40acf4fb8f45b5;hb=81c98b45262853b709240ff11457c2240b1d5e32;hp=8ffb06f7eb55928d763b92725605d83b8b504036;hpb=d70d1d77bab1a5f5278227d674bc59da0378fe15;p=arm-crypto-lib.git diff --git a/bcal/keysize_descriptor.c b/bcal/keysize_descriptor.c index 8ffb06f..579ef56 100644 --- a/bcal/keysize_descriptor.c +++ b/bcal/keysize_descriptor.c @@ -1,7 +1,7 @@ /* keysize_descriptor.c */ /* This file is part of the ARM-Crypto-Lib. - Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de) + Copyright (C) 2009 Daniel Otte (daniel.otte@rub.de) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,6 +25,7 @@ */ #include +#include #include "keysize_descriptor.h" uint8_t is_valid_keysize_P(const void* ks_desc, uint16_t keysize){ @@ -77,11 +78,84 @@ uint16_t get_keysize(const void* ks_desc){ uint8_t type; uint16_t keysize; type = *((uint8_t*)ks_desc); - if(type==KS_TYPE_LIST) + if(type==KS_TYPE_LIST){ ks_desc = (uint8_t*)ks_desc + 1; + } ks_desc = (uint8_t*)ks_desc + 1; - keysize = *((uint16_t*)ks_desc); + keysize = *((uint8_t*)ks_desc); return keysize; } - +uint16_t get_keysizes(const void* ks_desc, uint16_t** list){ + uint8_t type; + uint16_t items; + uint8_t i; + type = *((uint8_t*)ks_desc); + ks_desc = (uint8_t*)ks_desc + 1; + if(type==KS_TYPE_LIST){ + items = *((uint8_t*)ks_desc); + ks_desc = (uint8_t*)ks_desc + 1; + if(!*list){ + *list = malloc(items*2); + if(!*list){ + return 0; + } + } + for(i=0; i