summaryrefslogtreecommitdiff
path: root/ckcapi.c
diff options
context:
space:
mode:
authorStef Walter <stef@memberwebs.com>2007-05-06 02:02:09 +0000
committerStef Walter <stef@memberwebs.com>2007-05-06 02:02:09 +0000
commit16be360038c56328695f1dd8133718f82cd0c36c (patch)
tree9428cd853b4561b4590d4102ee81bd57261826b9 /ckcapi.c
parent856a057fc0a0807e9c0dd2b11c04e1f1312bdb12 (diff)
A bunch of trust work on the plugin.
Diffstat (limited to 'ckcapi.c')
-rw-r--r--ckcapi.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/ckcapi.c b/ckcapi.c
index 0bed282..f0c4629 100644
--- a/ckcapi.c
+++ b/ckcapi.c
@@ -112,6 +112,34 @@ ckcapi_winerr_to_ckr(DWORD werr)
}
+CK_RV
+ckcapi_return_data(CK_VOID_PTR dst, CK_ULONG_PTR dlen,
+ CK_VOID_PTR src, DWORD slen)
+{
+ // TODO: This check should probably go elsewhere
+ if(slen == 0)
+ return CKR_ATTRIBUTE_TYPE_INVALID;
+
+ /* Just asking for the length */
+ if(!dst)
+ {
+ *dlen = slen;
+ return CKR_OK;
+ }
+
+ /* Buffer is too short */
+ if(slen > *dlen)
+ {
+ *dlen = slen;
+ return CKR_BUFFER_TOO_SMALL;
+ }
+
+ *dlen = slen;
+ memcpy(dst, src, slen);
+ return CKR_OK;
+}
+
+
/* ---------------------------------------------------------------- */
static CK_RV