I'll just wait to get the real card and see if i still have the same problem.
I think it's the virtual environment that makes that mistake... I'll let you know if it works with the card when I receive it.
What you have to do is just share a complete code(as an example) so that we can test it and let you know what is the problem. And from your code i assume that your code is the part of the applet not the host app, if not please mention. As in case of applet you can send back the reason in the catch clause but can't print the whole stack trace.
CREF has some documented limitations (check the developer guide that is in the JCDK). Due to export restrictions, the crypto support is quite limited. You will only be able to use 512 bit keys with CREF. You will need to use a real card or a better emulator (from a card vendor) for this.