Blame


1 2277c5d7 2004-03-21 devnull #include "std.h"
2 2277c5d7 2004-03-21 devnull #include "dat.h"
3 2277c5d7 2004-03-21 devnull
4 2277c5d7 2004-03-21 devnull Logbuf confbuf;
5 2277c5d7 2004-03-21 devnull
6 2277c5d7 2004-03-21 devnull void
7 2277c5d7 2004-03-21 devnull confirmread(Req *r)
8 2277c5d7 2004-03-21 devnull {
9 2277c5d7 2004-03-21 devnull lbread(&confbuf, r);
10 2277c5d7 2004-03-21 devnull }
11 2277c5d7 2004-03-21 devnull
12 2277c5d7 2004-03-21 devnull void
13 2277c5d7 2004-03-21 devnull confirmflush(Req *r)
14 2277c5d7 2004-03-21 devnull {
15 2277c5d7 2004-03-21 devnull lbflush(&confbuf, r);
16 2277c5d7 2004-03-21 devnull }
17 2277c5d7 2004-03-21 devnull
18 2277c5d7 2004-03-21 devnull int
19 2277c5d7 2004-03-21 devnull confirmwrite(char *s)
20 2277c5d7 2004-03-21 devnull {
21 2277c5d7 2004-03-21 devnull char *t, *ans;
22 2277c5d7 2004-03-21 devnull int allow;
23 2277c5d7 2004-03-21 devnull ulong tag;
24 2277c5d7 2004-03-21 devnull Attr *a;
25 2277c5d7 2004-03-21 devnull Conv *c;
26 2277c5d7 2004-03-21 devnull
27 2277c5d7 2004-03-21 devnull a = _parseattr(s);
28 2277c5d7 2004-03-21 devnull if(a == nil){
29 2277c5d7 2004-03-21 devnull werrstr("bad attr");
30 2277c5d7 2004-03-21 devnull return -1;
31 2277c5d7 2004-03-21 devnull }
32 2277c5d7 2004-03-21 devnull if((t = _strfindattr(a, "tag")) == nil){
33 2277c5d7 2004-03-21 devnull werrstr("no tag");
34 2277c5d7 2004-03-21 devnull return -1;
35 2277c5d7 2004-03-21 devnull }
36 2277c5d7 2004-03-21 devnull tag = strtoul(t, 0, 0);
37 2277c5d7 2004-03-21 devnull if((ans = _strfindattr(a, "answer")) == nil){
38 2277c5d7 2004-03-21 devnull werrstr("no answer");
39 2277c5d7 2004-03-21 devnull return -1;
40 2277c5d7 2004-03-21 devnull }
41 2277c5d7 2004-03-21 devnull if(strcmp(ans, "yes") == 0)
42 2277c5d7 2004-03-21 devnull allow = 1;
43 2277c5d7 2004-03-21 devnull else if(strcmp(ans, "no") == 0)
44 2277c5d7 2004-03-21 devnull allow = 0;
45 2277c5d7 2004-03-21 devnull else{
46 2277c5d7 2004-03-21 devnull werrstr("bad answer");
47 2277c5d7 2004-03-21 devnull return -1;
48 2277c5d7 2004-03-21 devnull }
49 2277c5d7 2004-03-21 devnull for(c=conv; c; c=c->next){
50 2277c5d7 2004-03-21 devnull if(tag == c->tag){
51 2277c5d7 2004-03-21 devnull nbsendul(c->keywait, allow);
52 2277c5d7 2004-03-21 devnull break;
53 2277c5d7 2004-03-21 devnull }
54 2277c5d7 2004-03-21 devnull }
55 2277c5d7 2004-03-21 devnull if(c == nil){
56 2277c5d7 2004-03-21 devnull werrstr("tag not found");
57 2277c5d7 2004-03-21 devnull return -1;
58 2277c5d7 2004-03-21 devnull }
59 2277c5d7 2004-03-21 devnull return 0;
60 2277c5d7 2004-03-21 devnull }
61 2277c5d7 2004-03-21 devnull
62 2277c5d7 2004-03-21 devnull int
63 2277c5d7 2004-03-21 devnull confirmkey(Conv *c, Key *k)
64 2277c5d7 2004-03-21 devnull {
65 2277c5d7 2004-03-21 devnull if(*confirminuse == 0)
66 2277c5d7 2004-03-21 devnull return -1;
67 2277c5d7 2004-03-21 devnull
68 2277c5d7 2004-03-21 devnull lbappend(&confbuf, "confirm tag=%lud %A %N", c->tag, k->attr, k->privattr);
69 2277c5d7 2004-03-21 devnull c->state = "keyconfirm";
70 2277c5d7 2004-03-21 devnull return recvul(c->keywait);
71 2277c5d7 2004-03-21 devnull }
72 2277c5d7 2004-03-21 devnull
73 2277c5d7 2004-03-21 devnull Logbuf needkeybuf;
74 2277c5d7 2004-03-21 devnull
75 2277c5d7 2004-03-21 devnull void
76 2277c5d7 2004-03-21 devnull needkeyread(Req *r)
77 2277c5d7 2004-03-21 devnull {
78 2277c5d7 2004-03-21 devnull lbread(&needkeybuf, r);
79 2277c5d7 2004-03-21 devnull }
80 2277c5d7 2004-03-21 devnull
81 2277c5d7 2004-03-21 devnull void
82 2277c5d7 2004-03-21 devnull needkeyflush(Req *r)
83 2277c5d7 2004-03-21 devnull {
84 2277c5d7 2004-03-21 devnull lbflush(&needkeybuf, r);
85 2277c5d7 2004-03-21 devnull }
86 2277c5d7 2004-03-21 devnull
87 2277c5d7 2004-03-21 devnull int
88 2277c5d7 2004-03-21 devnull needkeywrite(char *s)
89 2277c5d7 2004-03-21 devnull {
90 2277c5d7 2004-03-21 devnull char *t;
91 2277c5d7 2004-03-21 devnull ulong tag;
92 2277c5d7 2004-03-21 devnull Attr *a;
93 2277c5d7 2004-03-21 devnull Conv *c;
94 2277c5d7 2004-03-21 devnull
95 2277c5d7 2004-03-21 devnull a = _parseattr(s);
96 2277c5d7 2004-03-21 devnull if(a == nil){
97 2277c5d7 2004-03-21 devnull werrstr("empty write");
98 2277c5d7 2004-03-21 devnull return -1;
99 2277c5d7 2004-03-21 devnull }
100 2277c5d7 2004-03-21 devnull if((t = _strfindattr(a, "tag")) == nil){
101 2277c5d7 2004-03-21 devnull werrstr("no tag");
102 2277c5d7 2004-03-21 devnull freeattr(a);
103 2277c5d7 2004-03-21 devnull return -1;
104 2277c5d7 2004-03-21 devnull }
105 2277c5d7 2004-03-21 devnull tag = strtoul(t, 0, 0);
106 2277c5d7 2004-03-21 devnull for(c=conv; c; c=c->next)
107 2277c5d7 2004-03-21 devnull if(c->tag == tag){
108 2277c5d7 2004-03-21 devnull nbsendul(c->keywait, 0);
109 2277c5d7 2004-03-21 devnull break;
110 2277c5d7 2004-03-21 devnull }
111 2277c5d7 2004-03-21 devnull if(c == nil){
112 2277c5d7 2004-03-21 devnull werrstr("tag not found");
113 2277c5d7 2004-03-21 devnull freeattr(a);
114 2277c5d7 2004-03-21 devnull return -1;
115 2277c5d7 2004-03-21 devnull }
116 2277c5d7 2004-03-21 devnull freeattr(a);
117 2277c5d7 2004-03-21 devnull return 0;
118 2277c5d7 2004-03-21 devnull }
119 2277c5d7 2004-03-21 devnull
120 2277c5d7 2004-03-21 devnull int
121 2277c5d7 2004-03-21 devnull needkey(Conv *c, Attr *a)
122 2277c5d7 2004-03-21 devnull {
123 2277c5d7 2004-03-21 devnull if(c == nil || *needkeyinuse == 0)
124 2277c5d7 2004-03-21 devnull return -1;
125 2277c5d7 2004-03-21 devnull
126 2277c5d7 2004-03-21 devnull lbappend(&needkeybuf, "needkey tag=%lud %A", c->tag, a);
127 2277c5d7 2004-03-21 devnull return nbrecvul(c->keywait);
128 2277c5d7 2004-03-21 devnull }
129 2277c5d7 2004-03-21 devnull
130 2277c5d7 2004-03-21 devnull int
131 2277c5d7 2004-03-21 devnull badkey(Conv *c, Key *k, char *msg, Attr *a)
132 2277c5d7 2004-03-21 devnull {
133 2277c5d7 2004-03-21 devnull if(c == nil || *needkeyinuse == 0)
134 2277c5d7 2004-03-21 devnull return -1;
135 2277c5d7 2004-03-21 devnull
136 2277c5d7 2004-03-21 devnull lbappend(&needkeybuf, "badkey tag=%lud %A %N\n%s\n%A",
137 2277c5d7 2004-03-21 devnull c->tag, k->attr, k->privattr, msg, a);
138 2277c5d7 2004-03-21 devnull return nbrecvul(c->keywait);
139 2277c5d7 2004-03-21 devnull }