Skip to content

Commit dec61a0

Browse files
committed
Fixes to properly unstore removed objects and to properly re-index them without leaving stray store objects. Fixes to prevent malloc(0) with zero size. Fix for AES Keywrap and added tests.
1 parent eb36a02 commit dec61a0

File tree

11 files changed

+222
-159
lines changed

11 files changed

+222
-159
lines changed

.github/workflows/alpine-architecture-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
cd wolfssl-${{ matrix.alpine_arch }}
6666
./autogen.sh
6767
./configure --enable-cryptocb --enable-aescfb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt --enable-md5 --enable-sha224 --enable-sha3 \
68-
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT"
68+
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
6969
make
7070
shell: alpine.sh {0}
7171

.github/workflows/build-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
working-directory: ./wolfssl
3636
run: |
3737
./configure --enable-cryptocb --enable-aescfb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt --enable-md5 \
38-
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT"
38+
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
3939
- name: wolfssl make install
4040
working-directory: ./wolfssl
4141
run: make

.github/workflows/clang-tidy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
cd wolfssl
7171
./autogen.sh
7272
./configure --enable-cryptocb --enable-aescfb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt --enable-md5 \
73-
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT"
73+
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
7474
make -j$(nproc)
7575
sudo make install
7676
sudo ldconfig

.github/workflows/debian-package-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
working-directory: ./wolfssl
3535
run: |
3636
./configure --enable-cryptocb --enable-aescfb --enable-aesctr --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt --enable-md5 --enable-cmac \
37-
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB"
37+
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
3838
- name: wolfssl make and install
3939
working-directory: ./wolfssl
4040
run: |

.github/workflows/sanitizer-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ jobs:
7373
;;
7474
esac
7575
./configure --enable-cryptocb --enable-aescfb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt --enable-md5 --enable-debug \
76-
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT"
76+
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
7777
- name: wolfssl make
7878
working-directory: ./wolfssl
7979
run: |

.github/workflows/wolfssl-v5.6.6-build-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
working-directory: ./wolfssl
5757
run: |
5858
./configure --enable-cryptocb --enable-aescfb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt \
59-
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT"
59+
C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
6060
- name: wolfssl make install
6161
if: steps.cache-wolfssl.outputs.cache-hit != 'true'
6262
working-directory: ./wolfssl

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Build wolfSSL:
1313
git clone https://github.com/wolfSSL/wolfssl.git
1414
cd wolfssl
1515
./autogen.sh
16-
./configure --enable-aescfb --enable-cryptocb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT"
16+
./configure --enable-aescfb --enable-cryptocb --enable-rsapss --enable-keygen --enable-pwdbased --enable-scrypt C_EXTRA_FLAGS="-DWOLFSSL_PUBLIC_MP -DWC_RSA_DIRECT -DHAVE_AES_ECB -DHAVE_AES_KEYWRAP"
1717
make
1818
make check
1919
sudo make install

src/crypto.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,9 @@ static CK_RV SetAttributeValue(WP11_Session* session, WP11_Object* obj,
660660
}
661661
ret = WP11_Object_SetAttr(obj, attr->type, (byte*)attr->pValue,
662662
attr->ulValueLen);
663-
if (ret == BAD_FUNC_ARG)
663+
if (ret == MEMORY_E)
664+
return CKR_DEVICE_MEMORY;
665+
else if (ret == BAD_FUNC_ARG)
664666
return CKR_ATTRIBUTE_VALUE_INVALID;
665667
else if (ret == BUFFER_E)
666668
return CKR_BUFFER_TOO_SMALL;
@@ -884,7 +886,8 @@ static CK_RV AddRSAPrivateKeyObject(WP11_Session* session,
884886
err_out:
885887
if (rv != CKR_OK) {
886888
if (*phKey != CK_INVALID_HANDLE) {
887-
WP11_Session_RemoveObject(session, privKeyObject);
889+
/* ignore return value, logged in function */
890+
(void)WP11_Session_RemoveObject(session, privKeyObject);
888891
*phKey = CK_INVALID_HANDLE;
889892
}
890893
if (privKeyObject != NULL) {
@@ -1050,7 +1053,8 @@ CK_RV C_CreateObject(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate,
10501053
}
10511054
rv = AddObject(session, object, pTemplate, ulCount, phObject);
10521055
if (rv != CKR_OK) {
1053-
WP11_Session_RemoveObject(session, object);
1056+
/* ignore return value, logged in function */
1057+
(void)WP11_Session_RemoveObject(session, object);
10541058
WP11_Object_Free(object);
10551059
}
10561060

@@ -1232,10 +1236,9 @@ CK_RV C_DestroyObject(CK_SESSION_HANDLE hSession,
12321236
return rv;
12331237
}
12341238

1235-
WP11_Session_RemoveObject(session, obj);
1239+
rv = WP11_Session_RemoveObject(session, obj);
12361240
WP11_Object_Free(obj);
12371241

1238-
rv = CKR_OK;
12391242
WOLFPKCS11_LEAVE("C_DestroyObject", rv);
12401243
return rv;
12411244
}
@@ -6731,7 +6734,8 @@ CK_RV C_UnwrapKey(CK_SESSION_HANDLE hSession,
67316734
}
67326735
if (rv != CKR_OK) {
67336736
if (*phKey != CK_INVALID_HANDLE) {
6734-
WP11_Session_RemoveObject(session, keyObj);
6737+
/* ignore return value, logged in function */
6738+
(void)WP11_Session_RemoveObject(session, keyObj);
67356739
*phKey = CK_INVALID_HANDLE;
67366740
}
67376741
if (keyObj != NULL) {

0 commit comments

Comments
 (0)