diff options
author | bubbva <none@none> | 2008-08-03 21:51:49 -0700 |
---|---|---|
committer | bubbva <none@none> | 2008-08-03 21:51:49 -0700 |
commit | 552f0cf8c5eab159c1ae9b03d7038ce17e797a98 (patch) | |
tree | 6187d1d0884d5a97341e26d2a41336b59d6e6607 /usr/src | |
parent | 5672538156e1a508f11e549253657a3efd68bc79 (diff) | |
download | illumos-gate-552f0cf8c5eab159c1ae9b03d7038ce17e797a98.tar.gz |
6545046 pkcs11_softtoken doesn't properly strip pkcs7 padding
Contributed by Derek Morr <derekmorr@psu.edu>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c index 63bc9e10ed..7b912c68ce 100644 --- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c +++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c @@ -48,6 +48,7 @@ soft_remove_pkcs7_padding(CK_BYTE *pData, CK_ULONG padded_len, { CK_BYTE pad_value; + ulong_t i; pad_value = pData[padded_len - 1]; @@ -56,6 +57,10 @@ soft_remove_pkcs7_padding(CK_BYTE *pData, CK_ULONG padded_len, if ((pad_value == 0) || (pad_value > block_size)) return (CKR_ENCRYPTED_DATA_INVALID); + for (i = padded_len - pad_value; i < padded_len; i++) + if (pad_value != pData[i]) + return (CKR_ENCRYPTED_DATA_INVALID); + *pulDataLen = padded_len - pad_value; return (CKR_OK); } |