<!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 `credential` mod in crate `kanidmd_lib`."><metaname="keywords"content="rust, rustlang, rust-lang, credential"><title>kanidmd_lib::credential - 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="../../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 mod"><!--[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="../../kanidmd_lib/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="../../kanidmd_lib/index.html"><divclass="logo-container"><imgclass="rust-logo"src="../../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></div></a><h2class="location"><ahref="#">Module credential</a></h2><divclass="sidebar-elems"><section><ulclass="block"><li><ahref="#modules">Modules</a></li><li><ahref="#structs">Structs</a></li><li><ahref="#enums">Enums</a></li><li><ahref="#constants">Constants</a></li></ul></section></div></nav><main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><inputclass="search-input"name="search"aria-label="Run search in the documentation"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"><divid="help-button"title="help"tabindex="-1"><ahref="../../help.html">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1class="fqn">Module <ahref="../index.html">kanidmd_lib</a>::<wbr><aclass="mod"href="#">credential</a><buttonid="copy-path"onclick="copy_path(this)"title="Copy item path to clipboard"><imgsrc="../../static.files/clipboard-7571035ce49a181d.svg"width="19"height="
a credential can have many factors. Only successful auth to a credential as a whole unit
will succeed. For example:
A: Credential { password: aaa }
B: Credential { password: bbb, otp: … }
In this case, if we selected credential B, and then provided password “aaa” we would deny
the auth as the password of B was incorrect. Additionally, while A only needs the “password”,
B requires both the password and otp to be valid.</div></div><divclass="item-row"><divclass="item-left module-item"><aclass="struct"href="struct.Password.html"title="kanidmd_lib::credential::Password struct">Password</a></div></div></div><h2id="enums"class="small-section-header"><ahref="#enums">Enums</a></h2><divclass="item-table"><divclass="item-row"><divclass="item-left module-item"><aclass="enum"href="enum.CredentialType.html"title="kanidmd_lib::credential::CredentialType enum">CredentialType</a></div><divclass="item-right docblock-short">The type of credential that is stored. Each of these represents a full set of ‘what is required’
to complete an authentication session. The reason to have these typed like this is so we can
apply policy later to what classes or levels of credentials can be used. We use these types
to also know what type of auth session handler to initiate.</div></div></div><h2id="constants"class="small-section-header"><ahref="#constants">Constants</a></h2><divclass="item-table"><divclass="item-row"><divclass="item-left module-item"><aclass="constant"href="constant.PBKDF2_MIN_NIST_COST.html"title="kanidmd_lib::credential::PBKDF2_MIN_NIST_COST constant">PBKDF2_MIN_NIST_COST</a></div></div></div></section></div></main><divid="rustdoc-vars"data-root-path="../../"data-static-root-path="../../static.files/"data-current-crate="kanidmd_lib"data-themes=""data-resource-suffix=""data-rustdoc-version="1.67.1 (d5a82bbd2 2023-02-07)"data-search-js="search-444266647c4dba98.js"data-settings-js="settings-bebeae96e00e4617.js"data-settings-css="settings-af96d9e2fc13e081.css"></div></body></html>