Mercurial > illumos > illumos-gate
changeset 12517:b0e607a058b0
6949306 soft_slot.authenticated not getting properly set anymore, confusing C_Logout & friends
6953950 $s and %s look similar, but $s breaks keystore creation
author | Peter Shoults <Peter.Shoults@Sun.COM> |
---|---|
date | Fri, 28 May 2010 20:36:19 -0400 |
parents | 22c873a8ec63 |
children | bb38e01f2d5a |
files | usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c |
diffstat | 2 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c Fri May 28 14:36:29 2010 -0700 +++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c Fri May 28 20:36:19 2010 -0400 @@ -343,7 +343,7 @@ } /* create $HOME/.sunw/pkcs11_softtoken */ (void) snprintf(keystore, sizeof (keystore), - "%s/%s/$s", home, SUNW_PATH, KEYSTORE_PATH); + "%s/%s/%s", home, SUNW_PATH, KEYSTORE_PATH); if (mkdirp(keystore, S_IRUSR|S_IWUSR|S_IXUSR) < 0) { return (-1);
--- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c Fri May 28 14:36:29 2010 -0700 +++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c Fri May 28 20:36:19 2010 -0400 @@ -301,10 +301,12 @@ return (CKR_OK); } - CK_RV C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) { + boolean_t pin_initialized = B_FALSE; + char *ks_cryptpin = NULL; + if (!softtoken_initialized) return (CKR_CRYPTOKI_NOT_INITIALIZED); @@ -315,10 +317,22 @@ if (pInfo == NULL) return (CKR_ARGUMENTS_BAD); + /* + * It is intentional that we don't forward the error code + * returned from soft_keystore_pin_initialized() to the caller + */ pInfo->flags = SOFT_TOKEN_FLAGS; if (soft_slot.keystore_load_status == KEYSTORE_UNAVAILABLE) { pInfo->flags |= CKF_WRITE_PROTECTED; + } else { + if ((soft_keystore_pin_initialized(&pin_initialized, + &ks_cryptpin, B_FALSE) == CKR_OK) && !pin_initialized) + pInfo->flags |= CKF_USER_PIN_TO_BE_CHANGED; } + + if (ks_cryptpin) + free(ks_cryptpin); + /* Provide information about a token in the provided buffer */ (void) strncpy((char *)pInfo->label, SOFT_TOKEN_LABEL, 32); (void) strncpy((char *)pInfo->manufacturerID, SOFT_MANUFACTURER_ID, 32);