236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
return(Tcl_NewStringObj("PKCS11_ERROR VENDOR_DEFINED", -1));
}
return(Tcl_NewStringObj("PKCS11_ERROR UNKNOWN", -1));
}
MODULE_SCOPE Tcl_Obj *tclpkcs11_bytearray_to_string(const unsigned char *data, unsigned long datalen) {
unsigned long idx;
Tcl_Obj *retval;
retval = Tcl_NewObj();
if (data == NULL) {
return(retval);
}
for (idx = 0; idx < datalen; idx++) {
Tcl_AppendObjToObj(retval, Tcl_ObjPrintf("%02x", data[idx]));
}
return(retval);
}
MODULE_SCOPE unsigned long tclpkcs11_string_to_bytearray(Tcl_Obj *data, unsigned char *outbuf, unsigned long outbuflen) {
unsigned long outbufidx = 0;
char tmpbuf[5];
|
>
|
|
<
|
>
|
>
>
|
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
return(Tcl_NewStringObj("PKCS11_ERROR VENDOR_DEFINED", -1));
}
return(Tcl_NewStringObj("PKCS11_ERROR UNKNOWN", -1));
}
MODULE_SCOPE Tcl_Obj *tclpkcs11_bytearray_to_string(const unsigned char *data, unsigned long datalen) {
static char alphabet[] = "0123456789abcdef";
unsigned long idx, bufidx;
Tcl_Obj *retval;
char buf[1024];
if (data == NULL) {
return(retval);
}
for (bufidx = idx = 0; (idx < datalen) && (bufidx < sizeof(buf)); idx++) {
buf[bufidx++] = (data[idx] >> 4) & 0xf;
buf[bufidx++] = data[idx] & 0xf;
}
retval = Tcl_NewByteArrayObj(buf, bufidx);
return(retval);
}
MODULE_SCOPE unsigned long tclpkcs11_string_to_bytearray(Tcl_Obj *data, unsigned char *outbuf, unsigned long outbuflen) {
unsigned long outbufidx = 0;
char tmpbuf[5];
|
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
|
Tcl_SetObjResult(interp, tclpkcs11_pkcs11_error(chk_rv));
return(TCL_ERROR);
}
interpdata = (struct tclpkcs11_interpdata *) cd;
tcl_handle = Tcl_ObjPrintf("pkcsmod%lu", interpdata->handles_idx);
(interpdata->handles_idx)++;
tcl_handle_entry = Tcl_CreateHashEntry(&interpdata->handles, (const char *) tcl_handle, &is_new_entry);
if (!tcl_handle_entry) {
Tcl_SetObjResult(interp, Tcl_NewStringObj("unable to create new hash entry", -1));
return(TCL_ERROR);
|
>
|
|
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
|
Tcl_SetObjResult(interp, tclpkcs11_pkcs11_error(chk_rv));
return(TCL_ERROR);
}
interpdata = (struct tclpkcs11_interpdata *) cd;
tcl_handle = Tcl_NewStringObj("pkcsmod", -1);
Tcl_AppendObjToObj(tcl_handle, Tcl_NewLongObj(interpdata->handles_idx));
(interpdata->handles_idx)++;
tcl_handle_entry = Tcl_CreateHashEntry(&interpdata->handles, (const char *) tcl_handle, &is_new_entry);
if (!tcl_handle_entry) {
Tcl_SetObjResult(interp, Tcl_NewStringObj("unable to create new hash entry", -1));
return(TCL_ERROR);
|