зеркало из https://github.com/mozilla/pjs.git
Multiple changes to get the cryptoki framework and builtin-object
module working: 1) C_GetFunctionList is always present; 2) fwObject and fwSession now remember their handles on behalf of the fwInstance; 3) fwSessions are created before mdSessions, so the mdSession can use the fwSession's arena; 4) finished implementing findObjects; 5) builtin constants are in network byte order; 6) libnssckbi.so knows about and can pull in its dependencies (e.g. libnssckfw.so, libnssb.so, and NSPR).
This commit is contained in:
Родитель
4bff05d655
Коммит
de87428c74
|
@ -31,7 +31,7 @@
|
|||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
my $cvs_id = '@(#) $RCSfile: certdata.perl,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:47 $ $Name: $';
|
||||
my $cvs_id = '@(#) $RCSfile: certdata.perl,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:32:33 $ $Name: $';
|
||||
use strict;
|
||||
|
||||
my %constants;
|
||||
|
@ -41,7 +41,7 @@ my @objects = ();
|
|||
my @objsize;
|
||||
my $cvsid;
|
||||
|
||||
$constants{CKO_DATA} = "static const CK_OBJECT_CLASS cko_data = CKO_DATA;\n";
|
||||
$constants{CKO_DATA} = "static const CK_OBJECT_CLASS cko_data = HTONL(CKO_DATA);\n";
|
||||
$constants{CK_TRUE} = "static const CK_BBOOL ck_true = CK_TRUE;\n";
|
||||
$constants{CK_FALSE} = "static const CK_BBOOL ck_false = CK_FALSE;\n";
|
||||
|
||||
|
@ -117,6 +117,8 @@ while(<>) {
|
|||
if( $fields[1] =~ /^CK_/ ) {
|
||||
my $lcv = $fields[2];
|
||||
$lcv =~ tr/A-Z/a-z/;
|
||||
$lcv =~ s/[hn]to[nh][ls]\(//;
|
||||
$lcv =~ s/\)//;
|
||||
if( !defined($constants{$fields[2]}) ) {
|
||||
$constants{$fields[2]} = "static const $fields[1] $lcv = $fields[2];\n";
|
||||
}
|
||||
|
@ -201,6 +203,19 @@ static const char CVS_ID[] = $cvsid;
|
|||
#include "builtins.h"
|
||||
#endif /* BUILTINS_H */
|
||||
|
||||
#if IS_BIG_ENDIAN
|
||||
#define HTONS(x) (x)
|
||||
#define HTONL(x) (x)
|
||||
#endif
|
||||
|
||||
#if IS_LITTLE_ENDIAN
|
||||
#define HTONS(x) ((((x)<<8)&0xff00)|(((x)>>8)&0x00ff))
|
||||
#define HTONL(x) ((((x)<<24)&0xff000000)|(((x)<<8)&0x00ff0000)|(((x)>>8)&0x0000ff00)|(((x)>>24)&0x000000ff))
|
||||
#endif
|
||||
|
||||
#define NTOHS(x) HTONS(x)
|
||||
#define NTOHL(x) HTONL(x)
|
||||
|
||||
EOD
|
||||
;
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
CVS_ID "@(#) $RCSfile: certdata.txt,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:48 $ $Name: $"
|
||||
CVS_ID "@(#) $RCSfile: certdata.txt,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:32:38 $ $Name: $"
|
||||
|
||||
#
|
||||
# certdata.txt
|
||||
|
@ -86,14 +86,19 @@ CVS_ID "@(#) $RCSfile: certdata.txt,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43
|
|||
# (other trust attributes can be defined)
|
||||
#
|
||||
|
||||
#
|
||||
# I wish the perl script were smart enough to know the lengths of constants,
|
||||
# so it could deduce when to do the HTONL/HTONS stuff.
|
||||
#
|
||||
|
||||
BEGINDATA
|
||||
|
||||
CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
|
||||
CKA_CLASS CK_OBJECT_CLASS HTONL(CKO_CERTIFICATE)
|
||||
CKA_TOKEN CK_BBOOL CK_TRUE
|
||||
CKA_PRIVATE CK_BBOOL CK_FALSE
|
||||
CKA_MODIFIABLE CK_BBOOL CK_FALSE
|
||||
CKA_LABEL UTF8 "Test certificate #3"
|
||||
CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
|
||||
CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE HTONL(CKC_X_509)
|
||||
CKA_SUBJECT MULTILINE_OCTAL
|
||||
\060\201\243\061\013\060\011\006\003\125\004\006\023\002\125\123
|
||||
\061\013\060\011\006\003\125\004\010\023\002\103\101\061\023\060
|
||||
|
@ -119,7 +124,7 @@ CKA_VALUE MULTILINE_OCTAL
|
|||
\0
|
||||
END
|
||||
|
||||
CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
|
||||
CKA_CLASS CK_OBJECT_CLASS HTONL(CKO_NETSCAPE_TRUST)
|
||||
CKA_TOKEN CK_BBOOL CK_TRUE
|
||||
CKA_PRIVATE CK_BBOOL CK_FALSE
|
||||
CKA_MODIFIABLE CK_BBOOL CK_FALSE
|
||||
|
@ -131,13 +136,13 @@ CKA_ISSUER MULTILINE_OCTAL
|
|||
\164\151\143\040\111\111
|
||||
END
|
||||
CKA_SERIAL_NUMBER OCTAL \001\276
|
||||
CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED
|
||||
CKA_TRUST_CLIENT_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED
|
||||
CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED
|
||||
CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED
|
||||
CKA_TRUST_DIGITAL_SIGNATURE CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
|
||||
CKA_TRUST_NON_REPUDIATION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
|
||||
CKA_TRUST_KEY_ENCIPHERMENT CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
|
||||
CKA_TRUST_DATA_ENCIPHERMENT CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
|
||||
CKA_TRUST_KEY_AGREEMENT CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
|
||||
CKA_TRUST_KEY_CERT_SIGN CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
|
||||
CKA_TRUST_SERVER_AUTH CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED)
|
||||
CKA_TRUST_CLIENT_AUTH CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED)
|
||||
CKA_TRUST_EMAIL_PROTECTION CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED)
|
||||
CKA_TRUST_CODE_SIGNING CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED)
|
||||
CKA_TRUST_DIGITAL_SIGNATURE CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED_DELEGATOR)
|
||||
CKA_TRUST_NON_REPUDIATION CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED_DELEGATOR)
|
||||
CKA_TRUST_KEY_ENCIPHERMENT CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED_DELEGATOR)
|
||||
CKA_TRUST_DATA_ENCIPHERMENT CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED_DELEGATOR)
|
||||
CKA_TRUST_KEY_AGREEMENT CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED_DELEGATOR)
|
||||
CKA_TRUST_KEY_CERT_SIGN CK_TRUST HTONL(CKT_NETSCAPE_TRUSTED_DELEGATOR)
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: constants.c,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:49 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: constants.c,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:32:38 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -76,6 +76,7 @@ nss_builtins_TokenLabel = "Builtin Object Token";
|
|||
NSS_IMPLEMENT_DATA const NSSUTF8 *
|
||||
nss_builtins_TokenModel = "1";
|
||||
|
||||
/* should this be e.g. the certdata.txt RCS revision number? */
|
||||
NSS_IMPLEMENT_DATA const NSSUTF8 *
|
||||
nss_builtins_TokenSerialNumber = "1";
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
MANIFEST_CVS_ID = "@(#) $RCSfile: manifest.mn,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:49 $ $Name: $"
|
||||
MANIFEST_CVS_ID = "@(#) $RCSfile: manifest.mn,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:32:38 $ $Name: $"
|
||||
|
||||
CORE_DEPTH = ../../../..
|
||||
|
||||
|
@ -51,3 +51,5 @@ CSRCS = \
|
|||
REQUIRES = security nspr
|
||||
|
||||
LIBRARY_NAME = nssckbi
|
||||
|
||||
EXTRA_SHARED_LIBS = -L$(DIST)/lib -lnssckfw -lnssb -lnspr4 -lplc4 -lplds4
|
|
@ -31,7 +31,7 @@
|
|||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
$cvs_id = '@(#) $RCSfile: ckapi.perl,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:10 $ $Name: $';
|
||||
$cvs_id = '@(#) $RCSfile: ckapi.perl,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:31:42 $ $Name: $';
|
||||
|
||||
$copyright = '/* THIS IS A GENERATED FILE */
|
||||
/*
|
||||
|
@ -477,7 +477,7 @@ __ADJOIN(MODULE_NAME,C_GetFunctionList)
|
|||
return CKR_OK;
|
||||
}
|
||||
|
||||
#ifdef DECLARE_STRICT_CRYPTOKI_NAMES
|
||||
/* This one is always present */
|
||||
CK_RV CK_ENTRY
|
||||
C_GetFunctionList
|
||||
(
|
||||
|
@ -486,7 +486,6 @@ C_GetFunctionList
|
|||
{
|
||||
return __ADJOIN(MODULE_NAME,C_GetFunctionList)(ppFunctionList);
|
||||
}
|
||||
#endif /* DECLARE_STRICT_CRYPTOKI_NAMES */
|
||||
|
||||
#undef __ADJOIN
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#define CKFW_H
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CKFW_CVS_ID[] = "@(#) $RCSfile: ckfw.h,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:11 $ $Name: $";
|
||||
static const char CKFW_CVS_ID[] = "@(#) $RCSfile: ckfw.h,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:31:45 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -82,6 +82,7 @@ static const char CKFW_CVS_ID[] = "@(#) $RCSfile: ckfw.h,v $ $Revision: 1.1 $ $D
|
|||
* nssCKFWInstance_CreateObjectHandle
|
||||
* nssCKFWInstance_ResolveObjectHandle
|
||||
* nssCKFWInstance_DestroyObjectHandle
|
||||
* nssCKFWInstance_FindObjectHandle
|
||||
*
|
||||
* -- module fronts --
|
||||
* nssCKFWInstance_GetNSlots
|
||||
|
@ -275,6 +276,17 @@ nssCKFWInstance_DestroyObjectHandle
|
|||
CK_OBJECT_HANDLE hObject
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWInstance_FindObjectHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_OBJECT_HANDLE
|
||||
nssCKFWInstance_FindObjectHandle
|
||||
(
|
||||
NSSCKFWInstance *fwInstance,
|
||||
NSSCKFWObject *fwObject
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWInstance_GetNSlots
|
||||
*
|
||||
|
@ -1190,6 +1202,9 @@ nssCKFWMechanism_GetInHardware
|
|||
* nssCKFWSession_GetSessionState
|
||||
* nssCKFWSession_SetFWFindObjects
|
||||
* nssCKFWSession_GetFWFindObjects
|
||||
* nssCKFWSession_SetMDSession
|
||||
* nssCKFWSession_SetHandle
|
||||
* nssCKFWSession_GetHandle
|
||||
*
|
||||
* -- module fronts --
|
||||
* nssCKFWSession_GetDeviceError
|
||||
|
@ -1215,7 +1230,6 @@ NSS_EXTERN NSSCKFWSession *
|
|||
nssCKFWSession_Create
|
||||
(
|
||||
NSSCKFWToken *fwToken,
|
||||
NSSCKMDSession *mdSession,
|
||||
CK_BBOOL rw,
|
||||
CK_VOID_PTR pApplication,
|
||||
CK_NOTIFY Notify,
|
||||
|
@ -1327,6 +1341,38 @@ nssCKFWSession_GetFWFindObjects
|
|||
CK_RV *pError
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWSession_SetMDSession
|
||||
*
|
||||
*/
|
||||
NSS_EXTERN CK_RV
|
||||
nssCKFWSession_SetMDSession
|
||||
(
|
||||
NSSCKFWSession *fwSession,
|
||||
NSSCKMDSession *mdSession
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWSession_SetHandle
|
||||
*
|
||||
*/
|
||||
NSS_EXTERN CK_RV
|
||||
nssCKFWSession_SetHandle
|
||||
(
|
||||
NSSCKFWSession *fwSession,
|
||||
CK_SESSION_HANDLE hSession
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWSession_GetHandle
|
||||
*
|
||||
*/
|
||||
NSS_EXTERN CK_SESSION_HANDLE
|
||||
nssCKFWSession_GetHandle
|
||||
(
|
||||
NSSCKFWSession *fwSession
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWSession_GetDeviceError
|
||||
*
|
||||
|
@ -1492,6 +1538,8 @@ nssCKFWSession_GetRandom
|
|||
* nssCKFWObject_GetArena
|
||||
*
|
||||
* -- private accessors --
|
||||
* nssCKFWObject_SetHandle
|
||||
* nssCKFWObject_GetHandle
|
||||
*
|
||||
* -- module fronts --
|
||||
* nssCKFWObject_IsTokenObject
|
||||
|
@ -1559,6 +1607,27 @@ nssCKFWObject_GetArena
|
|||
CK_RV *pError
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWObject_SetHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_RV
|
||||
nssCKFWObject_SetHandle
|
||||
(
|
||||
NSSCKFWObject *fwObject,
|
||||
CK_OBJECT_HANDLE hObject
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWObject_GetHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_OBJECT_HANDLE
|
||||
nssCKFWObject_GetHandle
|
||||
(
|
||||
NSSCKFWObject *fwObject
|
||||
);
|
||||
|
||||
/*
|
||||
* nssCKFWObject_IsTokenObject
|
||||
*
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: instance.c,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:19 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: instance.c,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:31:49 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -132,7 +132,6 @@ struct NSSCKFWInstanceStr {
|
|||
|
||||
CK_ULONG lastSessionHandle;
|
||||
nssCKFWHash *sessionHandleHash;
|
||||
nssCKFWHash *sessionHandleReverseHash;
|
||||
|
||||
CK_ULONG lastObjectHandle;
|
||||
nssCKFWHash *objectHandleHash;
|
||||
|
@ -288,19 +287,13 @@ nssCKFWInstance_Create
|
|||
goto loser;
|
||||
}
|
||||
|
||||
fwInstance->sessionHandleReverseHash = nssCKFWHash_Create(fwInstance,
|
||||
fwInstance->arena, pError);
|
||||
if( (nssCKFWHash *)NULL == fwInstance->sessionHandleReverseHash ) {
|
||||
goto loser;
|
||||
}
|
||||
|
||||
fwInstance->objectHandleHash = nssCKFWHash_Create(fwInstance,
|
||||
fwInstance->arena, pError);
|
||||
if( (nssCKFWHash *)NULL == fwInstance->objectHandleHash ) {
|
||||
goto loser;
|
||||
}
|
||||
|
||||
if( (void *)NULL != (void *)mdInstance->GetSlots ) {
|
||||
if( (void *)NULL == (void *)mdInstance->GetSlots ) {
|
||||
/* That routine is required */
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
goto loser;
|
||||
|
@ -377,7 +370,9 @@ nssCKFWInstance_Destroy
|
|||
NSSCKFWInstance *fwInstance
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
CK_ULONG i;
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
|
@ -560,6 +555,14 @@ nssCKFWInstance_CreateSessionHandle
|
|||
}
|
||||
|
||||
hSession = ++(fwInstance->lastSessionHandle);
|
||||
|
||||
/* Alan would say I should unlock for this call. */
|
||||
|
||||
*pError = nssCKFWSession_SetHandle(fwSession, hSession);
|
||||
if( CKR_OK != *pError ) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
*pError = nssCKFWHash_Add(fwInstance->sessionHandleHash,
|
||||
(const void *)hSession, (const void *)fwSession);
|
||||
if( CKR_OK != *pError ) {
|
||||
|
@ -567,13 +570,6 @@ nssCKFWInstance_CreateSessionHandle
|
|||
goto done;
|
||||
}
|
||||
|
||||
*pError = nssCKFWHash_Add(fwInstance->sessionHandleReverseHash,
|
||||
(const void *)fwSession, (const void *)hSession);
|
||||
if( CKR_OK != *pError ) {
|
||||
nssCKFWHash_Remove(fwInstance->sessionHandleHash, (const void *)hSession);
|
||||
hSession = (CK_SESSION_HANDLE)0;
|
||||
}
|
||||
|
||||
done:
|
||||
nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
return hSession;
|
||||
|
@ -605,6 +601,8 @@ nssCKFWInstance_ResolveSessionHandle
|
|||
fwSession = (NSSCKFWSession *)nssCKFWHash_Lookup(
|
||||
fwInstance->sessionHandleHash, (const void *)hSession);
|
||||
|
||||
/* Assert(hSession == nssCKFWSession_GetHandle(fwSession)) */
|
||||
|
||||
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
|
||||
return fwSession;
|
||||
|
@ -637,7 +635,7 @@ nssCKFWInstance_DestroySessionHandle
|
|||
fwInstance->sessionHandleHash, (const void *)hSession);
|
||||
|
||||
nssCKFWHash_Remove(fwInstance->sessionHandleHash, (const void *)hSession);
|
||||
nssCKFWHash_Remove(fwInstance->sessionHandleReverseHash, (const void *)fwSession);
|
||||
nssCKFWSession_SetHandle(fwSession, (CK_SESSION_HANDLE)0);
|
||||
|
||||
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
|
||||
|
@ -655,24 +653,18 @@ nssCKFWInstance_FindSessionHandle
|
|||
NSSCKFWSession *fwSession
|
||||
)
|
||||
{
|
||||
CK_SESSION_HANDLE hSession;
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
if( CKR_OK != nssCKFWInstance_verifyPointer(fwInstance) ) {
|
||||
return (CK_SESSION_HANDLE)0;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( CKR_OK != nssCKFWMutex_Lock(fwInstance->mutex) ) {
|
||||
if( CKR_OK != nssCKFWSession_verifyPointer(fwSession) ) {
|
||||
return (CK_SESSION_HANDLE)0;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
hSession = (CK_SESSION_HANDLE)nssCKFWHash_Lookup(
|
||||
fwInstance->sessionHandleReverseHash, (const void *)fwSession);
|
||||
|
||||
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
|
||||
return hSession;
|
||||
return nssCKFWSession_GetHandle(fwSession);
|
||||
/* look it up and assert? */
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -706,6 +698,13 @@ nssCKFWInstance_CreateObjectHandle
|
|||
}
|
||||
|
||||
hObject = ++(fwInstance->lastObjectHandle);
|
||||
|
||||
*pError = nssCKFWObject_SetHandle(fwObject, hObject);
|
||||
if( CKR_OK != *pError ) {
|
||||
hObject = (CK_OBJECT_HANDLE)0;
|
||||
goto done;
|
||||
}
|
||||
|
||||
*pError = nssCKFWHash_Add(fwInstance->objectHandleHash,
|
||||
(const void *)hObject, (const void *)fwObject);
|
||||
if( CKR_OK != *pError ) {
|
||||
|
@ -744,6 +743,8 @@ nssCKFWInstance_ResolveObjectHandle
|
|||
fwObject = (NSSCKFWObject *)nssCKFWHash_Lookup(
|
||||
fwInstance->objectHandleHash, (const void *)hObject);
|
||||
|
||||
/* Assert(hObject == nssCKFWObject_GetHandle(fwObject)) */
|
||||
|
||||
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
return fwObject;
|
||||
}
|
||||
|
@ -761,6 +762,7 @@ nssCKFWInstance_ReassignObjectHandle
|
|||
)
|
||||
{
|
||||
CK_RV error = CKR_OK;
|
||||
NSSCKFWObject *oldObject;
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
error = nssCKFWInstance_verifyPointer(fwInstance);
|
||||
|
@ -774,10 +776,20 @@ nssCKFWInstance_ReassignObjectHandle
|
|||
return error;
|
||||
}
|
||||
|
||||
oldObject = (NSSCKFWObject *)nssCKFWHash_Lookup(
|
||||
fwInstance->objectHandleHash, (const void *)hObject);
|
||||
/* Assert(hObject == nssCKFWObject_GetHandle(oldObject) */
|
||||
(void)nssCKFWObject_SetHandle(oldObject, (CK_SESSION_HANDLE)0);
|
||||
nssCKFWHash_Remove(fwInstance->objectHandleHash, (const void *)hObject);
|
||||
|
||||
error = nssCKFWObject_SetHandle(fwObject, hObject);
|
||||
if( CKR_OK != error ) {
|
||||
goto done;
|
||||
}
|
||||
error = nssCKFWHash_Add(fwInstance->objectHandleHash,
|
||||
(const void *)hObject, (const void *)fwObject);
|
||||
|
||||
done:
|
||||
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
return error;
|
||||
}
|
||||
|
@ -807,13 +819,38 @@ nssCKFWInstance_DestroyObjectHandle
|
|||
|
||||
fwObject = (NSSCKFWObject *)nssCKFWHash_Lookup(
|
||||
fwInstance->objectHandleHash, (const void *)hObject);
|
||||
|
||||
/* Assert(hObject = nssCKFWObject_GetHandle(fwObject)) */
|
||||
nssCKFWHash_Remove(fwInstance->objectHandleHash, (const void *)hObject);
|
||||
(void)nssCKFWObject_SetHandle(fwObject, (CK_SESSION_HANDLE)0);
|
||||
|
||||
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWInstance_FindObjectHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_OBJECT_HANDLE
|
||||
nssCKFWInstance_FindObjectHandle
|
||||
(
|
||||
NSSCKFWInstance *fwInstance,
|
||||
NSSCKFWObject *fwObject
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
if( CKR_OK != nssCKFWInstance_verifyPointer(fwInstance) ) {
|
||||
return (CK_OBJECT_HANDLE)0;
|
||||
}
|
||||
|
||||
if( CKR_OK != nssCKFWObject_verifyPointer(fwObject) ) {
|
||||
return (CK_OBJECT_HANDLE)0;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
return nssCKFWObject_GetHandle(fwObject);
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWInstance_GetNSlots
|
||||
*
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: object.c,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:34 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: object.c,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:31:54 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -69,6 +69,8 @@ static const char CVS_ID[] = "@(#) $RCSfile: object.c,v $ $Revision: 1.1 $ $Date
|
|||
* nssCKFWObject_GetArena
|
||||
*
|
||||
* -- private accessors --
|
||||
* nssCKFWObject_SetHandle
|
||||
* nssCKFWObject_GetHandle
|
||||
*
|
||||
* -- module fronts --
|
||||
* nssCKFWObject_IsTokenObject
|
||||
|
@ -90,6 +92,7 @@ struct NSSCKFWObjectStr {
|
|||
NSSCKFWToken *fwToken;
|
||||
NSSCKMDInstance *mdInstance;
|
||||
NSSCKFWInstance *fwInstance;
|
||||
CK_OBJECT_HANDLE hObject;
|
||||
};
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -333,6 +336,56 @@ nssCKFWObject_GetArena
|
|||
return fwObject->arena;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWObject_SetHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_RV
|
||||
nssCKFWObject_SetHandle
|
||||
(
|
||||
NSSCKFWObject *fwObject,
|
||||
CK_OBJECT_HANDLE hObject
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
error = nssCKFWObject_verifyPointer(fwObject);
|
||||
if( CKR_OK != error ) {
|
||||
return error;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (CK_OBJECT_HANDLE)0 != fwObject->hObject ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
|
||||
fwObject->hObject = hObject;
|
||||
|
||||
return CKR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWObject_GetHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_OBJECT_HANDLE
|
||||
nssCKFWObject_GetHandle
|
||||
(
|
||||
NSSCKFWObject *fwObject
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
if( CKR_OK != nssCKFWObject_verifyPointer(fwObject) ) {
|
||||
return (CK_OBJECT_HANDLE)0;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
return fwObject->hObject;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWObject_IsTokenObject
|
||||
*
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: session.c,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:35 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: session.c,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:31:55 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -71,6 +71,9 @@ static const char CVS_ID[] = "@(#) $RCSfile: session.c,v $ $Revision: 1.1 $ $Dat
|
|||
* nssCKFWSession_GetSessionState
|
||||
* nssCKFWSession_SetFWFindObjects
|
||||
* nssCKFWSession_GetFWFindObjects
|
||||
* nssCKFWSession_SetMDSession
|
||||
* nssCKFWSession_SetHandle
|
||||
* nssCKFWSession_GetHandle
|
||||
*
|
||||
* -- module fronts --
|
||||
* nssCKFWSession_GetDeviceError
|
||||
|
@ -106,6 +109,7 @@ struct NSSCKFWSessionStr {
|
|||
|
||||
CK_BBOOL rw;
|
||||
NSSCKFWFindObjects *fwFindObjects;
|
||||
CK_SESSION_HANDLE hSession;
|
||||
};
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -157,7 +161,6 @@ NSS_IMPLEMENT NSSCKFWSession *
|
|||
nssCKFWSession_Create
|
||||
(
|
||||
NSSCKFWToken *fwToken,
|
||||
NSSCKMDSession *mdSession,
|
||||
CK_BBOOL rw,
|
||||
CK_VOID_PTR pApplication,
|
||||
CK_NOTIFY Notify,
|
||||
|
@ -192,7 +195,7 @@ nssCKFWSession_Create
|
|||
}
|
||||
|
||||
fwSession->arena = arena;
|
||||
fwSession->mdSession = mdSession;
|
||||
fwSession->mdSession = (NSSCKMDSession *)NULL; /* set later */
|
||||
fwSession->fwToken = fwToken;
|
||||
fwSession->mdToken = nssCKFWToken_GetMDToken(fwToken);
|
||||
|
||||
|
@ -438,7 +441,9 @@ nssCKFWSession_SetFWFindObjects
|
|||
NSSCKFWFindObjects *fwFindObjects
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
error = nssCKFWSession_verifyPointer(fwSession);
|
||||
|
@ -449,7 +454,8 @@ nssCKFWSession_SetFWFindObjects
|
|||
/* fwFindObjects may be null */
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (NSSCKFWFindObjects *)NULL != fwSession->fwFindObjects ) {
|
||||
if( ((NSSCKFWFindObjects *)NULL != fwSession->fwFindObjects) &&
|
||||
((NSSCKFWFindObjects *)NULL != fwFindObjects) ) {
|
||||
return CKR_OPERATION_ACTIVE;
|
||||
}
|
||||
|
||||
|
@ -488,6 +494,91 @@ nssCKFWSession_GetFWFindObjects
|
|||
return fwSession->fwFindObjects;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWSession_SetMDSession
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_RV
|
||||
nssCKFWSession_SetMDSession
|
||||
(
|
||||
NSSCKFWSession *fwSession,
|
||||
NSSCKMDSession *mdSession
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
error = nssCKFWSession_verifyPointer(fwSession);
|
||||
if( CKR_OK != error ) {
|
||||
return error;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == mdSession ) {
|
||||
return CKR_ARGUMENTS_BAD;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (NSSCKMDSession *)NULL != fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
|
||||
fwSession->mdSession = mdSession;
|
||||
|
||||
return CKR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWSession_SetHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_RV
|
||||
nssCKFWSession_SetHandle
|
||||
(
|
||||
NSSCKFWSession *fwSession,
|
||||
CK_SESSION_HANDLE hSession
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
error = nssCKFWSession_verifyPointer(fwSession);
|
||||
if( CKR_OK != error ) {
|
||||
return error;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (CK_SESSION_HANDLE)0 != fwSession->hSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
|
||||
fwSession->hSession = hSession;
|
||||
|
||||
return CKR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWSession_GetHandle
|
||||
*
|
||||
*/
|
||||
NSS_IMPLEMENT CK_SESSION_HANDLE
|
||||
nssCKFWSession_GetHandle
|
||||
(
|
||||
NSSCKFWSession *fwSession
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
if( CKR_OK != nssCKFWSession_verifyPointer(fwSession) ) {
|
||||
return (NSSCKMDSession *)NULL;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
return fwSession->hSession;
|
||||
}
|
||||
|
||||
/*
|
||||
* nssCKFWSession_GetDeviceError
|
||||
*
|
||||
|
@ -500,7 +591,11 @@ nssCKFWSession_GetDeviceError
|
|||
{
|
||||
#ifdef NSSDEBUG
|
||||
if( CKR_OK != nssCKFWSession_verifyPointer(fwSession) ) {
|
||||
return CK_FALSE;
|
||||
return (CK_ULONG)0;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return (CK_ULONG)0;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
|
@ -548,6 +643,10 @@ nssCKFWSession_Login
|
|||
return CKR_ARGUMENTS_BAD;
|
||||
}
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
oldState = nssCKFWToken_GetSessionState(fwSession->fwToken);
|
||||
|
@ -645,6 +744,10 @@ nssCKFWSession_Logout
|
|||
if( CKR_OK != error ) {
|
||||
return error;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
oldState = nssCKFWToken_GetSessionState(fwSession->fwToken);
|
||||
|
@ -716,6 +819,10 @@ nssCKFWSession_InitPIN
|
|||
if( CKR_OK != error ) {
|
||||
return error;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
state = nssCKFWToken_GetSessionState(fwSession->fwToken);
|
||||
|
@ -761,6 +868,10 @@ nssCKFWSession_SetPIN
|
|||
if( CKR_OK != error ) {
|
||||
return error;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
state = nssCKFWToken_GetSessionState(fwSession->fwToken);
|
||||
|
@ -817,6 +928,11 @@ nssCKFWSession_GetOperationStateLen
|
|||
if( CKR_OK != *pError ) {
|
||||
return (CK_ULONG)0;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
return (CK_ULONG)0;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (void *)NULL == (void *)fwSession->mdSession->GetOperationStateLen ) {
|
||||
|
@ -873,6 +989,10 @@ nssCKFWSession_GetOperationState
|
|||
if( (void *)NULL == buffer->data ) {
|
||||
return CKR_ARGUMENTS_BAD;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (void *)NULL == (void *)fwSession->mdSession->GetOperationState ) {
|
||||
|
@ -970,6 +1090,10 @@ nssCKFWSession_SetOperationState
|
|||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
ulBuffer = (CK_ULONG *)state->data;
|
||||
|
@ -1076,6 +1200,11 @@ nssCKFWSession_CreateObject
|
|||
*pError = CKR_ARGUMENTS_BAD;
|
||||
return (NSSCKFWObject *)NULL;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
return (NSSCKFWObject *)NULL;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
/*
|
||||
|
@ -1194,6 +1323,11 @@ nssCKFWSession_CopyObject
|
|||
if( CKR_OK != *pError ) {
|
||||
return (NSSCKFWObject *)NULL;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
return (NSSCKFWObject *)NULL;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
/*
|
||||
|
@ -1345,10 +1479,15 @@ nssCKFWSession_FindObjectsInit
|
|||
return (NSSCKFWFindObjects *)NULL;
|
||||
}
|
||||
|
||||
if( (CK_ATTRIBUTE_PTR)NULL == pTemplate ) {
|
||||
if( ((CK_ATTRIBUTE_PTR)NULL == pTemplate) && (ulAttributeCount != 0) ) {
|
||||
*pError = CKR_ARGUMENTS_BAD;
|
||||
return (NSSCKFWFindObjects *)NULL;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
return (NSSCKFWFindObjects *)NULL;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( CK_TRUE == nssCKFWInstance_GetModuleHandlesSessionObjects(
|
||||
|
@ -1480,6 +1619,10 @@ nssCKFWSession_SeedRandom
|
|||
if( 0 == seed->size ) {
|
||||
return CKR_ARGUMENTS_BAD;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (void *)NULL == (void *)fwSession->mdSession->SeedRandom ) {
|
||||
|
@ -1519,6 +1662,10 @@ nssCKFWSession_GetRandom
|
|||
if( (void *)NULL == buffer->data ) {
|
||||
return CKR_ARGUMENTS_BAD;
|
||||
}
|
||||
|
||||
if( (NSSCKMDSession *)NULL == fwSession->mdSession ) {
|
||||
return CKR_GENERAL_ERROR;
|
||||
}
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
if( (void *)NULL == (void *)fwSession->mdSession->GetRandom ) {
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: sessobj.c,v $ $Revision: 1.2 $ $Date: 2000-04-03 21:58:53 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: sessobj.c,v $ $Revision: 1.3 $ $Date: 2000-04-19 21:32:11 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -384,7 +384,9 @@ nss_ckmdSessionObject_Destroy
|
|||
NSSCKFWInstance *fwInstance
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
nssCKMDSessionObject *mdso;
|
||||
CK_ULONG i;
|
||||
|
||||
|
@ -501,7 +503,9 @@ nss_ckmdSessionObject_GetAttributeTypes
|
|||
CK_ULONG ulCount
|
||||
)
|
||||
{
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error = CKR_OK;
|
||||
#endif /* NSSDEBUG */
|
||||
nssCKMDSessionObject *obj;
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
|
@ -651,7 +655,9 @@ nss_ckmdSessionObject_SetAttribute
|
|||
NSSItem n;
|
||||
NSSItem *ra;
|
||||
CK_ATTRIBUTE_TYPE_PTR rt;
|
||||
#ifdef NSSDEBUG
|
||||
CK_RV error;
|
||||
#endif /* NSSDEBUG */
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
error = nss_ckmdSessionObject_verifyPointer(mdObject);
|
||||
|
@ -855,28 +861,6 @@ nss_ckmdFindSessionObjects_Next
|
|||
CK_RV *pError
|
||||
);
|
||||
|
||||
/*
|
||||
* This (or something like it) should be in ../base or something.
|
||||
*/
|
||||
static int
|
||||
attributes_match
|
||||
(
|
||||
NSSItem *a,
|
||||
void *b_data,
|
||||
CK_ULONG b_size
|
||||
)
|
||||
{
|
||||
if( a->size != b_size ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if( PR_TRUE == nsslibc_memequal(a->data, b_data, a->size, (PRStatus *)NULL) ) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static CK_BBOOL
|
||||
items_match
|
||||
(
|
||||
|
@ -885,7 +869,15 @@ items_match
|
|||
CK_ULONG ulValueLen
|
||||
)
|
||||
{
|
||||
return CK_FALSE; /* XXX fgmr 19990517 rush to compile.. */
|
||||
if( a->size != ulValueLen ) {
|
||||
return CK_FALSE;
|
||||
}
|
||||
|
||||
if( PR_TRUE == nsslibc_memequal(a->data, pValue, ulValueLen, (PRStatus *)NULL) ) {
|
||||
return CK_TRUE;
|
||||
} else {
|
||||
return CK_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1069,7 +1061,6 @@ nss_ckmdFindSessionObjects_Next
|
|||
)
|
||||
{
|
||||
nssCKMDFindSessionObjects *mdfso;
|
||||
nssCKFWHash *hash;
|
||||
|
||||
#ifdef NSSDEBUG
|
||||
if( CKR_OK != nss_ckmdFindSessionObjects_verifyPointer(mdFindObjects) ) {
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: token.c,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:39 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: token.c,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:32:20 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -1348,27 +1348,32 @@ nssCKFWToken_OpenSession
|
|||
goto done;
|
||||
}
|
||||
|
||||
mdSession = fwToken->mdToken->OpenSession(fwToken->mdToken, fwToken,
|
||||
fwToken->mdInstance, fwToken->fwInstance,
|
||||
/*XXX fgmr! */(NSSCKFWSession *)NULL,
|
||||
rw, pError);
|
||||
if( (NSSCKMDSession *)NULL == mdSession ) {
|
||||
fwSession = nssCKFWSession_Create(fwToken, rw, pApplication, Notify, pError);
|
||||
if( (NSSCKFWSession *)NULL == fwSession ) {
|
||||
if( CKR_OK == *pError ) {
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
fwSession = nssCKFWSession_Create(fwToken, mdSession, rw,
|
||||
pApplication, Notify, pError);
|
||||
if( (NSSCKFWSession *)NULL == fwSession ) {
|
||||
mdSession = fwToken->mdToken->OpenSession(fwToken->mdToken, fwToken,
|
||||
fwToken->mdInstance, fwToken->fwInstance, fwSession,
|
||||
rw, pError);
|
||||
if( (NSSCKMDSession *)NULL == mdSession ) {
|
||||
(void)nssCKFWSession_Destroy(fwSession, CK_FALSE);
|
||||
if( CKR_OK == *pError ) {
|
||||
*pError = CKR_GENERAL_ERROR;
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
*pError = nssCKFWSession_SetMDSession(fwSession, mdSession);
|
||||
if( CKR_OK != *pError ) {
|
||||
if( (void *)NULL != (void *)mdSession->Close ) {
|
||||
mdSession->Close(mdSession, fwSession, fwToken->mdToken, fwToken,
|
||||
fwToken->mdInstance, fwToken->fwInstance);
|
||||
}
|
||||
(void)nssCKFWSession_Destroy(fwSession, CK_FALSE);
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -1527,7 +1532,7 @@ nssCKFWToken_RemoveSession
|
|||
return error;
|
||||
}
|
||||
|
||||
if( CKR_OK != nssCKFWHash_Exists(fwToken->sessions, fwSession) ) {
|
||||
if( CK_TRUE != nssCKFWHash_Exists(fwToken->sessions, fwSession) ) {
|
||||
error = CKR_SESSION_HANDLE_INVALID;
|
||||
goto done;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: wrap.c,v $ $Revision: 1.1 $ $Date: 2000-03-31 19:43:41 $ $Name: $";
|
||||
static const char CVS_ID[] = "@(#) $RCSfile: wrap.c,v $ $Revision: 1.2 $ $Date: 2000-04-19 21:32:26 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -778,7 +778,12 @@ NSSCKFWC_GetMechanismList
|
|||
(void)nsslibc_memset(pMechanismList, 0, *pulCount * sizeof(CK_MECHANISM_TYPE));
|
||||
|
||||
*pulCount = count;
|
||||
error = nssCKFWToken_GetMechanismTypes(fwToken, pMechanismList);
|
||||
|
||||
if( 0 != count ) {
|
||||
error = nssCKFWToken_GetMechanismTypes(fwToken, pMechanismList);
|
||||
} else {
|
||||
error = CKR_OK;
|
||||
}
|
||||
|
||||
if( CKR_OK == error ) {
|
||||
return CKR_OK;
|
||||
|
@ -1316,10 +1321,8 @@ NSSCKFWC_CloseSession
|
|||
goto loser;
|
||||
}
|
||||
|
||||
error = nssCKFWSession_Destroy(fwSession, CK_TRUE);
|
||||
|
||||
/* In any case: */
|
||||
nssCKFWInstance_DestroySessionHandle(fwInstance, hSession);
|
||||
error = nssCKFWSession_Destroy(fwSession, CK_TRUE);
|
||||
|
||||
if( CKR_OK != error ) {
|
||||
goto loser;
|
||||
|
@ -2320,8 +2323,6 @@ NSSCKFWC_SetAttributeValue
|
|||
NSSCKFWObject *fwObject;
|
||||
NSSCKFWObject *newFwObject;
|
||||
|
||||
CK_ULONG i;
|
||||
|
||||
if( (NSSCKFWInstance *)NULL == fwInstance ) {
|
||||
error = CKR_CRYPTOKI_NOT_INITIALIZED;
|
||||
goto loser;
|
||||
|
@ -2419,7 +2420,7 @@ NSSCKFWC_FindObjectsInit
|
|||
goto loser;
|
||||
}
|
||||
|
||||
if( (CK_ATTRIBUTE_PTR)CK_NULL_PTR == pTemplate ) {
|
||||
if( ((CK_ATTRIBUTE_PTR)CK_NULL_PTR == pTemplate) && (ulCount != 0) ) {
|
||||
error = CKR_ARGUMENTS_BAD;
|
||||
goto loser;
|
||||
}
|
||||
|
@ -2533,7 +2534,7 @@ NSSCKFWC_FindObjects
|
|||
NSSCKFWObject *fwObject = nssCKFWFindObjects_Next(fwFindObjects,
|
||||
arena, &error);
|
||||
if( (NSSCKFWObject *)NULL == fwObject ) {
|
||||
goto loser;
|
||||
break;
|
||||
}
|
||||
|
||||
phObject[i] = nssCKFWInstance_FindObjectHandle(fwInstance, fwObject);
|
||||
|
|
Загрузка…
Ссылка в новой задаче