It's not exactly true.
When you call Wrap method you get the encrypted wrapped key in form of array of bytes, not merely as an object reference. When you call the Wrap method you get the byte array containing the encrypted (wrapped) key. Then, you can do what you want with that encrypted key. To store it in another system you have to decrypt it and you can do decryption if you know the secret key used to encrypt (wrap) the other key (you surely know the algo because when you call Wrap you have specified the mechanism).
To reach your goal simply you should use your own key to wrap the other key and you should use an implementation of the wrapping algorithm to decrypt (unwrap) it.
If you really need that and you don't know ho to do I can develop for you the classes you need.
This is the snippet that loads a DES secret key:
// your wrapping key
byte[] keyValue = {0x11,0x12,0x13, 0x14, 0x15,0x16,0x17,0x18};
CryptokiCollection template = new CryptokiCollection();
template.Add(new ObjectAttribute(ObjectAttribute.CKA_CLASS, CryptokiObject.CKO_SECRET_KEY));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_KEY_TYPE, Key.CKK_DES));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_ID, id));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_LABEL, label));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_TOKEN, true));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_VALYE, keyValue));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_PRIVATE, true));
template.Add(new ObjectAttribute(ObjectAttribute.CKA_MODIFIABLE, false));
CryptokiObject deskey = CurrentSession.Objects.Create(template);
Regards,
Ugo