@@ -937,6 +937,15 @@ static int wolfPKCS11_Store_GetMaxSize(int type, int variableSz)
937937 variableSz /* keyIdLen + labelLen + issuerLen + serialLen + subjectLen */
938938 ;
939939 break ;
940+ case WOLFPKCS11_STORE_DATA :
941+ maxSz =
942+ sizeof (word32 ) /* id */ +
943+ sizeof (word32 ) /* dataLen */ +
944+ sizeof (word32 ) /* applicationLen */ +
945+ sizeof (word32 ) /* objectIdLen */ +
946+ variableSz /* dataLen + applicationLen + objectIdLen */
947+ ;
948+ break ;
940949 case WOLFPKCS11_STORE_SYMMKEY :
941950 case WOLFPKCS11_STORE_RSAKEY_PRIV :
942951 case WOLFPKCS11_STORE_RSAKEY_PUB :
@@ -946,7 +955,6 @@ static int wolfPKCS11_Store_GetMaxSize(int type, int variableSz)
946955 case WOLFPKCS11_STORE_DHKEY_PUB :
947956 case WOLFPKCS11_STORE_CERT :
948957 case WOLFPKCS11_STORE_TRUST :
949- case WOLFPKCS11_STORE_DATA :
950958 maxSz = sizeof (word32 ) + variableSz ;
951959 break ;
952960
@@ -2421,61 +2429,30 @@ static int wp11_Object_Load_Data(WP11_Object* object, int tokenId, int objId)
24212429 ret = wp11_storage_open_readonly (WOLFPKCS11_STORE_DATA , tokenId , objId ,
24222430 & storage );
24232431 if (ret == 0 ) {
2424- /* Read data length and data. */
2425- ret = wp11_storage_read_word32 (storage ,
2426- & object -> data .genericData .dataLen );
2427- if (ret == 0 && object -> data .genericData .dataLen > 0 ) {
2428- tempLen = (int )object -> data .genericData .dataLen ;
2429- ret = wp11_storage_read_alloc_array (storage ,
2430- & object -> data .genericData .data ,
2431- & tempLen );
2432- object -> data .genericData .dataLen = (word32 )tempLen ;
2433- }
2434- else if (ret == 0 ) {
2435- /* Ensure data is NULL when length is 0 */
2436- object -> data .genericData .data = NULL ;
2437- object -> data .genericData .dataLen = 0 ;
2438- }
2439-
2440- /* Read application length and application. */
2441- if (ret == 0 ) {
2442- ret = wp11_storage_read_word32 (storage ,
2443- & object -> data .genericData .applicationLen );
2444- }
2445- if (ret == 0 && object -> data .genericData .applicationLen > 0 ) {
2446- tempLen = (int )object -> data .genericData .applicationLen ;
2447- ret = wp11_storage_read_alloc_array (storage ,
2448- & object -> data .genericData .application ,
2449- & tempLen );
2450- object -> data .genericData .applicationLen = (word32 )tempLen ;
2451- }
2452- else if (ret == 0 ) {
2453- /* Ensure application is NULL when length is 0 */
2454- object -> data .genericData .application = NULL ;
2455- object -> data .genericData .applicationLen = 0 ;
2456- }
2432+ ret = wp11_storage_read_alloc_array (storage ,
2433+ & object -> data .genericData .data ,
2434+ & tempLen );
2435+ object -> data .genericData .dataLen = (word32 )tempLen ;
2436+ }
24572437
2458- /* Read object ID length and object ID. */
2459- if (ret == 0 ) {
2460- ret = wp11_storage_read_word32 (storage ,
2461- & object -> data .genericData .objectIdLen );
2462- }
2463- if (ret == 0 && object -> data .genericData .objectIdLen > 0 ) {
2464- tempLen = (int )object -> data .genericData .objectIdLen ;
2465- ret = wp11_storage_read_alloc_array (storage ,
2466- & object -> data .genericData .objectId ,
2467- & tempLen );
2468- object -> data .genericData .objectIdLen = (word32 )tempLen ;
2469- }
2470- else if (ret == 0 ) {
2471- /* Ensure objectId is NULL when length is 0 */
2472- object -> data .genericData .objectId = NULL ;
2473- object -> data .genericData .objectIdLen = 0 ;
2474- }
2438+ /* Read application length and application. */
2439+ if (ret == 0 ) {
2440+ ret = wp11_storage_read_alloc_array (storage ,
2441+ & object -> data .genericData .application ,
2442+ & tempLen );
2443+ object -> data .genericData .applicationLen = (word32 )tempLen ;
2444+ }
24752445
2476- wp11_storage_close (storage );
2446+ /* Read object ID length and object ID. */
2447+ if (ret == 0 ) {
2448+ ret = wp11_storage_read_alloc_array (storage ,
2449+ & object -> data .genericData .objectId ,
2450+ & tempLen );
2451+ object -> data .genericData .objectIdLen = (word32 )tempLen ;
24772452 }
24782453
2454+ wp11_storage_close (storage );
2455+
24792456 return ret ;
24802457}
24812458
@@ -2946,44 +2923,36 @@ static int wp11_Object_Store_Data(WP11_Object* object, int tokenId, int objId)
29462923 int ret ;
29472924 void * storage = NULL ;
29482925
2926+ int variableSz = (object -> data .genericData .dataLen +
2927+ object -> data .genericData .applicationLen +
2928+ object -> data .genericData .objectIdLen );
2929+
29492930 /* Open access to data. */
29502931 ret = wp11_storage_open (WOLFPKCS11_STORE_DATA , tokenId , objId ,
2951- sizeof (WP11_GenericData ), & storage );
2932+ variableSz , & storage );
2933+ /* Write data length and data. */
29522934 if (ret == 0 ) {
2953- /* Write data length and data. */
2954- ret = wp11_storage_write_word32 ( storage ,
2935+ ret = wp11_storage_write_array ( storage ,
2936+ object -> data . genericData . data ,
29552937 object -> data .genericData .dataLen );
2956- if (ret == 0 && object -> data .genericData .dataLen > 0 ) {
2957- ret = wp11_storage_write_array (storage ,
2958- object -> data .genericData .data ,
2959- object -> data .genericData .dataLen );
2960- }
2938+ }
29612939
2962- /* Write application length and application. */
2963- if (ret == 0 ) {
2964- ret = wp11_storage_write_word32 (storage ,
2965- object -> data .genericData .applicationLen );
2966- }
2967- if (ret == 0 && object -> data .genericData .applicationLen > 0 ) {
2968- ret = wp11_storage_write_array (storage ,
2969- object -> data .genericData .application ,
2970- object -> data .genericData .applicationLen );
2971- }
2940+ /* Write application length and application. */
2941+ if (ret == 0 ) {
2942+ ret = wp11_storage_write_array (storage ,
2943+ object -> data .genericData .application ,
2944+ object -> data .genericData .applicationLen );
2945+ }
29722946
29732947 /* Write object ID length and object ID. */
2974- if (ret == 0 ) {
2975- ret = wp11_storage_write_word32 (storage ,
2976- object -> data .genericData .objectIdLen );
2977- }
2978- if (ret == 0 && object -> data .genericData .objectIdLen > 0 ) {
2979- ret = wp11_storage_write_array (storage ,
2980- object -> data .genericData .objectId ,
2981- object -> data .genericData .objectIdLen );
2982- }
2983-
2984- wp11_storage_close (storage );
2948+ if (ret == 0 ) {
2949+ ret = wp11_storage_write_array (storage ,
2950+ object -> data .genericData .objectId ,
2951+ object -> data .genericData .objectIdLen );
29852952 }
29862953
2954+ wp11_storage_close (storage );
2955+
29872956 return ret ;
29882957}
29892958
0 commit comments