Mercurial > crates > nonstick
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 |
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 } |