diff options
Diffstat (limited to 'pkcs11-helper.c')
-rw-r--r-- | pkcs11-helper.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/pkcs11-helper.c b/pkcs11-helper.c index 111dbdb..c6ef79d 100644 --- a/pkcs11-helper.c +++ b/pkcs11-helper.c @@ -2,6 +2,28 @@ * Copyright (c) 2005-2006 Alon Bar-Lev <alon.barlev@gmail.com> * All rights reserved. * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, or the OpenIB.org BSD license. + * + * GNU General Public License (GPL) Version 2 + * =========================================== + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see the file COPYING[.GPL2] included with this + * distribution); if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * OpenIB.org BSD license + * ======================= * Redistribution and use in source and binary forms, with or without modifi- * cation, are permitted provided that the following conditions are met: * @@ -55,6 +77,12 @@ # endif #endif +#if OPENSSL_VERSION_NUMBER < 0x00907000L +#if !defined(RSA_PKCS1_PADDING_SIZE) +#define RSA_PKCS1_PADDING_SIZE 11 +#endif +#endif + #define PKCS11H_INVALID_SLOT_ID ((CK_SLOT_ID)-1) #define PKCS11H_INVALID_SESSION_HANDLE ((CK_SESSION_HANDLE)-1) #define PKCS11H_INVALID_OBJECT_HANDLE ((CK_OBJECT_HANDLE)-1) @@ -2415,6 +2443,9 @@ _pkcs11h_getObjectAttributes ( if (attrs[i].ulValueLen == (CK_ULONG)-1) { rv = CKR_ATTRIBUTE_VALUE_INVALID; } + else if (attrs[i].ulValueLen == 0) { + attrs[i].pValue = NULL; + } else { rv = _pkcs11h_malloc ( (void *)&attrs[i].pValue, @@ -2890,7 +2921,7 @@ _pkcs11h_releaseSession ( PKCS11H_DEBUG ( PKCS11H_LOG_DEBUG2, - "PKCS#11: _pkcs11h_releaseSession session=%p", + "PKCS#11: _pkcs11h_releaseSession entry session=%p", (void *)session ); @@ -6832,6 +6863,10 @@ pkcs11h_locate_certificate ( if (!strcmp (szIdType, "id")) { certificate_id->attrCKA_ID_size = strlen (szId)/2; + if (certificate_id->attrCKA_ID_size == 0) { + rv = CKR_FUNCTION_FAILED; + } + if ( rv == CKR_OK && (rv = _pkcs11h_malloc ( |