annotate pam/src/hooks.rs @ 21:aa7e8bd083ef

add more docs and other cleanup
author Anthony Nowell <anthony@algorithmia.com>
date Tue, 26 Sep 2017 02:15:28 -0600
parents 734ca62159fb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
1 use module::{PamHandle};
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
2 use constants::{PamFlag, PamResultCode};
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
3 use std::ffi::CStr;
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
4
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
5 /// Provides functions that are invoked by the entrypoints generated by the
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
6 /// [`pam_hooks!` macro](../macro.pam_hooks.html).
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
7 ///
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
8 /// All of hooks are ignored by PAM dispatch by default given the default return value of `PAM_IGNORE`.
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
9 /// Override any functions that you want to handle with your module. See `man pam(3)`.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
10 #[allow(unused_variables)]
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
11 pub trait PamHooks {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
12 /// This function performs the task of establishing whether the user is permitted to gain access at
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
13 /// this time. It should be understood that the user has previously been validated by an
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
14 /// authentication module. This function checks for other things. Such things might be: the time of
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
15 /// day or the date, the terminal line, remote hostname, etc. This function may also determine
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
16 /// things like the expiration on passwords, and respond that the user change it before continuing.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
17 fn acct_mgmt(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
18 PamResultCode::PAM_IGNORE
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
19 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
21 /// This function performs the task of authenticating the user.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
22 fn sm_authenticate(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
23 PamResultCode::PAM_IGNORE
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
24 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
25
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
26 /// This function is used to (re-)set the authentication token of the user.
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
27 ///
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
28 /// The PAM library calls this function twice in succession. The first time with
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
29 /// PAM_PRELIM_CHECK and then, if the module does not return PAM_TRY_AGAIN, subsequently with
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
30 /// PAM_UPDATE_AUTHTOK. It is only on the second call that the authorization token is
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
31 /// (possibly) changed.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
32 fn sm_chauthtok(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
33 PamResultCode::PAM_IGNORE
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
34 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
35
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
36 /// This function is called to terminate a session.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
37 fn sm_close_session(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
38 PamResultCode::PAM_IGNORE
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
39 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
40
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
41 /// This function is called to commence a session.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
42 fn sm_open_session(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
43 PamResultCode::PAM_IGNORE
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
44 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
45
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
46 /// This function performs the task of altering the credentials of the user with respect to the
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
47 /// corresponding authorization scheme. Generally, an authentication module may have access to more
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
48 /// information about a user than their authentication token. This function is used to make such
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
49 /// information available to the application. It should only be called after the user has been
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
50 /// authenticated but before a session has been established.
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
51 fn sm_setcred(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
52 PamResultCode::PAM_IGNORE
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
53 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
54 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
55
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
56 /// Macro to generate the `extern "C"` entrypoint bindings needed by PAM
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
57 ///
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
58 /// You can call `pam_hooks!(SomeType);` for any type that implements `PamHooks`
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
59 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
60 /// ## Examples:
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
61 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
62 /// Here is full example of a PAM module that would authenticate and authorize everybody:
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
63 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
64 /// ```
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
65 /// #[macro_use] extern crate pam;
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
66 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
67 /// use pam::hooks::PamHooks;
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
68 /// use pam::module::PamHandle;
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
69 /// use pam::constants::{PamResultCode, PamFlag};
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
70 /// use std::ffi::CStr;
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
71 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
72 /// # fn main() {}
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
73 /// struct MyPamModule;
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
74 /// pam_hooks!(MyPamModule);
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
75 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
76 /// impl PamHooks for MyPamModule {
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
77 /// fn sm_authenticate(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
78 /// println!("Everybody is authenticated!");
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
79 /// PamResultCode::PAM_SUCCESS
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
80 /// }
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
81 ///
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
82 /// fn acct_mgmt(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode {
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
83 /// println!("Everybody is authorized!");
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
84 /// PamResultCode::PAM_SUCCESS
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
85 /// }
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
86 /// }
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
87 /// ```
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
88 #[macro_export]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
89 macro_rules! pam_hooks {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
90 ($ident:ident) => (
21
aa7e8bd083ef add more docs and other cleanup
Anthony Nowell <anthony@algorithmia.com>
parents: 20
diff changeset
91 pub use self::pam_hooks_scope::*;
20
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
92 mod pam_hooks_scope {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
93 use $crate::module::PamHandle;
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
94 use $crate::constants::{PamFlag, PamResultCode};
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
95 use $crate::hooks::PamHooks;
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
96 use std::ffi::CStr;
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
97 use std::os::raw::{c_char, c_int};
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
98
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
99 fn extract_argv<'a>(argc: c_int, argv: *const *const c_char) -> Vec<&'a CStr> {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
100 (0..argc)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
101 .map(|o| unsafe {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
102 CStr::from_ptr(*argv.offset(o as isize) as *const c_char)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
103 })
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
104 .collect()
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
105 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
106
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
107 #[no_mangle]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
108 pub extern "C" fn pam_sm_acct_mgmt(
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
109 pamh: &PamHandle,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
110 flags: PamFlag,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
111 argc: c_int,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
112 argv: *const *const c_char,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
113 ) -> PamResultCode {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
114 let args = extract_argv(argc, argv);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
115 super::$ident::acct_mgmt(pamh, args, flags)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
116 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
117
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
118 #[no_mangle]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
119 pub extern "C" fn pam_sm_authenticate(
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
120 pamh: &PamHandle,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
121 flags: PamFlag,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
122 argc: c_int,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
123 argv: *const *const c_char,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
124 ) -> PamResultCode {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
125 let args = extract_argv(argc, argv);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
126 super::$ident::sm_authenticate(pamh, args, flags)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
127 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
128
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
129 #[no_mangle]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
130 pub extern "C" fn pam_sm_chauthtok(
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
131 pamh: &PamHandle,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
132 flags: PamFlag,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
133 argc: c_int,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
134 argv: *const *const c_char,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
135 ) -> PamResultCode {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
136 let args = extract_argv(argc, argv);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
137 super::$ident::sm_chauthtok(pamh, args, flags)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
138 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
139
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
140 #[no_mangle]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
141 pub extern "C" fn pam_sm_close_session(
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
142 pamh: &PamHandle,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
143 flags: PamFlag,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
144 argc: c_int,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
145 argv: *const *const c_char,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
146 ) -> PamResultCode {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
147 let args = extract_argv(argc, argv);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
148 super::$ident::sm_close_session(pamh, args, flags)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
149 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
150
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
151 #[no_mangle]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
152 pub extern "C" fn pam_sm_open_session(
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
153 pamh: &PamHandle,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
154 flags: PamFlag,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
155 argc: c_int,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
156 argv: *const *const c_char,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
157 ) -> PamResultCode {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
158 let args = extract_argv(argc, argv);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
159 super::$ident::sm_open_session(pamh, args, flags)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
160 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
161
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
162 #[no_mangle]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
163 pub extern "C" fn pam_sm_setcred(
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
164 pamh: &PamHandle,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
165 flags: PamFlag,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
166 argc: c_int,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
167 argv: *const *const c_char,
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
168 ) -> PamResultCode {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
169 let args = extract_argv(argc, argv);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
170 super::$ident::sm_setcred(pamh, args, flags)
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
171 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
172 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
173 )
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
174 }
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
175
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
176 #[cfg(test)]
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
177 pub mod test {
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
178 use super::PamHooks;
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
179
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
180 struct Foo;
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
181 impl PamHooks for Foo {}
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
182
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
183 pam_hooks!(Foo);
734ca62159fb Refactor exported endpoings into pam_hooks macro
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
184 }