Bug 333090: CKM_DH_PKCS_KEY_PAIR_GEN always fails. r=nelson, sr=rrelyea

Patch contributed by Andreas.Sterbenz@sun.com
This commit is contained in:
nelson%bolyard.com 2006-04-08 05:05:01 +00:00
Родитель a9813aa152
Коммит 424fabe58a
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -1228,6 +1228,7 @@ sftk_handlePrivateKeyObject(SFTKSession *session,SFTKObject *object,CK_KEY_TYPE
{ {
CK_BBOOL cktrue = CK_TRUE; CK_BBOOL cktrue = CK_TRUE;
CK_BBOOL encrypt = CK_TRUE; CK_BBOOL encrypt = CK_TRUE;
CK_BBOOL sign = CK_FALSE;
CK_BBOOL recover = CK_TRUE; CK_BBOOL recover = CK_TRUE;
CK_BBOOL wrap = CK_TRUE; CK_BBOOL wrap = CK_TRUE;
CK_BBOOL derive = CK_FALSE; CK_BBOOL derive = CK_FALSE;
@ -1268,7 +1269,8 @@ sftk_handlePrivateKeyObject(SFTKSession *session,SFTKObject *object,CK_KEY_TYPE
sftk_item_expand(&mod)); sftk_item_expand(&mod));
if (mod.data) PORT_Free(mod.data); if (mod.data) PORT_Free(mod.data);
if (crv != CKR_OK) return crv; if (crv != CKR_OK) return crv;
sign = CK_TRUE;
break; break;
case CKK_DSA: case CKK_DSA:
if ( !sftk_hasAttribute(object, CKA_SUBPRIME)) { if ( !sftk_hasAttribute(object, CKA_SUBPRIME)) {
@ -1278,6 +1280,7 @@ sftk_handlePrivateKeyObject(SFTKSession *session,SFTKObject *object,CK_KEY_TYPE
!sftk_hasAttribute(object, CKA_NETSCAPE_DB)) { !sftk_hasAttribute(object, CKA_NETSCAPE_DB)) {
return CKR_TEMPLATE_INCOMPLETE; return CKR_TEMPLATE_INCOMPLETE;
} }
sign = CK_TRUE;
/* fall through */ /* fall through */
case CKK_DH: case CKK_DH:
if ( !sftk_hasAttribute(object, CKA_PRIME)) { if ( !sftk_hasAttribute(object, CKA_PRIME)) {
@ -1306,6 +1309,7 @@ sftk_handlePrivateKeyObject(SFTKSession *session,SFTKObject *object,CK_KEY_TYPE
return CKR_TEMPLATE_INCOMPLETE; return CKR_TEMPLATE_INCOMPLETE;
} }
encrypt = CK_FALSE; encrypt = CK_FALSE;
sign = CK_TRUE;
recover = CK_FALSE; recover = CK_FALSE;
wrap = CK_FALSE; wrap = CK_FALSE;
derive = CK_TRUE; derive = CK_TRUE;
@ -1322,7 +1326,7 @@ sftk_handlePrivateKeyObject(SFTKSession *session,SFTKObject *object,CK_KEY_TYPE
if (crv != CKR_OK) return crv; if (crv != CKR_OK) return crv;
crv = sftk_defaultAttribute(object,CKA_DECRYPT,&encrypt,sizeof(CK_BBOOL)); crv = sftk_defaultAttribute(object,CKA_DECRYPT,&encrypt,sizeof(CK_BBOOL));
if (crv != CKR_OK) return crv; if (crv != CKR_OK) return crv;
crv = sftk_defaultAttribute(object,CKA_SIGN,&cktrue,sizeof(CK_BBOOL)); crv = sftk_defaultAttribute(object,CKA_SIGN,&sign,sizeof(CK_BBOOL));
if (crv != CKR_OK) return crv; if (crv != CKR_OK) return crv;
crv = sftk_defaultAttribute(object,CKA_SIGN_RECOVER,&recover, crv = sftk_defaultAttribute(object,CKA_SIGN_RECOVER,&recover,
sizeof(CK_BBOOL)); sizeof(CK_BBOOL));