diff options
| author | Peter Shoults <Peter.Shoults@Sun.COM> | 2010-05-28 20:36:19 -0400 |
|---|---|---|
| committer | Peter Shoults <Peter.Shoults@Sun.COM> | 2010-05-28 20:36:19 -0400 |
| commit | 1fa2a72a9db6af03d660af1862e29a6f779f35d8 (patch) | |
| tree | 9604ddc78696ffc91d8f607dce4242fd20e9f222 /usr/src/lib | |
| parent | f044df33d9fe9e8e3ed7344a8b548b17f20709f2 (diff) | |
| download | illumos-joyent-1fa2a72a9db6af03d660af1862e29a6f779f35d8.tar.gz | |
6949306 soft_slot.authenticated not getting properly set anymore, confusing C_Logout & friends
6953950 $s and %s look similar, but $s breaks keystore creation
Diffstat (limited to 'usr/src/lib')
| -rw-r--r-- | usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c | 2 | ||||
| -rw-r--r-- | usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c | 16 |
2 files changed, 16 insertions, 2 deletions
diff --git a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c index da498eff8e..0ebfa871e9 100644 --- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c +++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softKeystoreUtil.c @@ -343,7 +343,7 @@ create_keystore() } /* 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); diff --git a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c index 3665fcf754..85249f6d45 100644 --- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c +++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softSlotToken.c @@ -301,10 +301,12 @@ C_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) 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 @@ C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) 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); |
