<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="API documentation for the Rust `PamKanidm` struct in crate `pam_kanidm`."><metaname="keywords"content="rust, rustlang, rust-lang, PamKanidm"><title>PamKanidm in pam_kanidm - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><linkrel="stylesheet"href="../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../static.files/rustdoc-6827029ac823cab7.css"id="mainThemeStyle"><linkrel="stylesheet"id="themeStyle"href="../static.files/light-ebce58d0a40c3431.css"><linkrel="stylesheet"disabledhref="../static.files/dark-f23faae4a2daf9a6.css"><linkrel="stylesheet"disabledhref="../static.files/ayu-8af5e100b21cd173.css"><scriptid="default-settings"></script><scriptsrc="../static.files/storage-d43fa987303ecbbb.js"></script><scriptdefersrc="sidebar-items.js"></script><scriptdefersrc="../static.files/main-c55e1eb52e1886b4.js"></script><noscript><linkrel="stylesheet"href="../static.files/noscript-13285aec31fa243e.css"></noscript><linkrel="alternate icon"type="image/png"href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><linkrel="alternate icon"type="image/png"href="../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle">☰</button><aclass="sidebar-logo"href="../pam_kanidm/index.html"><divclass="logo-container"><imgclass="rust-logo"src="../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></div></a><h2></h2></nav><navclass="sidebar"><aclass="sidebar-logo"href="../pam_kanidm/index.html"><divclass="logo-container"><imgclass="rust-logo"src="../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></div></a><h2class="location"><ahref="#">PamKanidm</a></h2><divclass="sidebar-elems"><section><h3><ahref="#trait-implementations">Trait Implementations</a></h3><ulclass="block"><li><ahref="#impl-PamHooks-for-PamKanidm">PamHooks</a></li></ul><h3><ahref="#synthetic-implementations">Auto Trait Implementations</a></h3><ulclass="block"><li><ahref="#impl-RefUnwindSafe-for-PamKanidm">RefUnwindSafe</a></li><li><ahref="#impl-Send-for-PamKanidm">Send</a></li><li><ahref="#impl-Sync-for-PamKanidm">Sync</a></li><li><ahref="#impl-Unpin-for-PamKanidm">Unpin</a></li><li><ahref="#impl-UnwindSafe-for-PamKanidm">UnwindSafe</a></li></ul><h3><ahref="#blanket-implementations">Blanket Implementations</a></h3><ulclass="block"><li><ahref="#impl-Any-for-PamKanidm">Any</a></li><li><ahref="#impl-Borrow%3CT%3E-for-PamKanidm">Borrow<T></a></li><li><ahref="#impl-BorrowMut%3CT%3E-for-PamKanidm">BorrowMut<T></a></li><li><ahref="#impl-From%3CT%3E-for-PamKanidm">From<T></a></li><li><ahref="#impl-Instrument-for-PamKanidm">Instrument</a></li><li><ahref="#impl-Into%3CU%3E-for-PamKanidm">Into<U></a></li><li><ahref="#impl-TryFrom%3CU%3E-for-PamKanidm">TryFrom<U></a></li><li><ahref="#impl-TryInto%3CU%3E-for-PamKanidm">TryInto<U&
this time. It should be understood that the user has previously been validated by an
authentication module. This function checks for other things. Such things might be: the time of
day or the date, the terminal line, remote hostname, etc. This function may also determine
things like the expiration on passwords, and respond that the user change it before continuing. <ahref="module/trait.PamHooks.html#method.acct_mgmt">Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.sm_authenticate"class="method trait-impl has-srclink"><aclass="srclink rightside"href="../src/pam_kanidm/pam/mod.rs.html#162-270">source</a><ahref="#method.sm_authenticate"class="anchor">§</a><h4class="code-header">fn <ahref="module/trait.PamHooks.html#method.sm_authenticate"class="fn">sm_authenticate</a>(<br> pamh: &<aclass="enum"href="module/enum.PamHandle.html"title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br> args: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><&<aclass="struct"href="https://doc.rust-lang.org/1.67.1/core/ffi/c_str/struct.CStr.html"title="struct core::ffi::c_str::CStr">CStr</a>>,<br> _flags: <aclass="type"href="constants/type.PamFlag.html"title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -><aclass="enum"href="constants/enum.PamResultCode.html"title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><divclass='docblock'>This function performs the task of authenticating the user.</div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.sm_chauthtok"class="method trait-impl has-srclink"><aclass="srclink rightside"href="../src/pam_kanidm/pam/mod.rs.html#272-284">source</a><ahref="#method.sm_chauthtok"class="anchor">§</a><h4class="code-header">fn <ahref="module/trait.PamHooks.html#method.sm_chauthtok"class="fn">sm_chauthtok</a>(<br> _pamh: &<aclass="enum"href="module/enum.PamHandle.html"title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br> args: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><&<aclass="struct"href="https://doc.rust-lang.org/1.67.1/core/ffi/c_str/struct.CStr.html"title="struct core::ffi::c_str::CStr">CStr</a>>,<br> _flags: <aclass="type"href="constants/type.PamFlag.html"title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -><aclass="enum"href="constants/enum.PamResultCode.html"title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><divclass='docblock'>This function is used to (re-)set the authentication token of the user. <ahref="module/trait.PamHooks.html#method.sm_chauthtok">Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.sm_close_session"class="method trait-impl has-srclink"><aclass="srclink rightside"href="../src/pam_kanidm/pam/mod.rs.html#286-298">source</a><ahref="#method.sm_close_session"class="anchor">§</a><h4class="code-header">fn <ahref="module/trait.PamHooks.html#method.sm_close_session"class="fn">sm_close_session</a>(<br> _pamh: &<aclass="enum"href="module/enum.PamHandle.html"title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br> args: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><&<aclass="struct"href="https://doc.rust-lang.org/1.67.1/core/ffi/c_str/struct.CStr.html"title="struct core::ffi::c_str::CStr">CStr</a>>,<br> _flags: <aclass="type"href="constants/type.PamFlag.html"title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -><aclass="enum"href="constants/enum.PamResultCode.html"title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><divclass='docblock'>This function is called to terminate a session.</div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.sm_open_session"class="met
corresponding authorization scheme. Generally, an authentication module may have access to more
information about a user than their authentication token. This function is used to make such
information available to the application. It should only be called after the user has been
</div></details></div></details><detailsclass="rustdoc-toggle implementors-toggle"><summary><sectionid="impl-Instrument-for-PamKanidm"class="impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276">source</a><ahref="#impl-Instrument-for-PamKanidm"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html"title="trait tracing::instrument::Instrument">Instrument</a> for T</h3></section></summary><divclass="impl-items"><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.instrument"class="method trait-impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#82">source</a><ahref="#method.instrument"class="anchor">§</a><h4class="code-header">fn <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument"class="fn">instrument</a>(self, span: <aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html"title="struct tracing::span::Span">Span</a>) -><aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.Instrumented.html"title="struct tracing::instrument::Instrumented">Instrumented</a><Self></h4></section></summary><divclass='docblock'>Instruments this type with the provided <ahref="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html"title="Span"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.in_current_span"class="method trait-impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121">source</a><ahref="#method.in_current_span"class="anchor">§</a><h4class="code-header">fn <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.in_current_span"class="fn">in_current_span</a>(self) -><aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.Instrumented.html"title="struct tracing::instrument::Instrumented">Instrumented</a><Self></h4></section></summary><divclass='docblock'>Instruments this type with the <ahref="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html#method.current">current</a><ahref="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html"><code>Span</code></a>, returning an
<ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.WithDispatch.html"title="WithDispatch"><code>WithDispatch</code></a> wrapper. <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.WithSubscriber.html#method.with_subscriber">Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.with_current_subscriber"class="method trait-impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#221">source</a><ahref="#method.with_current_subscriber"class="anchor">§</a><h4class="code-header">fn <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.WithSubscriber.html#method.with_current_subscriber"class="fn">with_current_subscriber</a>(self) -><aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.WithDispatch.html"title="struct tracing::instrument::WithDispatch">WithDispatch</a><Self></h4></section></summary><divclass='docblock'>Attaches the current <ahref="https://docs.rs/tracing/0.1.37/tracing/dispatcher/index.html#setting-the-default-subscriber">default</a><ahref="https://docs.rs/tracing-core/0.1.22/tracing_core/subscriber/trait.Subscriber.html"><code>Subscriber</code></a> to this type, returning a