public CKR C_EX_PKCS7Sign(NativeULong session,
            byte[] data, NativeULong cert,
            out IntPtr envelope, out NativeULong encelopeLen,
            NativeULong privateKey,
            NativeULong[] certificates,
            NativeULong flags)
        {
            if (_disposed)
                throw new ObjectDisposedException(GetType().FullName);

            NativeULong dataLength = 0;
            if (data != null)
                dataLength = (NativeULong)(data.Length);

            NativeULong certificatesLength = 0;
            if (certificates != null)
                certificatesLength = (NativeULong)(certificates.Length);

            NativeULong rv = _rutokenDelegates.C_EX_PKCS7Sign(session, data, dataLength,
                cert, out envelope, out encelopeLen,
                privateKey,
                certificates, certificatesLength,
                flags);

            return (CKR)rv;
        }