public unsafe void Write(ISvnAuthWrapper value, IntPtr ptr, AprPool pool) { var ppProvider = (svn_auth_provider_object_t.__Internal * *)ptr; *ppProvider = (svn_auth_provider_object_t.__Internal *)value.GetProviderPtr(pool).__Instance; if (*ppProvider == null) { var stub_provider = (svn_auth_provider_t.__Internal *)pool.AllocCleared( sizeof(svn_auth_provider_t.__Internal)); stub_provider->cred_kind = new IntPtr(pool.AllocString("LibSvnSharp-FakeType")); var pProvider = (svn_auth_provider_object_t.__Internal *)pool.AllocCleared( sizeof(svn_auth_provider_object_t.__Internal)); pProvider->vtable = new IntPtr(stub_provider); *ppProvider = pProvider; } }
static unsafe /*svn_error_t*/ IntPtr _svn_auth_ssl_server_trust_prompt_func( /*out svn_auth_cred_ssl_server_trust_t*/ void **ppCred, IntPtr baton, sbyte *realm, uint failures, /*svn_auth_ssl_server_cert_info_t*/ IntPtr certInfo, int maySave, /*apr_pool_t*/ IntPtr pool) { var wrapper = AprBaton <SvnAuthWrapper <SvnSslServerTrustEventArgs> > .Get(baton); var certInfoT = svn_auth_ssl_server_cert_info_t.__CreateInstance(certInfo); var args = new SvnSslServerTrustEventArgs( (SvnCertificateTrustFailures)failures, SvnBase.Utf8_PtrToString(certInfoT.hostname), SvnBase.Utf8_PtrToString(certInfoT.fingerprint), SvnBase.Utf8_PtrToString(certInfoT.valid_from), SvnBase.Utf8_PtrToString(certInfoT.valid_until), SvnBase.Utf8_PtrToString(certInfoT.issuer_dname), SvnBase.Utf8_PtrToString(certInfoT.ascii_cert), SvnBase.Utf8_PtrToString(realm), maySave != 0); var cred = (svn_auth_cred_ssl_server_trust_t.__Internal * *)ppCred; using (var tmpPool = new AprPool(pool, false)) { *cred = null; try { wrapper.Raise(args); } catch (Exception e) { return(SvnException.CreateExceptionSvnError("Authorization handler", e).__Instance); } if (args.Cancel) { return(svn_error.svn_error_create((int)SvnErrorCode.SVN_ERR_CANCELLED, null, "Authorization canceled operation").__Instance); } if (args.Break) { return(IntPtr.Zero); } if (args.AcceptedFailures != SvnCertificateTrustFailures.None) { *cred = (svn_auth_cred_ssl_server_trust_t.__Internal *)tmpPool.AllocCleared( sizeof(svn_auth_cred_ssl_server_trust_t.__Internal)); (*cred)->accepted_failures = (uint)args.AcceptedFailures; (*cred)->may_save = args.Save ? 1 : 0; } } return(IntPtr.Zero); }
internal unsafe svn_merge_range_t.__Internal *AllocMergeRange(AprPool pool) { if (pool == null) { throw new ArgumentNullException(nameof(pool)); } var range = (svn_merge_range_t.__Internal *)pool.AllocCleared( sizeof(svn_merge_range_t.__Internal)); range->start = (int)Start; range->end = (int)End; range->inheritable = Inheritable ? 1 : 0; return(range); }
static unsafe /*svn_error_t*/ IntPtr _svn_auth_simple_prompt_func( /*out svn_auth_cred_simple_t*/ void **credPtr, IntPtr baton, sbyte *realm, sbyte *username, int maySave, /*apr_pool_t*/ IntPtr pool) { var wrapper = AprBaton <SvnAuthWrapper <SvnUserNamePasswordEventArgs> > .Get(baton); var args = new SvnUserNamePasswordEventArgs(SvnBase.Utf8_PtrToString(username), SvnBase.Utf8_PtrToString(realm), maySave != 0); var cred = (svn_auth_cred_simple_t.__Internal * *)credPtr; using (var tmpPool = new AprPool(pool, false)) { *cred = null; try { wrapper.Raise(args); } catch (Exception e) { return(SvnException.CreateExceptionSvnError("Authorization handler", e).__Instance); } if (args.Cancel) { return(svn_error.svn_error_create((int)SvnErrorCode.SVN_ERR_CANCELLED, null, "Authorization canceled operation").__Instance); } if (args.Break) { return(IntPtr.Zero); } *cred = (svn_auth_cred_simple_t.__Internal *)tmpPool.AllocCleared(sizeof(svn_auth_cred_simple_t.__Internal)); (*cred)->username = new IntPtr(tmpPool.AllocString(args.UserName)); (*cred)->password = new IntPtr(tmpPool.AllocString(args.Password)); (*cred)->may_save = args.Save ? 1 : 0; } return(IntPtr.Zero); }