summaryrefslogtreecommitdiffstats
path: root/content/posts/WIP-how-bsd-authentication-works/graph.dot
blob: 6414b11124f3b942a2e0367e8ad97d050ae670cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
digraph G {
    subgraph cluster_authenticate {
        label = "authenticate.c"
        auth_userokay;
        auth_usercheck;
        auth_verify;
    }

    subgraph cluster_auth_subr {
        label = "auth_subr.c"
        auth_open;
        auth_call;
        auth_close;
        // auth_setitem;
        // auth_setdata;
        // auth_setopts;
        auth_set[label="auth_set*"];
        auth_setstate;
        // _auth_spool;
    }

    subgraph cluster_login_cap {
        label = "libc/login_cap.c"
        login_getclass
        login_getstyle
    }

    subgraph cluster_getpwent {
        label = "libc/getpwent.c"
        getpwnam_r;
    }

    subgraph cluster_exec {
        login[label="login_*"];
        execve;
    }


    start -> auth_userokay;
    auth_userokay -> auth_usercheck;
    auth_usercheck -> getpwnam_r;
    auth_usercheck -> login_getclass;
    auth_usercheck -> login_getstyle;
    // if password given
    auth_usercheck -> auth_open;
    // auth_usercheck -> auth_setitem;
    // auth_usercheck -> auth_setdata;
    auth_usercheck -> auth_set;
    // fi
    auth_usercheck -> auth_verify;

    auth_verify -> auth_setstate;
    auth_verify -> auth_call;

    auth_call -> execve[label="fork()"];
    // auth_call -> _auth_spool;

    execve -> login;
    login -> auth_call[label="back channel"];
    // login -> _auth_spool[label="back channel"];


    // auth_usercheck -> { auth_setitem auth_setdata auth_setopts }

    // auth_call -> auth_userokay;
    auth_userokay -> auth_close;
}