@@ -938,6 +938,15 @@ static int wolfPKCS11_Store_GetMaxSize(int type, int variableSz)
938938 variableSz /* keyIdLen + labelLen + issuerLen + serialLen + subjectLen */
939939 ;
940940 break ;
941+ case WOLFPKCS11_STORE_DATA :
942+ maxSz =
943+ sizeof (word32 ) /* id */ +
944+ sizeof (word32 ) /* dataLen */ +
945+ sizeof (word32 ) /* applicationLen */ +
946+ sizeof (word32 ) /* objectIdLen */ +
947+ variableSz /* dataLen + applicationLen + objectIdLen */
948+ ;
949+ break ;
941950 case WOLFPKCS11_STORE_SYMMKEY :
942951 case WOLFPKCS11_STORE_RSAKEY_PRIV :
943952 case WOLFPKCS11_STORE_RSAKEY_PUB :
@@ -947,7 +956,6 @@ static int wolfPKCS11_Store_GetMaxSize(int type, int variableSz)
947956 case WOLFPKCS11_STORE_DHKEY_PUB :
948957 case WOLFPKCS11_STORE_CERT :
949958 case WOLFPKCS11_STORE_TRUST :
950- case WOLFPKCS11_STORE_DATA :
951959 maxSz = sizeof (word32 ) + variableSz ;
952960 break ;
953961
@@ -2624,61 +2632,30 @@ static int wp11_Object_Load_Data(WP11_Object* object, int tokenId, int objId)
26242632 ret = wp11_storage_open_readonly (WOLFPKCS11_STORE_DATA , tokenId , objId ,
26252633 & storage );
26262634 if (ret == 0 ) {
2627- /* Read data length and data. */
2628- ret = wp11_storage_read_word32 (storage ,
2629- & object -> data .genericData .dataLen );
2630- if (ret == 0 && object -> data .genericData .dataLen > 0 ) {
2631- tempLen = (int )object -> data .genericData .dataLen ;
2632- ret = wp11_storage_read_alloc_array (storage ,
2633- & object -> data .genericData .data ,
2634- & tempLen );
2635- object -> data .genericData .dataLen = (word32 )tempLen ;
2636- }
2637- else if (ret == 0 ) {
2638- /* Ensure data is NULL when length is 0 */
2639- object -> data .genericData .data = NULL ;
2640- object -> data .genericData .dataLen = 0 ;
2641- }
2642-
2643- /* Read application length and application. */
2644- if (ret == 0 ) {
2645- ret = wp11_storage_read_word32 (storage ,
2646- & object -> data .genericData .applicationLen );
2647- }
2648- if (ret == 0 && object -> data .genericData .applicationLen > 0 ) {
2649- tempLen = (int )object -> data .genericData .applicationLen ;
2650- ret = wp11_storage_read_alloc_array (storage ,
2651- & object -> data .genericData .application ,
2652- & tempLen );
2653- object -> data .genericData .applicationLen = (word32 )tempLen ;
2654- }
2655- else if (ret == 0 ) {
2656- /* Ensure application is NULL when length is 0 */
2657- object -> data .genericData .application = NULL ;
2658- object -> data .genericData .applicationLen = 0 ;
2659- }
2635+ ret = wp11_storage_read_alloc_array (storage ,
2636+ & object -> data .genericData .data ,
2637+ & tempLen );
2638+ object -> data .genericData .dataLen = (word32 )tempLen ;
2639+ }
26602640
2661- /* Read object ID length and object ID. */
2662- if (ret == 0 ) {
2663- ret = wp11_storage_read_word32 (storage ,
2664- & object -> data .genericData .objectIdLen );
2665- }
2666- if (ret == 0 && object -> data .genericData .objectIdLen > 0 ) {
2667- tempLen = (int )object -> data .genericData .objectIdLen ;
2668- ret = wp11_storage_read_alloc_array (storage ,
2669- & object -> data .genericData .objectId ,
2670- & tempLen );
2671- object -> data .genericData .objectIdLen = (word32 )tempLen ;
2672- }
2673- else if (ret == 0 ) {
2674- /* Ensure objectId is NULL when length is 0 */
2675- object -> data .genericData .objectId = NULL ;
2676- object -> data .genericData .objectIdLen = 0 ;
2677- }
2641+ /* Read application length and application. */
2642+ if (ret == 0 ) {
2643+ ret = wp11_storage_read_alloc_array (storage ,
2644+ & object -> data .genericData .application ,
2645+ & tempLen );
2646+ object -> data .genericData .applicationLen = (word32 )tempLen ;
2647+ }
26782648
2679- wp11_storage_close (storage );
2649+ /* Read object ID length and object ID. */
2650+ if (ret == 0 ) {
2651+ ret = wp11_storage_read_alloc_array (storage ,
2652+ & object -> data .genericData .objectId ,
2653+ & tempLen );
2654+ object -> data .genericData .objectIdLen = (word32 )tempLen ;
26802655 }
26812656
2657+ wp11_storage_close (storage );
2658+
26822659 return ret ;
26832660}
26842661
@@ -3164,44 +3141,36 @@ static int wp11_Object_Store_Data(WP11_Object* object, int tokenId, int objId)
31643141 int ret ;
31653142 void * storage = NULL ;
31663143
3144+ int variableSz = (object -> data .genericData .dataLen +
3145+ object -> data .genericData .applicationLen +
3146+ object -> data .genericData .objectIdLen );
3147+
31673148 /* Open access to data. */
31683149 ret = wp11_storage_open (WOLFPKCS11_STORE_DATA , tokenId , objId ,
3169- sizeof (WP11_GenericData ), & storage );
3150+ variableSz , & storage );
3151+ /* Write data length and data. */
31703152 if (ret == 0 ) {
3171- /* Write data length and data. */
3172- ret = wp11_storage_write_word32 ( storage ,
3153+ ret = wp11_storage_write_array ( storage ,
3154+ object -> data . genericData . data ,
31733155 object -> data .genericData .dataLen );
3174- if (ret == 0 && object -> data .genericData .dataLen > 0 ) {
3175- ret = wp11_storage_write_array (storage ,
3176- object -> data .genericData .data ,
3177- object -> data .genericData .dataLen );
3178- }
3156+ }
31793157
3180- /* Write application length and application. */
3181- if (ret == 0 ) {
3182- ret = wp11_storage_write_word32 (storage ,
3183- object -> data .genericData .applicationLen );
3184- }
3185- if (ret == 0 && object -> data .genericData .applicationLen > 0 ) {
3186- ret = wp11_storage_write_array (storage ,
3187- object -> data .genericData .application ,
3188- object -> data .genericData .applicationLen );
3189- }
3158+ /* Write application length and application. */
3159+ if (ret == 0 ) {
3160+ ret = wp11_storage_write_array (storage ,
3161+ object -> data .genericData .application ,
3162+ object -> data .genericData .applicationLen );
3163+ }
31903164
31913165 /* Write object ID length and object ID. */
3192- if (ret == 0 ) {
3193- ret = wp11_storage_write_word32 (storage ,
3194- object -> data .genericData .objectIdLen );
3195- }
3196- if (ret == 0 && object -> data .genericData .objectIdLen > 0 ) {
3197- ret = wp11_storage_write_array (storage ,
3198- object -> data .genericData .objectId ,
3199- object -> data .genericData .objectIdLen );
3200- }
3201-
3202- wp11_storage_close (storage );
3166+ if (ret == 0 ) {
3167+ ret = wp11_storage_write_array (storage ,
3168+ object -> data .genericData .objectId ,
3169+ object -> data .genericData .objectIdLen );
32033170 }
32043171
3172+ wp11_storage_close (storage );
3173+
32053174 return ret ;
32063175}
32073176
0 commit comments