From 4d2428378dbb83989e2297770ee53e9174bd7ab7 Mon Sep 17 00:00:00 2001 From: vtarasov Date: Sun, 29 May 2011 17:55:26 +0000 Subject: [PATCH] pkcs11-tool: CKA_VALUE of imported GOST key has to be presented in the little endian order git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5518 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/tools/pkcs11-tool.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c index a345f579..d6e36e15 100644 --- a/src/tools/pkcs11-tool.c +++ b/src/tools/pkcs11-tool.c @@ -1822,11 +1822,16 @@ static int write_object(CK_SLOT_ID slot, CK_SESSION_HANDLE session) #if OPENSSL_VERSION_NUMBER >= 0x10000000L && !defined(OPENSSL_NO_EC) else if (evp_key->type == NID_id_GostR3410_2001) { CK_KEY_TYPE type = CKK_GOSTR3410; + FILL_ATTR(privkey_templ[n_privkey_attr], CKA_KEY_TYPE, &type, sizeof(type)); n_privkey_attr++; FILL_ATTR(privkey_templ[n_privkey_attr], CKA_GOSTR3410_PARAMS, gost.param_oid.value, gost.param_oid.len); n_privkey_attr++; FILL_ATTR(privkey_templ[n_privkey_attr], CKA_VALUE, gost.private.value, gost.private.len); + /* CKA_VALUE of the GOST key has to be in the little endian order */ + rv = sc_mem_reverse(privkey_templ[n_privkey_attr].pValue, privkey_templ[n_privkey_attr].ulValueLen); + if (rv) + return rv; n_privkey_attr++; } #endif