public ImportResult Import(GpgmeData keydata) { if (Context == null || !(Context.IsValid)) { throw new InvalidContextException(); } if (keydata == null) { throw new ArgumentNullException("An invalid data buffer has been specified.", new InvalidDataBufferException()); } if (!(keydata.IsValid)) { throw new InvalidDataBufferException(); } lock (Context.CtxLock) { GpgmeError.Check(libgpgme.NativeMethods.gpgme_op_import(Context.CtxPtr, keydata.dataPtr)); IntPtr result = libgpgme.NativeMethods.gpgme_op_import_result(Context.CtxPtr); return(new ImportResult(result)); } }
public void SetEngineInfo(Protocol proto, string filename, string homedir) { EnsureValid(); lock (CtxLock) { IntPtr filename_ptr = IntPtr.Zero, homedir_ptr = IntPtr.Zero; if (filename != null) { filename_ptr = Marshal.StringToCoTaskMemAnsi(filename); } if (homedir != null) { homedir_ptr = Marshal.StringToCoTaskMemAnsi(homedir); } int err = libgpgme.NativeMethods.gpgme_ctx_set_engine_info( CtxPtr, (gpgme_protocol_t)proto, filename_ptr, homedir_ptr); if (filename_ptr != IntPtr.Zero) { Marshal.FreeCoTaskMem(filename_ptr); } if (homedir_ptr != IntPtr.Zero) { Marshal.FreeCoTaskMem(homedir_ptr); } GpgmeError.Check(err); } }
public void Export(string[] pattern, GpgmeData keydata, ExportMode?mode = null) { if (Context == null || !(Context.IsValid)) { throw new InvalidContextException(); } if (keydata == null) { throw new ArgumentNullException("Invalid data buffer", new InvalidDataBufferException()); } if (!(keydata.IsValid)) { throw new InvalidDataBufferException(); } IntPtr[] parray = null; if (pattern != null) { parray = Gpgme.StringToCoTaskMemUTF8(pattern); } int err; var apiMode = mode == null ? 0 : (uint)mode; lock (Context.CtxLock) { if (parray != null) { err = libgpgme.NativeMethods.gpgme_op_export_ext( Context.CtxPtr, parray, apiMode, keydata.dataPtr); } else { err = libgpgme.NativeMethods.gpgme_op_export( Context.CtxPtr, IntPtr.Zero, apiMode, keydata.dataPtr); } } GC.KeepAlive(keydata); // Free memory Gpgme.FreeStringArray(parray); GpgmeError.Check(err); }