summaryrefslogtreecommitdiff
path: root/usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c')
-rw-r--r--usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c
index e57fb014dd..27d18b290b 100644
--- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c
+++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softEC.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -472,10 +472,10 @@ soft_ecc_sign(soft_session_t *session_p, CK_BYTE_PTR pData,
soft_ecc_ctx_t *ecc_ctx = session_p->sign.context;
soft_object_t *key = ecc_ctx->key;
uchar_t value[EC_MAX_VALUE_LEN];
- CK_ATTRIBUTE template;
ECPrivateKey ECkey;
SECItem signature_item;
SECItem digest_item;
+ uint_t value_len;
if ((key->class != CKO_PRIVATE_KEY) || (key->key_type != CKK_EC)) {
rv = CKR_KEY_TYPE_INCONSISTENT;
@@ -490,16 +490,14 @@ soft_ecc_sign(soft_session_t *session_p, CK_BYTE_PTR pData,
/* structure assignment */
ECkey.ecParams = ecc_ctx->ecparams;
- template.type = CKA_VALUE;
- template.pValue = value;
- template.ulValueLen = sizeof (value);
- rv = soft_get_private_key_attribute(key, &template);
+ value_len = EC_MAX_VALUE_LEN;
+ rv = soft_get_private_value(key, CKA_VALUE, value, &value_len);
if (rv != CKR_OK) {
goto clean_exit;
}
ECkey.privateValue.data = value;
- ECkey.privateValue.len = template.ulValueLen;
+ ECkey.privateValue.len = value_len;
signature_item.data = pSigned;
signature_item.len = *pulSignedLen;