mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-30 20:35:03 +01:00
Compare commits
828
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2cbfdf51d8 | ||
|
|
231387f437 | ||
|
|
d37ec9d43f | ||
|
|
91506762c9 | ||
|
|
7ef6b908ff | ||
|
|
270dbb52f8 | ||
|
|
ccc6f7bfcd | ||
|
|
79bfcc2d22 | ||
|
|
91e01093ad | ||
|
|
f77743a7ad | ||
|
|
9cd782cad9 | ||
|
|
b69605d8fa | ||
|
|
964edc739b | ||
|
|
56c1874f21 | ||
|
|
513b4d54e0 | ||
|
|
cb53fe8f5c | ||
|
|
cdef477c3d | ||
|
|
8f501224d4 | ||
|
|
2db3fa8d19 | ||
|
|
bef735d294 | ||
|
|
8daf812670 | ||
|
|
d5ce44021b | ||
|
|
eabb76aa81 | ||
|
|
72d49eac59 | ||
|
|
51d4ad369a | ||
|
|
287563c307 | ||
|
|
75b8a7d052 | ||
|
|
90753d7a98 | ||
|
|
1b898727d9 | ||
|
|
1516b86bf6 | ||
|
|
eabecb60b3 | ||
|
|
6c2bdcfefa | ||
|
|
593a5fbf19 | ||
|
|
980d5c3d27 | ||
|
|
ae6dc34a93 | ||
|
|
843dee5a3f | ||
|
|
6caa351bc9 | ||
|
|
b70b7df39c | ||
|
|
939e59b85e | ||
|
|
2d6f11b4be | ||
|
|
cb7418d606 | ||
|
|
a8d9c0672b | ||
|
|
ddd1b9fbd5 | ||
|
|
93a5bd9bf5 | ||
|
|
9e3c0eab47 | ||
|
|
9904d6317c | ||
|
|
29f86c7bab | ||
|
|
011d4ccc61 | ||
|
|
349d67883b | ||
|
|
dbcad9b82e | ||
|
|
a40698a96e | ||
|
|
f9482206fc | ||
|
|
461acf0cf7 | ||
|
|
68513f7ce4 | ||
|
|
b28842e70a | ||
|
|
2f228b8390 | ||
|
|
2d26d694c0 | ||
|
|
68abc405be | ||
|
|
1cf7e1bd11 | ||
|
|
3d92eee11f | ||
|
|
52fda84eeb | ||
|
|
ab9d0aa3e3 | ||
|
|
6a55af626d | ||
|
|
0d6fc294fa | ||
|
|
ea1de1e20f | ||
|
|
a198c9a96e | ||
|
|
ce0454166c | ||
|
|
6d3fc10a33 | ||
|
|
5f063083eb | ||
|
|
474eff4850 | ||
|
|
6221185ef1 | ||
|
|
555f872cd7 | ||
|
|
2d4cc1ae5d | ||
|
|
f986be9f6a | ||
|
|
685c0af9e2 | ||
|
|
9e8df2d15b | ||
|
|
1396c555ea | ||
|
|
65bc0c8fb3 | ||
|
|
d561d94608 | ||
|
|
09b8ce2ef9 | ||
|
|
149ad431b5 | ||
|
|
a4f7379cd4 | ||
|
|
deeb8155dd | ||
|
|
a8e8c42f75 | ||
|
|
6681856467 | ||
|
|
4084f8b6b2 | ||
|
|
542992ec17 | ||
|
|
c81fbb7cb4 | ||
|
|
65ceb8151b | ||
|
|
c0a150389d | ||
|
|
86e10751e5 | ||
|
|
60831bf968 | ||
|
|
2a17234a73 | ||
|
|
f592e0c7d8 | ||
|
|
b9f4917c5f | ||
|
|
737c256605 | ||
|
|
d41f579b57 | ||
|
|
17f5e06a21 | ||
|
|
cf3770074f | ||
|
|
e6d4ee46f1 | ||
|
|
ad9ed1a8ca | ||
|
|
be094295a6 | ||
|
|
dcb7326689 | ||
|
|
efd93305b2 | ||
|
|
51efcdc49a | ||
|
|
25aaeb7f2d | ||
|
|
cdae44a8f4 | ||
|
|
a8f02e9fff | ||
|
|
c93936f249 | ||
|
|
e9516d1916 | ||
|
|
59fe90f426 | ||
|
|
306e7711c5 | ||
|
|
64d3da9399 | ||
|
|
717eb31334 | ||
|
|
db0991f7df | ||
|
|
d76d90600b | ||
|
|
bbad9c5164 | ||
|
|
0f525cd786 | ||
|
|
d945b5d1f0 | ||
|
|
a832b62759 | ||
|
|
91bb19895f | ||
|
|
015260907e | ||
|
|
7b69d2d085 | ||
|
|
9058c77fa2 | ||
|
|
46e4a51691 | ||
|
|
5cf25e9cfd | ||
|
|
6b48c17a15 | ||
|
|
8290802c6b | ||
|
|
5d3fba2f2e | ||
|
|
e0959bc037 | ||
|
|
423cc73364 | ||
|
|
dd46dfc21e | ||
|
|
4a6da35900 | ||
|
|
a18f40d21f | ||
|
|
780ca05343 | ||
|
|
7184e99eb9 | ||
|
|
206edda4ff | ||
|
|
10fe505495 | ||
|
|
72d63537b4 | ||
|
|
dfb78badb9 | ||
|
|
9295078e30 | ||
|
|
07bde751cb | ||
|
|
b85033aad3 | ||
|
|
6c78aa1860 | ||
|
|
6be2387e46 | ||
|
|
25a8c28df7 | ||
|
|
d156743657 | ||
|
|
757e32e0a6 | ||
|
|
512b8eb6b5 | ||
|
|
d85ce565b2 | ||
|
|
fcb73f9930 | ||
|
|
d27715b921 | ||
|
|
9700103308 | ||
|
|
18f3fce383 | ||
|
|
c64e7dc86b | ||
|
|
4afce3a31f | ||
|
|
c1f9987f70 | ||
|
|
189a55fea1 | ||
|
|
8485dbe68a | ||
|
|
92817935b2 | ||
|
|
d28f19f9e5 | ||
|
|
d644e37a8c | ||
|
|
752fdc4069 | ||
|
|
fbbf45f462 | ||
|
|
6b993751fe | ||
|
|
1c8d3e27ec | ||
|
|
277414286b | ||
|
|
2aefbb0dd2 | ||
|
|
be521a2501 | ||
|
|
f8196e2f46 | ||
|
|
581aa2ba56 | ||
|
|
f3648f9ee8 | ||
|
|
9ac5748e80 | ||
|
|
d1597564b9 | ||
|
|
322d56e65d | ||
|
|
b6dac1da1c | ||
|
|
8621635a42 | ||
|
|
ee1bfc2bf4 | ||
|
|
2b9f3ac075 | ||
|
|
00e64820f0 | ||
|
|
f7b0b03a43 | ||
|
|
88d77308a1 | ||
|
|
4817d2c384 | ||
|
|
05d8b864dc | ||
|
|
66e84962fd | ||
|
|
9aa81d1872 | ||
|
|
c615850513 | ||
|
|
3f4f1fe04d | ||
|
|
455d6da9ef | ||
|
|
d1af10a3fe | ||
|
|
5eb89ad95b | ||
|
|
3e2a062f27 | ||
|
|
e2c0f34946 | ||
|
|
dcda7677a9 | ||
|
|
3903ba4a4b | ||
|
|
a03952c3fc | ||
|
|
bdb2942624 | ||
|
|
5de512060c | ||
|
|
e964af08c0 | ||
|
|
9556f39143 | ||
|
|
5d121d94a4 | ||
|
|
2c15b166c9 | ||
|
|
993b72dc3d | ||
|
|
86d5101b4e | ||
|
|
d9d1efa667 | ||
|
|
e038d7bcbc | ||
|
|
38b4dc401d | ||
|
|
2407940ce0 | ||
|
|
8c58217582 | ||
|
|
0c1b38c41a | ||
|
|
a87c029736 | ||
|
|
5bb16227a5 | ||
|
|
0e97690ac1 | ||
|
|
ba5363085e | ||
|
|
766cdadf01 | ||
|
|
16f571e736 | ||
|
|
b18b803f33 | ||
|
|
e451e08192 | ||
|
|
de4a480cda | ||
|
|
230a4227ca | ||
|
|
835f901f21 | ||
|
|
822cfeecd5 | ||
|
|
29223026f1 | ||
|
|
9e81ff7cfa | ||
|
|
925a5110ce | ||
|
|
bcf7e0317b | ||
|
|
219f58e41a | ||
|
|
2fcab564a6 | ||
|
|
7336a8acac | ||
|
|
e3a12519a7 | ||
|
|
f461d01768 | ||
|
|
ccf639f947 | ||
|
|
f62325277f | ||
|
|
5f8fa8829f | ||
|
|
bb54293e04 | ||
|
|
d80e34ed48 | ||
|
|
093a7beb67 | ||
|
|
f44aad9ecb | ||
|
|
3e8ee7c922 | ||
|
|
0f8f646de4 | ||
|
|
3536c916a7 | ||
|
|
ca2abb0668 | ||
|
|
d2211cb251 | ||
|
|
d5b5ede018 | ||
|
|
9a04aede04 | ||
|
|
2bec671fa7 | ||
|
|
6a237fbb48 | ||
|
|
9489798d39 | ||
|
|
f279958ef7 | ||
|
|
95199a2b93 | ||
|
|
17957bdcab | ||
|
|
ae33388439 | ||
|
|
7be9bfb073 | ||
|
|
14a1dcd038 | ||
|
|
4300d4453a | ||
|
|
91c1af269b | ||
|
|
1375c38d9e | ||
|
|
19b07353bf | ||
|
|
b51848fe13 | ||
|
|
c533f332e0 | ||
|
|
fb69d5c62f | ||
|
|
a44f2067f9 | ||
|
|
5387177170 | ||
|
|
4cebcd747c | ||
|
|
e7a57e693f | ||
|
|
7fcb71d82b | ||
|
|
7cb1ec8363 | ||
|
|
453a26ef54 | ||
|
|
04640727e3 | ||
|
|
f46d950f00 | ||
|
|
ecfd1091be | ||
|
|
25e0f22636 | ||
|
|
0c4387a47f | ||
|
|
0c881fd16d | ||
|
|
3baa4aa17f | ||
|
|
94a1304f8c | ||
|
|
3c1a12ac40 | ||
|
|
6445760383 | ||
|
|
2682597cbe | ||
|
|
3901d8e3f2 | ||
|
|
ea881e14a3 | ||
|
|
765f8d09b1 | ||
|
|
b4d8bc0d3d | ||
|
|
4f2f157888 | ||
|
|
e0748b411c | ||
|
|
96a6d85233 | ||
|
|
0d53a0a640 | ||
|
|
8968c81353 | ||
|
|
29f8aa53ae | ||
|
|
a01916a698 | ||
|
|
8704e4dc1f | ||
|
|
9363c0d35b | ||
|
|
3b7ccb04a9 | ||
|
|
e14f11ef9b | ||
|
|
c783776133 | ||
|
|
7652784297 | ||
|
|
2a01c79e30 | ||
|
|
e8ec05d06c | ||
|
|
5a6063ff0a | ||
|
|
ca0e4cb05b | ||
|
|
c981d07473 | ||
|
|
9cd8157775 | ||
|
|
baded1b2f2 | ||
|
|
171acfbbeb | ||
|
|
a907bb1385 | ||
|
|
b1a7e10b62 | ||
|
|
1a69aa9f14 | ||
|
|
8138815f49 | ||
|
|
473771e53d | ||
|
|
162b1b584b | ||
|
|
1b1cb97915 | ||
|
|
5000f13409 | ||
|
|
8ab74ce9e4 | ||
|
|
7a796ac8d9 | ||
|
|
c03d25376a | ||
|
|
767f366073 | ||
|
|
4559a6b02f | ||
|
|
6bd0628fee | ||
|
|
04edb7a671 | ||
|
|
ef8edf6df7 | ||
|
|
20bbc7fba4 | ||
|
|
88c0303515 | ||
|
|
cdb217b562 | ||
|
|
144554db5f | ||
|
|
16d158e215 | ||
|
|
48b664f842 | ||
|
|
0572714c9d | ||
|
|
abbe627ca1 | ||
|
|
83388ccf94 | ||
|
|
48aa14f0dc | ||
|
|
edea2e61c5 | ||
|
|
aa7489f93d | ||
|
|
d8bba1694b | ||
|
|
7c5e76d052 | ||
|
|
198d8d0786 | ||
|
|
14fb3f9b4a | ||
|
|
be212f13d4 | ||
|
|
78e55a1f29 | ||
|
|
885f2f31b4 | ||
|
|
5baa9b6d14 | ||
|
|
38f70e7a6e | ||
|
|
ed1cde0b4a | ||
|
|
2309c4a999 | ||
|
|
78983fc28f | ||
|
|
1b7cb109d3 | ||
|
|
49d406e646 | ||
|
|
da18bb0244 | ||
|
|
e3de2fcdac | ||
|
|
1f7e52748f | ||
|
|
37a1e3d683 | ||
|
|
e2cc078246 | ||
|
|
accd7f182e | ||
|
|
c3287ad65e | ||
|
|
0d5d5c6590 | ||
|
|
10c40a2962 | ||
|
|
eef505415e | ||
|
|
cc36530818 | ||
|
|
5ee6f4079a | ||
|
|
916897d602 | ||
|
|
e2750f9798 | ||
|
|
4b8fece1be | ||
|
|
eb4b0b134c | ||
|
|
fdc6bfeb8d | ||
|
|
d2862cf2f9 | ||
|
|
8728e9a57f | ||
|
|
1ee58d620a | ||
|
|
32e3836bbe | ||
|
|
49e0e08d6d | ||
|
|
d5977acceb | ||
|
|
286216e0ce | ||
|
|
b64ae2d968 | ||
|
|
26aeafec71 | ||
|
|
1bdcc92bcc | ||
|
|
d9515625fd | ||
|
|
1790d7b066 | ||
|
|
ad465d0820 | ||
|
|
ede96f76f2 | ||
|
|
5c6b0b3917 | ||
|
|
d2d02801b9 | ||
|
|
85d8618c07 | ||
|
|
6e0323e4cf | ||
|
|
e46d49258d | ||
|
|
43615d1ed6 | ||
|
|
77bd1b2de8 | ||
|
|
0bdfca6fa5 | ||
|
|
ad4bc993e9 | ||
|
|
64ac1deeaf | ||
|
|
daf37a5fad | ||
|
|
725e03410b | ||
|
|
4c4930c846 | ||
|
|
0ad8632147 | ||
|
|
319d761698 | ||
|
|
919766f209 | ||
|
|
4078969762 | ||
|
|
58f8c280ed | ||
|
|
6e6ddf8eda | ||
|
|
efec88c18b | ||
|
|
0631427a4f | ||
|
|
d33c9001a1 | ||
|
|
a15d7d6877 | ||
|
|
5d1eca7c67 | ||
|
|
1eef9d2ac7 | ||
|
|
45667ce06d | ||
|
|
eaa7cff9c8 | ||
|
|
b27bd16ec7 | ||
|
|
f0fef65807 | ||
|
|
ea0a451a2a | ||
|
|
52ce739856 | ||
|
|
b2fa969f88 | ||
|
|
1578fd8c47 | ||
|
|
4d368f5da3 | ||
|
|
0bebdde676 | ||
|
|
d8ad5a9a3f | ||
|
|
a0c0dd6046 | ||
|
|
60ef7d845f | ||
|
|
5ab6eb11a0 | ||
|
|
9592440293 | ||
|
|
9a08fb3f11 | ||
|
|
a59bf652cb | ||
|
|
7635313216 | ||
|
|
6334fa7d69 | ||
|
|
95d47841b3 | ||
|
|
69809bc570 | ||
|
|
e48bc1519c | ||
|
|
13691f5029 | ||
|
|
a35d83dc32 | ||
|
|
e9751602f4 | ||
|
|
7b1985dd1c | ||
|
|
761e54501e | ||
|
|
272462119b | ||
|
|
11d48d1b06 | ||
|
|
694c80d174 | ||
|
|
331e712d81 | ||
|
|
b46ed566c4 | ||
|
|
a246afa542 | ||
|
|
a6bf85e2e9 | ||
|
|
250f2cb4d4 | ||
|
|
5db695f1b4 | ||
|
|
254d331a9b | ||
|
|
75cf23ab3f | ||
|
|
1238eeed5a | ||
|
|
3ce1dfc1a8 | ||
|
|
dc33a5c23e | ||
|
|
0be361e833 | ||
|
|
d2809bd279 | ||
|
|
6c96d2c008 | ||
|
|
d23848c2c4 | ||
|
|
bcc4b23e86 | ||
|
|
de1781a6cf | ||
|
|
cd74604cdd | ||
|
|
a4f38bd841 | ||
|
|
135d378ec3 | ||
|
|
02cb6e8506 | ||
|
|
8c1fca893f | ||
|
|
bfbc575b27 | ||
|
|
9c09dd25d9 | ||
|
|
812a0e0392 | ||
|
|
8d17804411 | ||
|
|
861e44f806 | ||
|
|
b7e44174a7 | ||
|
|
d7390d0da0 | ||
|
|
c77d3aa154 | ||
|
|
3092beeb7c | ||
|
|
658bcc5f0e | ||
|
|
b2f01a7ab6 | ||
|
|
f5dda3dad8 | ||
|
|
a2da4d8617 | ||
|
|
759761b0c1 | ||
|
|
c99f1d30b8 | ||
|
|
0be7b5f27f | ||
|
|
078f9c1287 | ||
|
|
21ce69b458 | ||
|
|
e3857bbe00 | ||
|
|
d1fbe51ac3 | ||
|
|
710a102eda | ||
|
|
7ca69134ba | ||
|
|
88a42dd7be | ||
|
|
3bec1d3130 | ||
|
|
d2d743d878 | ||
|
|
f91b4e7ccc | ||
|
|
3714b6c2cb | ||
|
|
ff17e8c3ab | ||
|
|
2e25e8604b | ||
|
|
f2c9b7539a | ||
|
|
9b7ce22cbf | ||
|
|
fa70835c8d | ||
|
|
d50feef990 | ||
|
|
a42f801c98 | ||
|
|
822aa5fd10 | ||
|
|
e7542a7cb4 | ||
|
|
9e17b25c75 | ||
|
|
9fe08c001d | ||
|
|
3dd53e7ad4 | ||
|
|
e6d31664bc | ||
|
|
84b89df2a7 | ||
|
|
0d17f6a08b | ||
|
|
91be4928b6 | ||
|
|
de5a5ed6a2 | ||
|
|
45534a87df | ||
|
|
e36212e172 | ||
|
|
03bbd3019d | ||
|
|
6bb17fec07 | ||
|
|
405b22bceb | ||
|
|
4a23cacbbc | ||
|
|
dcb4a4aa2a | ||
|
|
e8fbbfaace | ||
|
|
e24e5eb9dc | ||
|
|
aadbae2e22 | ||
|
|
4d3056d654 | ||
|
|
83576757b0 | ||
|
|
63cdbc0be9 | ||
|
|
c3006c0250 | ||
|
|
8f83184f65 | ||
|
|
33f3008eb8 | ||
|
|
50dae86932 | ||
|
|
565be2e534 | ||
|
|
a6acf5ce35 | ||
|
|
4fbd64882b | ||
|
|
e356442fbe | ||
|
|
f81673587e | ||
|
|
c29a4d4f05 | ||
|
|
889db30f68 | ||
|
|
972c3fb099 | ||
|
|
82f26cf52a | ||
|
|
a7597ca26d | ||
|
|
6178932cb0 | ||
|
|
6f6ec01338 | ||
|
|
742ade1078 | ||
|
|
c5fad916cd | ||
|
|
e677c0ac5b | ||
|
|
02653efcc4 | ||
|
|
f1d02b48c5 | ||
|
|
f8ea6612e7 | ||
|
|
59079338c0 | ||
|
|
05f66e3896 | ||
|
|
22228e8b42 | ||
|
|
33b6b9adb1 | ||
|
|
947be77799 | ||
|
|
777b7ea81a | ||
|
|
5013526046 | ||
|
|
55aa3fde74 | ||
|
|
8f0b05c51d | ||
|
|
8ad11607c3 | ||
|
|
710fd6c9c9 | ||
|
|
09ee2f6cc5 | ||
|
|
ab4680874f | ||
|
|
efeda8dfa0 | ||
|
|
9e2be01a3f | ||
|
|
e5e4722527 | ||
|
|
9175817626 | ||
|
|
dfdefff7a8 | ||
|
|
8fac4e2a11 | ||
|
|
ac83763b6a | ||
|
|
0d20cbe8b0 | ||
|
|
a053b8f9ff | ||
|
|
b6834b1b11 | ||
|
|
d332dc97d7 | ||
|
|
afb1529a4c | ||
|
|
9bac00f680 | ||
|
|
5f3986bd29 | ||
|
|
33c36ac217 | ||
|
|
e2a11da437 | ||
|
|
ab3784b2b2 | ||
|
|
5673341b32 | ||
|
|
1a6675a6d4 | ||
|
|
0daa877b30 | ||
|
|
60bf70a735 | ||
|
|
527339cc21 | ||
|
|
71e8712890 | ||
|
|
e783ed7fdd | ||
|
|
f3297de099 | ||
|
|
aae40a3d45 | ||
|
|
147205e2f4 | ||
|
|
aba844261d | ||
|
|
3e150748a4 | ||
|
|
0f8e618ca0 | ||
|
|
bc5ab83e95 | ||
|
|
5e0ce1662b | ||
|
|
8dddf92404 | ||
|
|
e6bf4af0d4 | ||
|
|
9338a1d5fa | ||
|
|
ee61439e6e | ||
|
|
e5adfa8d01 | ||
|
|
0eaf38064e | ||
|
|
ab5bd2dbcf | ||
|
|
b664ae1640 | ||
|
|
3df7a83b1c | ||
|
|
db7e641fba | ||
|
|
68c5b58067 | ||
|
|
fa41d9f3d8 | ||
|
|
8759b73be4 | ||
|
|
68dd1de4ec | ||
|
|
97fff7126e | ||
|
|
3260dd9eb3 | ||
|
|
d1a5153100 | ||
|
|
451aefc410 | ||
|
|
b8a69800bd | ||
|
|
e48769d944 | ||
|
|
41f127481f | ||
|
|
dab936defb | ||
|
|
c0d19c3fc5 | ||
|
|
50268f6c5d | ||
|
|
e35a8d4c12 | ||
|
|
c3426e7852 | ||
|
|
e42005ec2b | ||
|
|
4277b40138 | ||
|
|
42c3976a26 | ||
|
|
e693e9d5d3 | ||
|
|
b1f160949b | ||
|
|
dab9d1a479 | ||
|
|
ccc54c07d2 | ||
|
|
4a91b20265 | ||
|
|
dfe8fbad35 | ||
|
|
713caf5e4e | ||
|
|
bc964384be | ||
|
|
4fa9f244f1 | ||
|
|
b9e04c7ab1 | ||
|
|
c27b34a150 | ||
|
|
6876a5d303 | ||
|
|
f2dc01af18 | ||
|
|
f708de2952 | ||
|
|
55eea8e118 | ||
|
|
8c0e41ba61 | ||
|
|
4ca1e2ae08 | ||
|
|
74aecea13c | ||
|
|
461f63736d | ||
|
|
febdd57e3b | ||
|
|
7f31ee452a | ||
|
|
72f64e5855 | ||
|
|
1c6ef639b8 | ||
|
|
f5458faca1 | ||
|
|
bf672a0e91 | ||
|
|
071112cdc7 | ||
|
|
bfeb800d4b | ||
|
|
5844cf44f9 | ||
|
|
fccfc0d56b | ||
|
|
622c62d193 | ||
|
|
7e2fc20e13 | ||
|
|
49866c35eb | ||
|
|
0ad8abc451 | ||
|
|
00e8910460 | ||
|
|
06c368b9be | ||
|
|
d6cfa55dce | ||
|
|
0b6890b5b3 | ||
|
|
911acace6f | ||
|
|
ee9219e78c | ||
|
|
ad9ff076ab | ||
|
|
4fdaf3d047 | ||
|
|
046ed9b3c0 | ||
|
|
8c37640079 | ||
|
|
4c20fd2619 | ||
|
|
d2e32a284d | ||
|
|
9f2b801eaf | ||
|
|
5f3ba77460 | ||
|
|
cac832a7d0 | ||
|
|
d1c886c942 | ||
|
|
e2762d6b0c | ||
|
|
f683da8346 | ||
|
|
6ddbd89391 | ||
|
|
a0601d56d8 | ||
|
|
0440c9042c | ||
|
|
4c61726fea | ||
|
|
5dc837617d | ||
|
|
a7ec89abd9 | ||
|
|
496d2d7711 | ||
|
|
5e2044dcbe | ||
|
|
2667b626f8 | ||
|
|
90dcf1f68d | ||
|
|
5382a48184 | ||
|
|
dfbd3bbe54 | ||
|
|
9baeaf22aa | ||
|
|
b3240ebab9 | ||
|
|
5ec0c12134 | ||
|
|
31cdc03245 | ||
|
|
059f274907 | ||
|
|
b5e47c10aa | ||
|
|
1f993b918b | ||
|
|
4d1df654da | ||
|
|
95147e546f | ||
|
|
5f7872dfbb | ||
|
|
7376c6dbfb | ||
|
|
82dad92749 | ||
|
|
2facedcfc9 | ||
|
|
932411b898 | ||
|
|
adf178c0cd | ||
|
|
cb3aa50926 | ||
|
|
b9d29a1d36 | ||
|
|
a8db986a29 | ||
|
|
a304b29bdb | ||
|
|
a4099e4a42 | ||
|
|
a55bac977b | ||
|
|
9cf11e38b1 | ||
|
|
a3d9df55da | ||
|
|
1db463ae20 | ||
|
|
bf1848eb6a | ||
|
|
e99acd7ec9 | ||
|
|
88a83c5400 | ||
|
|
5dc5f556f5 | ||
|
|
e19063fc8d | ||
|
|
e19d5bdf54 | ||
|
|
7d35de9b8e | ||
|
|
a26361f8a1 | ||
|
|
2c99009787 | ||
|
|
d13807e7c8 | ||
|
|
300c1ef4f8 | ||
|
|
630150f702 | ||
|
|
30a7cd5252 | ||
|
|
f185378bc1 | ||
|
|
955b1875aa | ||
|
|
225c8750d5 | ||
|
|
f51bf8703c | ||
|
|
5fad3c49d3 | ||
|
|
0ae7e5c514 | ||
|
|
3c2c718001 | ||
|
|
631688cac6 | ||
|
|
2318b8dd04 | ||
|
|
1ab09b46f5 | ||
|
|
84d501b6a9 | ||
|
|
9e5479e60f | ||
|
|
2c778829f0 | ||
|
|
8cbdb9f935 | ||
|
|
b87f91f13d | ||
|
|
e824e3a0f2 | ||
|
|
fdd7805ad4 | ||
|
|
a1f403f522 | ||
|
|
35b06fb39e | ||
|
|
2c5a630d11 | ||
|
|
f2ef6d5414 | ||
|
|
df71eff13a | ||
|
|
f8f3569b3f | ||
|
|
c054e98bfe | ||
|
|
5853f90f42 | ||
|
|
6992d84356 | ||
|
|
d48372ba27 | ||
|
|
ae265e49c4 | ||
|
|
8814eee6c9 | ||
|
|
76c2440aa9 | ||
|
|
ddf00a1f09 | ||
|
|
3ec408c6eb | ||
|
|
bc9112fb36 | ||
|
|
c591b1e93f | ||
|
|
91d82037e6 | ||
|
|
161a0e34c6 | ||
|
|
ad8679e1c4 | ||
|
|
45b89a0d6c | ||
|
|
9314eadda6 | ||
|
|
eaba91132d | ||
|
|
fbc488b5aa | ||
|
|
84e4066ec0 | ||
|
|
1b451fbf5c | ||
|
|
889e6518dc | ||
|
|
0ba45696f3 | ||
|
|
a6f4abbee5 | ||
|
|
f90008a627 | ||
|
|
6b419c555d | ||
|
|
182688c219 | ||
|
|
f36f57f79d | ||
|
|
a23c7a796b | ||
|
|
3de47b52bc | ||
|
|
201ac2aba0 | ||
|
|
de0c965f3a | ||
|
|
c4278ecd9a | ||
|
|
61be425234 | ||
|
|
73483c5efc | ||
|
|
080bac6d9d | ||
|
|
65d95e784c | ||
|
|
594d476838 | ||
|
|
e945181967 | ||
|
|
75336e14c1 | ||
|
|
328503dec0 | ||
|
|
31774e01db | ||
|
|
364f634e45 | ||
|
|
87e6b43c79 | ||
|
|
ceb57be184 | ||
|
|
dfcd331efa | ||
|
|
4fb36a5b96 | ||
|
|
1dfc49cb89 | ||
|
|
b528a54887 | ||
|
|
e23753eb90 | ||
|
|
8375fc8247 | ||
|
|
6f69ddf5a7 | ||
|
|
7937f0334c | ||
|
|
55b0199189 | ||
|
|
c04800cf04 | ||
|
|
dc8de77c8a | ||
|
|
9de403ff4c | ||
|
|
41b96f63b7 | ||
|
|
3586b69e5a | ||
|
|
ac8e73ce3d | ||
|
|
5cfd2d35d1 | ||
|
|
9963660cb5 | ||
|
|
15a04a0c6d | ||
|
|
0df1c0c43b | ||
|
|
ce2437ec6e | ||
|
|
e630fa7528 | ||
|
|
b85d7489de | ||
|
|
a1d7610881 | ||
|
|
cd37f582f8 | ||
|
|
9bb2ad4cd1 | ||
|
|
e3d10a0b91 | ||
|
|
45ca3bdf51 | ||
|
|
01cc4b256f | ||
|
|
b7d2bb0d1e | ||
|
|
b2c36e6c6e | ||
|
|
7d61a9a29e | ||
|
|
f708f5f5b8 | ||
|
|
f61f06eff2 | ||
|
|
be20b9f22e | ||
|
|
d3d1f45931 | ||
|
|
e91d611053 | ||
|
|
0ed4f23096 | ||
|
|
4dd1af5a97 | ||
|
|
5ed3d9fa9e | ||
|
|
5b79a0d6a8 | ||
|
|
cd6c9c2250 | ||
|
|
3c14a01aef | ||
|
|
d15a8445ee | ||
|
|
e52325f993 | ||
|
|
3ffb95b544 | ||
|
|
c109e50d44 | ||
|
|
e2152a520a | ||
|
|
2651d5ab35 | ||
|
|
51f2fae106 | ||
|
|
529168c26d | ||
|
|
3d2fd688ef | ||
|
|
c21c63f75f | ||
|
|
648ccc899d | ||
|
|
bdf5d34f80 |
No files matched your search
@@ -1,4 +1,4 @@
|
||||
# $Id: Makefile,v 1.57.4.7 1995/11/09 10:57:04 jkh Exp $
|
||||
# $Id: Makefile,v 1.57.4.16 1996/06/21 19:41:35 markm Exp $
|
||||
#
|
||||
# Make command line options:
|
||||
# -DCLOBBER will remove /usr/include and MOST of /usr/lib
|
||||
@@ -7,6 +7,7 @@
|
||||
# -DMAKE_EBONES to build eBones (KerberosIV)
|
||||
#
|
||||
# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
|
||||
# -DNOCLEAN to not clean anything at all
|
||||
# -DNOCRYPT will prevent building of crypt versions
|
||||
# -DNOLKM do not build loadable kernel modules
|
||||
# -DNOOBJDIR do not run ``${MAKE} obj''
|
||||
@@ -85,19 +86,27 @@ OBJDIR=
|
||||
.else
|
||||
OBJDIR= obj
|
||||
.endif
|
||||
|
||||
.if defined(NOCLEAN)
|
||||
CLEANDIR=
|
||||
WORLD_CLEANDIST=obj
|
||||
.else
|
||||
WORLD_CLEANDIST=cleandist
|
||||
.if defined(NOCLEANDIR)
|
||||
CLEANDIR= clean
|
||||
.else
|
||||
CLEANDIR= cleandir
|
||||
.endif
|
||||
.endif
|
||||
|
||||
world: hierarchy mk cleandist includes lib-tools libraries tools
|
||||
world: hierarchy mk $(WORLD_CLEANDIST) include-tools includes lib-tools libraries build-tools
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Rebuilding ${DESTDIR} The whole thing"
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo
|
||||
${MAKE} depend all install
|
||||
cd ${.CURDIR}/share/man && ${MAKE} makedb
|
||||
@echo "make world completed on `date`"
|
||||
|
||||
hierarchy:
|
||||
@echo "--------------------------------------------------------------"
|
||||
@@ -219,6 +228,7 @@ includes:
|
||||
cd ${.CURDIR}/lib/libc && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libcurses && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libedit && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libftpio && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libmd && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libmytinfo && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libncurses && ${MAKE} beforeinstall
|
||||
@@ -231,14 +241,16 @@ includes:
|
||||
cd ${.CURDIR}/lib/libtermcap && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libcom_err && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libss && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libforms && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libscsi && ${MAKE} beforeinstall
|
||||
cd ${.CURDIR}/lib/libutil && ${MAKE} beforeinstall
|
||||
|
||||
lib-tools:
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Rebuilding tools needed to build the libraries"
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo
|
||||
cd ${.CURDIR}/usr.bin/xinstall && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/gnu/usr.bin/ld && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/usr.bin/ar && \
|
||||
@@ -295,8 +307,6 @@ libraries:
|
||||
cd ${.CURDIR}/usr.bin/lex/lib && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
|
||||
cd ${.CURDIR}/eBones/des && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/eBones/lib && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
.endif
|
||||
@@ -305,7 +315,15 @@ libraries:
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
.endif
|
||||
|
||||
tools:
|
||||
include-tools:
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Rebuilding tools needed to build the includes"
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo
|
||||
cd ${.CURDIR}/usr.bin/xinstall && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
|
||||
build-tools:
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Rebuilding ${DESTDIR} C compiler, make, sgmlfmt, and zic(8)"
|
||||
@echo "--------------------------------------------------------------"
|
||||
@@ -318,6 +336,8 @@ tools:
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/share/sgml && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/gnu/usr.bin/groff && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/usr.sbin/zic && \
|
||||
${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
; $Id: TODO,v 1.11 1995/04/05 13:16:30 jkh Exp $
|
||||
; $Id: TODO,v 1.12 1995/04/23 21:34:23 paul Exp $
|
||||
|
||||
** To skip this preamble, search forward for the pattern `**'.
|
||||
|
||||
@@ -49,21 +49,12 @@ Thanks!
|
||||
|
||||
** --- cut here ---
|
||||
|
||||
TASKID: 940820002
|
||||
TASK: Add Linux/Crynwr compatible plip mode to lpt.c
|
||||
DETAIL: { Look at the crynwr packet-driver plip.asm (ftp::ftp.ftp.com)
|
||||
and the linux driver for reference. }
|
||||
EMAIL: <phk>
|
||||
CATS: kernel networking
|
||||
GRADE: ADVANCED
|
||||
STATUS: OPEN (*)
|
||||
|
||||
TASKID: 940820003
|
||||
TASK: Add laptop-feature to wd.c
|
||||
DETAIL: { If disk just spun up, do sync when we have it running. Need
|
||||
to detect that disk was turned off, e.g. had a long delay in becomming
|
||||
ready again. }
|
||||
EMAIL: <phk>
|
||||
EMAIL: <phk, nate>
|
||||
CATS: kernel laptop
|
||||
GRADE: INTERMEDIATE
|
||||
STATUS: OPEN
|
||||
@@ -76,21 +67,11 @@ also requires some modification of existing drivers to support being used
|
||||
by PCMCIA cards. This task is both really hard and comparatively easy;
|
||||
hard because it's a big job, easy because others have already gone much of
|
||||
the way and you have their work for reference. }
|
||||
EMAIL: <phk>
|
||||
EMAIL: <phk, nate>
|
||||
CATS: kernel laptop
|
||||
GRADE: ADVANCED
|
||||
STATUS: IN PROGRESS
|
||||
|
||||
TASKID: 940820006
|
||||
TASK: Add bootp/DHCP to the generic ethernet code.
|
||||
DETAIL: { Implement an ioctl(), which will send a bootp on a particular
|
||||
interface and return the data in a usable format. OR make a program which uses
|
||||
existing ioctls to do it. See RFC153[34] for information on DHCP. }
|
||||
EMAIL: <phk>
|
||||
CATS: kernel networking
|
||||
GRADE: ADVANCED
|
||||
STATUS: OPEN (*)
|
||||
|
||||
TASKID: 940820007
|
||||
TASK: Add bootp/DHCP capability to slip driver.
|
||||
DETAIL: { Cisco's products implement this. Both master and slave side would be
|
||||
@@ -149,18 +130,3 @@ EMAIL: <rgrimes, phk>
|
||||
CATS: user
|
||||
GRADE: INTERMEDIATE
|
||||
STATUS: OPEN
|
||||
|
||||
TASKID: 95031701
|
||||
TASK: Implement a file system debugger (fsdb)
|
||||
DETAIL: { Traditionally, there has been a fsdb(8) program in Unix.
|
||||
This program is not part of 4.4BSD, but the current system lacks
|
||||
some utility to low-level step through the file system and repair
|
||||
(or damage:) something in case fsck tells about problems, but the
|
||||
administrator is unlucky with the suggested actions of fsck.
|
||||
The original fsdb had a terrible syntax, something more rationale
|
||||
should be built instead. }
|
||||
EMAIL: <joerg>
|
||||
CATS: user
|
||||
GRADE: ADVANCED
|
||||
STATUS: OPEN
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# From: @(#)Makefile 8.1 (Berkeley) 5/31/93
|
||||
# $Id$
|
||||
# $Id: Makefile,v 1.2 1994/09/18 21:25:26 wollman Exp $
|
||||
|
||||
SUBDIR= cat chmod cp csh date dd df domainname echo ed expr hostname \
|
||||
kill ln ls mkdir mv pax ps pwd rcp rm rmail rmdir sh sleep \
|
||||
|
||||
+2
-1
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)chmod.1 8.4 (Berkeley) 3/31/94
|
||||
.\" $Id$
|
||||
.\" $Id: chmod.1,v 1.2 1994/09/24 02:53:37 davidg Exp $
|
||||
.\"
|
||||
.Dd March 31, 1994
|
||||
.Dt CHMOD 1
|
||||
@@ -274,6 +274,7 @@ There's no
|
||||
.Ar perm
|
||||
option for the naughty bits.
|
||||
.Sh SEE ALSO
|
||||
.Xr chflags 1 ,
|
||||
.Xr install 1 ,
|
||||
.Xr chmod 2 ,
|
||||
.Xr stat 2 ,
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)cp.1 8.3 (Berkeley) 4/18/94
|
||||
.\" $Id$
|
||||
.\" $Id: cp.1,v 1.2 1994/09/24 02:53:40 davidg Exp $
|
||||
.\"
|
||||
.Dd April 18, 1994
|
||||
.Dt CP 1
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: cp.c,v 1.5 1995/04/02 00:49:16 bde Exp $
|
||||
* $Id: cp.c,v 1.6 1995/05/30 00:06:21 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)extern.h 8.2 (Berkeley) 4/1/94
|
||||
* $Id$
|
||||
* $Id: extern.h,v 1.2 1994/09/24 02:53:41 davidg Exp $
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: utils.c,v 1.5 1995/10/03 12:55:01 bde Exp $
|
||||
* $Id: utils.c,v 1.3.4.2 1995/10/05 07:24:24 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: const.c,v 1.2 1994/09/24 02:53:48 davidg Exp $
|
||||
* $Id: const.c,v 1.3 1995/05/30 00:06:29 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)csh.1 8.2 (Berkeley) 1/21/94
|
||||
.\" $Id: csh.1,v 1.2 1994/09/24 02:53:49 davidg Exp $
|
||||
.\" $Id: csh.1,v 1.3 1995/05/06 13:52:29 ache Exp $
|
||||
.\"
|
||||
.Dd January 21, 1994
|
||||
.Dt CSH 1
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: csh.c,v 1.3 1995/05/30 00:06:30 rgrimes Exp $
|
||||
* $Id: csh.c,v 1.3.4.1 1995/08/25 02:55:47 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: func.c,v 1.2 1994/09/24 02:54:04 davidg Exp $
|
||||
* $Id: func.c,v 1.3 1995/05/30 00:06:34 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)date.1 8.2 (Berkeley) 11/17/93
|
||||
.\" $Id: date.1,v 1.5 1995/04/03 20:08:32 joerg Exp $
|
||||
.\" $Id: date.1,v 1.5.4.1 1995/08/28 10:33:04 davidg Exp $
|
||||
.\"
|
||||
.Dd November 17, 1993
|
||||
.Dt DATE 1
|
||||
@@ -127,7 +127,7 @@ Hour, a number from 0 to 23.
|
||||
.It Ar mm
|
||||
Minutes, a number from 0 to 59.
|
||||
.It Ar .ss
|
||||
Seconds, a number from 0 to 61 (59 plus a a maximum of two leap seconds).
|
||||
Seconds, a number from 0 to 61 (59 plus a maximum of two leap seconds).
|
||||
.El
|
||||
.Pp
|
||||
Everything but the minutes is optional.
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: date.c,v 1.4 1995/04/03 20:08:33 joerg Exp $
|
||||
* $Id: date.c,v 1.4.4.1 1995/08/28 10:31:25 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: dd.c,v 1.3 1995/01/17 22:55:59 ache Exp $
|
||||
* $Id: dd.c,v 1.4 1995/01/17 23:04:29 ache Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+2
-5
@@ -35,7 +35,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: df.c,v 1.6 1995/03/19 13:28:15 joerg Exp $
|
||||
* $Id: df.c,v 1.7.4.2 1996/06/05 02:35:24 jkh Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -386,10 +386,7 @@ ufs_df(file, maxwidth)
|
||||
sfsp->f_blocks = sblock.fs_dsize;
|
||||
sfsp->f_bfree = sblock.fs_cstotal.cs_nbfree * sblock.fs_frag +
|
||||
sblock.fs_cstotal.cs_nffree;
|
||||
sfsp->f_bavail = (sblock.fs_dsize * (100 - sblock.fs_minfree) / 100) -
|
||||
(sblock.fs_dsize - sfsp->f_bfree);
|
||||
if (sfsp->f_bavail < 0)
|
||||
sfsp->f_bavail = 0;
|
||||
sfsp->f_bavail = freespace(&sblock, sblock.fs_minfree);
|
||||
sfsp->f_files = sblock.fs_ncg * sblock.fs_ipg;
|
||||
sfsp->f_ffree = sblock.fs_cstotal.cs_nifree;
|
||||
sfsp->f_fsid.val[0] = 0;
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)echo.1 8.1 (Berkeley) 7/22/93
|
||||
.\" $Id$
|
||||
.\" $Id: echo.1,v 1.2 1994/09/24 02:55:17 davidg Exp $
|
||||
.\"
|
||||
.Dd July 22, 1993
|
||||
.Dt ECHO 1
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: echo.c,v 1.2 1994/09/24 02:55:18 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# $Id: Makefile,v 1.9 1994/10/29 10:13:34 phk Exp $
|
||||
# $Id: Makefile,v 1.10 1994/12/18 15:15:10 jkh Exp $
|
||||
|
||||
PROG= ed
|
||||
SRCS= buf.c cbc.c glbl.c io.c main.c re.c sub.c undo.c
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: io.c,v 1.3 1994/09/24 02:55:27 davidg Exp $
|
||||
* $Id: io.c,v 1.4 1995/03/19 13:28:32 joerg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# /b/source/CVS/src/bin/expr/Makefile,v 1.5 1993/06/14 19:56:06 jtc Exp
|
||||
# $Id: Makefile,v 1.6 1994/09/24 02:55:36 davidg Exp $
|
||||
# $Id: Makefile,v 1.7 1995/05/30 00:06:49 rgrimes Exp $
|
||||
|
||||
PROG= expr
|
||||
SRCS= expr.c
|
||||
|
||||
+5
-5
@@ -15,7 +15,7 @@
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by Winning Strategies, Inc.
|
||||
.\" 4. The name of the author may not be used to endorse or promote products
|
||||
.\" derived from this software withough specific prior written permission
|
||||
.\" derived from this software without specific prior written permission
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
@@ -28,7 +28,7 @@
|
||||
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $Id: expr.1,v 1.2 1993/10/04 22:07:27 jtc Exp $
|
||||
.\" $Id: expr.1,v 1.3 1994/04/24 01:18:46 jkh Exp $
|
||||
.\"
|
||||
.Dd July 3, 1993
|
||||
.Dt EXPR 1
|
||||
@@ -51,8 +51,8 @@ All operators are separate arguments to the
|
||||
utility.
|
||||
Characters special to the command interpreter must be escaped.
|
||||
.Pp
|
||||
Operators are listed below in order of increasing precidence.
|
||||
Operators with equal precidence are grouped within { } symbols.
|
||||
Operators are listed below in order of increasing precedence.
|
||||
Operators with equal precedence are grouped within { } symbols.
|
||||
.Bl -tag -width indent
|
||||
.It Ar expr1 Li | Ar expr2
|
||||
Returns the evaluation of
|
||||
@@ -66,7 +66,7 @@ Returns the evaluation of
|
||||
if neither expression evaluates to an empty string or zero;
|
||||
otherwise, returns zero.
|
||||
.It Ar expr1 Li "{=, >, >=, <, <=, !=}" Ar expr2
|
||||
Returns the results of integer comparision if both arguments are integers;
|
||||
Returns the results of integer comparison if both arguments are integers;
|
||||
otherwise, returns the results of string comparison using the locale-specific
|
||||
collation sequence.
|
||||
The result of each comparison is 1 if the specified relation is true,
|
||||
|
||||
+31
-33
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Largely rewritten by J.T. Conklin ([email protected])
|
||||
*
|
||||
* $Id: expr.y,v 1.9 1995/03/19 13:28:41 joerg Exp $
|
||||
* $Id: expr.y,v 1.11 1995/11/18 18:05:03 joerg Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <err.h>
|
||||
|
||||
enum valtype {
|
||||
integer, string
|
||||
integer, numeric_string, string
|
||||
} ;
|
||||
|
||||
struct val {
|
||||
@@ -56,7 +56,6 @@ char **av;
|
||||
%left <val> '+' '-'
|
||||
%left <val> '*' '/' '%'
|
||||
%left <val> ':'
|
||||
%left UNARY
|
||||
|
||||
%token <val> TOKEN
|
||||
%type <val> start expr
|
||||
@@ -94,7 +93,7 @@ int i;
|
||||
|
||||
vp = (struct val *) malloc (sizeof (*vp));
|
||||
if (vp == NULL) {
|
||||
err (2, NULL);
|
||||
errx (2, "malloc() failed");
|
||||
}
|
||||
|
||||
vp->type = integer;
|
||||
@@ -111,7 +110,7 @@ char *s;
|
||||
|
||||
vp = (struct val *) malloc (sizeof (*vp));
|
||||
if (vp == NULL || ((vp->u.s = strdup (s)) == NULL)) {
|
||||
err (2, NULL);
|
||||
errx (2, "malloc() failed");
|
||||
}
|
||||
|
||||
for(i = 1, isint = isdigit(s[0]) || s[0] == '-';
|
||||
@@ -122,9 +121,10 @@ char *s;
|
||||
isint = 0;
|
||||
}
|
||||
|
||||
vp->type = string;
|
||||
if(isint)
|
||||
to_integer(vp);
|
||||
if (isint)
|
||||
vp->type = numeric_string;
|
||||
else
|
||||
vp->type = string;
|
||||
|
||||
return vp;
|
||||
}
|
||||
@@ -134,7 +134,7 @@ void
|
||||
free_value (vp)
|
||||
struct val *vp;
|
||||
{
|
||||
if (vp->type == string)
|
||||
if (vp->type == string || vp->type == numeric_string)
|
||||
free (vp->u.s);
|
||||
}
|
||||
|
||||
@@ -143,34 +143,19 @@ int
|
||||
to_integer (vp)
|
||||
struct val *vp;
|
||||
{
|
||||
char *s;
|
||||
int neg;
|
||||
int i;
|
||||
|
||||
if (vp->type == integer)
|
||||
return 1;
|
||||
|
||||
s = vp->u.s;
|
||||
i = 0;
|
||||
|
||||
neg = (*s == '-');
|
||||
if (neg)
|
||||
s++;
|
||||
|
||||
for (;*s; s++) {
|
||||
if (!isdigit (*s))
|
||||
return 0;
|
||||
|
||||
i *= 10;
|
||||
i += *s - '0';
|
||||
}
|
||||
if (vp->type == string)
|
||||
return 0;
|
||||
|
||||
/* vp->type == numeric_string, make it numeric */
|
||||
i = atoi(vp->u.s);
|
||||
free (vp->u.s);
|
||||
if (neg)
|
||||
i *= -1;
|
||||
|
||||
vp->u.i = i;
|
||||
vp->type = integer;
|
||||
vp->u.i = i;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -180,12 +165,12 @@ struct val *vp;
|
||||
{
|
||||
char *tmp;
|
||||
|
||||
if (vp->type == string)
|
||||
if (vp->type == string || vp->type == numeric_string)
|
||||
return;
|
||||
|
||||
tmp = malloc (25);
|
||||
if (tmp == NULL) {
|
||||
err (2, NULL);
|
||||
errx (2, "malloc() failed");
|
||||
}
|
||||
|
||||
sprintf (tmp, "%d", vp->u.i);
|
||||
@@ -198,6 +183,7 @@ int
|
||||
isstring (vp)
|
||||
struct val *vp;
|
||||
{
|
||||
/* only TRUE if this string is not a valid integer */
|
||||
return (vp->type == string);
|
||||
}
|
||||
|
||||
@@ -241,7 +227,7 @@ struct val *vp;
|
||||
|
||||
int yyparse ();
|
||||
|
||||
void
|
||||
int
|
||||
main (argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
@@ -257,7 +243,7 @@ char **argv;
|
||||
else
|
||||
printf ("%s\n", result->u.s);
|
||||
|
||||
exit (is_zero_or_null (result));
|
||||
return (is_zero_or_null (result));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -306,6 +292,8 @@ struct val *a, *b;
|
||||
to_string (b);
|
||||
r = make_integer (strcoll (a->u.s, b->u.s) == 0);
|
||||
} else {
|
||||
(void)to_integer(a);
|
||||
(void)to_integer(b);
|
||||
r = make_integer (a->u.i == b->u.i);
|
||||
}
|
||||
|
||||
@@ -325,6 +313,8 @@ struct val *a, *b;
|
||||
to_string (b);
|
||||
r = make_integer (strcoll (a->u.s, b->u.s) > 0);
|
||||
} else {
|
||||
(void)to_integer(a);
|
||||
(void)to_integer(b);
|
||||
r= make_integer (a->u.i > b->u.i);
|
||||
}
|
||||
|
||||
@@ -344,6 +334,8 @@ struct val *a, *b;
|
||||
to_string (b);
|
||||
r = make_integer (strcoll (a->u.s, b->u.s) < 0);
|
||||
} else {
|
||||
(void)to_integer(a);
|
||||
(void)to_integer(b);
|
||||
r = make_integer (a->u.i < b->u.i);
|
||||
}
|
||||
|
||||
@@ -363,6 +355,8 @@ struct val *a, *b;
|
||||
to_string (b);
|
||||
r = make_integer (strcoll (a->u.s, b->u.s) >= 0);
|
||||
} else {
|
||||
(void)to_integer(a);
|
||||
(void)to_integer(b);
|
||||
r = make_integer (a->u.i >= b->u.i);
|
||||
}
|
||||
|
||||
@@ -382,6 +376,8 @@ struct val *a, *b;
|
||||
to_string (b);
|
||||
r = make_integer (strcoll (a->u.s, b->u.s) <= 0);
|
||||
} else {
|
||||
(void)to_integer(a);
|
||||
(void)to_integer(b);
|
||||
r = make_integer (a->u.i <= b->u.i);
|
||||
}
|
||||
|
||||
@@ -401,6 +397,8 @@ struct val *a, *b;
|
||||
to_string (b);
|
||||
r = make_integer (strcoll (a->u.s, b->u.s) != 0);
|
||||
} else {
|
||||
(void)to_integer(a);
|
||||
(void)to_integer(b);
|
||||
r = make_integer (a->u.i != b->u.i);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)hostname.1 8.1 (Berkeley) 5/31/93
|
||||
.\" $Id$
|
||||
.\" $Id: hostname.1,v 1.2.6.2 1996/06/05 02:35:38 jkh Exp $
|
||||
.\"
|
||||
.Dd May 31, 1993
|
||||
.Dt HOSTNAME 1
|
||||
@@ -58,7 +58,7 @@ Trims off any domain information from the printed
|
||||
name.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr gethostname 2
|
||||
.Xr gethostname 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm hostname
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ln.c,v 1.4 1994/09/24 02:55:48 davidg Exp $
|
||||
* $Id: ln.c,v 1.5 1994/12/06 18:50:44 bde Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ls.c,v 1.5 1995/03/19 13:28:44 joerg Exp $
|
||||
* $Id: ls.c,v 1.6 1995/03/23 19:05:00 phk Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: print.c,v 1.4 1995/05/30 00:06:50 rgrimes Exp $
|
||||
* $Id: print.c,v 1.4.4.1 1995/08/28 10:30:27 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: util.c,v 1.3 1994/09/24 02:55:58 davidg Exp $
|
||||
* $Id: util.c,v 1.4 1994/10/09 15:25:23 ache Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)mv.1 8.1 (Berkeley) 5/31/93
|
||||
.\" $Id: mv.1,v 1.2 1994/09/24 02:56:06 davidg Exp $
|
||||
.\" $Id: mv.1,v 1.2.6.1 1995/08/29 11:14:21 davidg Exp $
|
||||
.\"
|
||||
.Dd May 31, 1993
|
||||
.Dt MV 1
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: mv.c,v 1.3 1995/10/07 10:42:48 bde Exp $
|
||||
* $Id: mv.c,v 1.2.6.1 1995/10/09 05:12:21 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ar_io.c,v 1.2 1994/09/24 02:56:11 davidg Exp $
|
||||
* $Id: ar_io.c,v 1.3 1995/05/30 00:06:52 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ar_subs.c,v 1.2 1994/09/24 02:56:12 davidg Exp $
|
||||
* $Id: ar_subs.c,v 1.3 1995/05/30 00:06:52 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: buf_subs.c,v 1.2 1994/09/24 02:56:13 davidg Exp $
|
||||
* $Id: buf_subs.c,v 1.3 1995/05/30 00:06:53 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: cache.c,v 1.2 1994/09/24 02:56:14 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: cpio.c,v 1.2 1994/09/24 02:56:16 davidg Exp $
|
||||
* $Id: cpio.c,v 1.3 1995/05/30 00:06:54 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: file_subs.c,v 1.2 1994/09/24 02:56:19 davidg Exp $
|
||||
* $Id: file_subs.c,v 1.3 1995/05/30 00:06:56 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ftree.c,v 1.2 1994/09/24 02:56:20 davidg Exp $
|
||||
* $Id: ftree.c,v 1.3 1995/05/30 00:06:57 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: gen_subs.c,v 1.5 1995/08/07 19:17:36 wollman Exp $
|
||||
* $Id: gen_subs.c,v 1.4.4.1 1995/08/28 10:41:14 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: options.c,v 1.2 1994/09/24 02:56:22 davidg Exp $
|
||||
* $Id: options.c,v 1.3 1995/03/19 13:28:53 joerg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: pat_rep.c,v 1.3 1995/03/19 13:28:56 joerg Exp $
|
||||
* $Id: pat_rep.c,v 1.4 1995/05/30 00:06:59 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: pax.c,v 1.2 1994/09/24 02:56:27 davidg Exp $
|
||||
* $Id: pax.c,v 1.3 1995/05/30 00:07:00 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: sel_subs.c,v 1.2 1994/09/24 02:56:29 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: tables.c,v 1.2 1994/09/24 02:56:34 davidg Exp $
|
||||
* $Id: tables.c,v 1.3 1995/05/30 00:07:01 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: tar.c,v 1.2 1994/09/24 02:56:37 davidg Exp $
|
||||
* $Id: tar.c,v 1.3 1995/05/30 00:07:03 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: tty_subs.c,v 1.2 1994/09/24 02:56:38 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 6/2/93
|
||||
# $Id: Makefile,v 1.4 1995/04/15 03:23:36 davidg Exp $
|
||||
# $Id: Makefile,v 1.5 1995/04/15 03:31:19 davidg Exp $
|
||||
|
||||
PROG= ps
|
||||
SRCS= fmt.c keyword.c nlist.c print.c ps.c
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: fmt.c,v 1.4 1994/11/10 23:25:12 ats Exp $
|
||||
* $Id: fmt.c,v 1.5 1995/03/09 20:40:17 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: keyword.c,v 1.7 1995/09/26 17:48:58 peter Exp $
|
||||
* $Id: keyword.c,v 1.5.6.1 1995/10/05 07:46:36 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: print.c,v 1.10 1995/09/26 17:48:59 peter Exp $
|
||||
* $Id: print.c,v 1.7.4.2 1995/10/05 07:46:37 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+18
-4
@@ -30,7 +30,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)ps.1 8.3 (Berkeley) 4/18/94
|
||||
.\" $Id$
|
||||
.\" $Id: ps.1,v 1.4.6.2 1996/02/22 19:51:39 peter Exp $
|
||||
.\"
|
||||
.Dd April 18, 1994
|
||||
.Dt PS 1
|
||||
@@ -47,6 +47,7 @@
|
||||
.Op Fl o Ar fmt
|
||||
.Op Fl p Ar pid
|
||||
.Op Fl t Ar tty
|
||||
.Op Fl U Ar username
|
||||
.Op Fl W Ar swap
|
||||
.Nm ps
|
||||
.Op Fl L
|
||||
@@ -54,7 +55,7 @@
|
||||
.Nm \&Ps
|
||||
displays a header line followed by lines containing information about your
|
||||
processes that have controlling terminals.
|
||||
This information is sorted by process
|
||||
This information is sorted by controlling terminal, then by process
|
||||
.Tn ID .
|
||||
.Pp
|
||||
The information displayed is selected based on a set of keywords (see the
|
||||
@@ -68,6 +69,12 @@ The default output format includes, for each process, the process'
|
||||
controlling terminal, cpu time (including both user and system time),
|
||||
state, and associated command.
|
||||
.Pp
|
||||
The process file system (see
|
||||
.Xr procfs 5
|
||||
\&) should be mounted when
|
||||
.Nm
|
||||
is executed, otherwise not all information will be available.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl a
|
||||
@@ -130,6 +137,9 @@ with the standard input.
|
||||
.It Fl t
|
||||
Display information about processes attached to the specified terminal
|
||||
device.
|
||||
.It Fl U
|
||||
Display the processes belonging to the specified
|
||||
.Tn username .
|
||||
.It Fl u
|
||||
Display information associated with the following keywords:
|
||||
user, pid, %cpu, %mem, vsz, rss, tt, state, start, time and command.
|
||||
@@ -478,7 +488,7 @@ wait channel (as a symbolic name)
|
||||
exit or stop status (valid only for stopped or zombie process)
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /var/run/kvm_kernel.db -compact
|
||||
.Bl -tag -width /var/db/kvm_kernel.db -compact
|
||||
.It Pa /dev
|
||||
special files and device names
|
||||
.It Pa /dev/drum
|
||||
@@ -487,16 +497,20 @@ default swap device
|
||||
default kernel memory
|
||||
.It Pa /var/run/dev.db
|
||||
/dev name database
|
||||
.It Pa /var/run/kvm_kernel.db
|
||||
.It Pa /var/db/kvm_kernel.db
|
||||
system namelist database
|
||||
.It Pa /kernel
|
||||
default system namelist
|
||||
.It Pa /proc
|
||||
the mount point of
|
||||
.Xr procfs 5
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr kill 1 ,
|
||||
.Xr w 1 ,
|
||||
.Xr kvm 3 ,
|
||||
.Xr strftime 3 ,
|
||||
.Xr procfs 5 ,
|
||||
.Xr pstat 8
|
||||
.Sh BUGS
|
||||
Since
|
||||
|
||||
+15
-4
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ps.c,v 1.6 1995/03/19 13:29:06 joerg Exp $
|
||||
* $Id: ps.c,v 1.7.4.1 1996/02/22 19:51:40 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -62,6 +62,7 @@ static char sccsid[] = "@(#)ps.c 8.4 (Berkeley) 4/2/94";
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <pwd.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "ps.h"
|
||||
@@ -109,6 +110,7 @@ main(argc, argv)
|
||||
struct kinfo_proc *kp;
|
||||
struct varent *vent;
|
||||
struct winsize ws;
|
||||
struct passwd *pwd;
|
||||
dev_t ttydev;
|
||||
pid_t pid;
|
||||
uid_t uid;
|
||||
@@ -133,7 +135,7 @@ main(argc, argv)
|
||||
ttydev = NODEV;
|
||||
memf = nlistf = swapf = NULL;
|
||||
while ((ch = getopt(argc, argv,
|
||||
"aCeghjLlM:mN:O:o:p:rSTt:uvW:wx")) != EOF)
|
||||
"aCeghjLlM:mN:O:o:p:rSTt:U:uvW:wx")) != EOF)
|
||||
switch((char)ch) {
|
||||
case 'a':
|
||||
all = 1;
|
||||
@@ -214,6 +216,14 @@ main(argc, argv)
|
||||
ttydev = sb.st_rdev;
|
||||
break;
|
||||
}
|
||||
case 'U':
|
||||
pwd = getpwnam(optarg);
|
||||
if (pwd == NULL)
|
||||
errx(1, "%s: no such user", optarg);
|
||||
uid = pwd->pw_uid;
|
||||
endpwent();
|
||||
xflg++; /* XXX: intuitive? */
|
||||
break;
|
||||
case 'u':
|
||||
parsefmt(ufmt);
|
||||
sortby = SORTCPU;
|
||||
@@ -271,7 +281,8 @@ main(argc, argv)
|
||||
if (!fmt)
|
||||
parsefmt(dfmt);
|
||||
|
||||
if (!all && ttydev == NODEV && pid == -1) /* XXX - should be cleaner */
|
||||
/* XXX - should be cleaner */
|
||||
if (!all && ttydev == NODEV && pid == -1 && uid == (uid_t)-1)
|
||||
uid = getuid();
|
||||
|
||||
/*
|
||||
@@ -501,7 +512,7 @@ usage()
|
||||
|
||||
(void)fprintf(stderr,
|
||||
"usage:\t%s\n\t %s\n\t%s\n",
|
||||
"ps [-aChjlmrSTuvwx] [-O|o fmt] [-p pid] [-t tty]",
|
||||
"ps [-aChjlmrSTuvwx] [-O|o fmt] [-p pid] [-t tty] [-U user]",
|
||||
"[-M core] [-N system] [-W swap]",
|
||||
"ps [-L]");
|
||||
exit(1);
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: rcp.c,v 1.3 1995/03/19 13:29:14 joerg Exp $
|
||||
* $Id: rcp.c,v 1.4.4.2 1996/06/05 02:36:15 jkh Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -69,7 +69,7 @@ static char sccsid[] = "@(#)rcp.c 8.2 (Berkeley) 4/2/94";
|
||||
#include "extern.h"
|
||||
|
||||
#ifdef KERBEROS
|
||||
#include <kerberosIV/des.h>
|
||||
#include <des.h>
|
||||
#include <kerberosIV/krb.h>
|
||||
|
||||
char dst_realm_buf[REALM_SZ];
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)rm.1 8.2 (Berkeley) 4/18/94
|
||||
.\" $Id$
|
||||
.\" $Id: rm.1,v 1.2 1994/09/24 02:57:00 davidg Exp $
|
||||
.\"
|
||||
.Dd April 18, 1994
|
||||
.Dt RM 1
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: rm.c,v 1.5 1994/09/24 02:57:02 davidg Exp $
|
||||
* $Id: rm.c,v 1.6 1995/04/13 13:35:09 ache Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: rmail.c,v 1.4 1995/03/19 13:29:18 joerg Exp $
|
||||
* $Id: rmail.c,v 1.5 1995/05/30 00:07:08 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
|
||||
+6
-1
@@ -1,5 +1,5 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 6/8/93
|
||||
# $Id: Makefile,v 1.6 1994/09/24 02:57:18 davidg Exp $
|
||||
# $Id: Makefile,v 1.7.6.3 1996/06/05 02:36:21 jkh Exp $
|
||||
|
||||
PROG= sh
|
||||
SRCS= alias.c builtins.c cd.c echo.c error.c eval.c exec.c expand.c \
|
||||
@@ -11,6 +11,8 @@ DPADD= ${LIBL} ${LIBEDIT} ${LIBTERMCAP}
|
||||
LDADD= -ll -ledit -ltermcap
|
||||
LFLAGS= -8 # 8-bit lex scanner for arithmetic
|
||||
CFLAGS+=-DSHELL -I. -I${.CURDIR}
|
||||
# for debugging:
|
||||
#CFLAGS+=-g -DDEBUG=2
|
||||
.PATH: ${.CURDIR}/bltin ${.CURDIR}/../../usr.bin/printf
|
||||
CLEANFILES+=\
|
||||
builtins.c builtins.h init.c mkinit mknodes mksignames mksyntax \
|
||||
@@ -21,6 +23,9 @@ CLEANFILES+=\
|
||||
token.def: mktokens
|
||||
sh ${.CURDIR}/mktokens
|
||||
|
||||
${.CURDIR}/builtins:
|
||||
# just override the default rule
|
||||
|
||||
builtins.h builtins.c: ${.CURDIR}/mkbuiltins ${.CURDIR}/builtins
|
||||
cd ${.CURDIR}; sh mkbuiltins
|
||||
|
||||
|
||||
+10
-1
@@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)bltin.h 8.1 (Berkeley) 5/31/93
|
||||
* $Id$
|
||||
* $Id: bltin.h,v 1.2.6.1 1995/12/11 23:05:26 joerg Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -47,15 +47,24 @@
|
||||
#include "../mystring.h"
|
||||
#ifdef SHELL
|
||||
#include "../output.h"
|
||||
#undef stdout
|
||||
#define stdout out1
|
||||
#undef stderr
|
||||
#define stderr out2
|
||||
#define printf out1fmt
|
||||
#undef putc
|
||||
#define putc(c, file) outc(c, file)
|
||||
#undef putchar
|
||||
#define putchar(c) out1c(c)
|
||||
#define fprintf outfmt
|
||||
#define fputs outstr
|
||||
#define fflush flushout
|
||||
#define INITARGS(argv)
|
||||
#define warnx(a, b, c) { \
|
||||
char buf[64]; \
|
||||
(void)snprintf(buf, sizeof(buf), a, b, c); \
|
||||
error(buf); \
|
||||
}
|
||||
#else
|
||||
#undef NULL
|
||||
#include <stdio.h>
|
||||
|
||||
+2
-1
@@ -35,7 +35,7 @@
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
# @(#)builtins 8.1 (Berkeley) 5/31/93
|
||||
# $Id$
|
||||
# $Id: builtins,v 1.3 1995/10/19 18:42:09 joerg Exp $
|
||||
|
||||
#
|
||||
# This file lists all the builtin commands. The first column is the name
|
||||
@@ -83,6 +83,7 @@ setvarcmd setvar
|
||||
shiftcmd shift
|
||||
trapcmd trap
|
||||
truecmd : true
|
||||
ulimitcmd ulimit
|
||||
umaskcmd umask
|
||||
unaliascmd unalias
|
||||
unsetcmd unset
|
||||
|
||||
+5
-2
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: cd.c,v 1.3 1994/11/06 01:29:26 jkh Exp $
|
||||
* $Id: cd.c,v 1.5 1995/11/14 01:04:52 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -92,7 +92,10 @@ cdcmd(argc, argv) char **argv; {
|
||||
dest = ".";
|
||||
if (dest[0] == '-' && dest[1] == '\0') {
|
||||
dest = prevdir ? prevdir : curdir;
|
||||
print = 1;
|
||||
if (dest)
|
||||
print = 1;
|
||||
else
|
||||
dest = ".";
|
||||
}
|
||||
if (*dest == '/' || (path = bltinlookup("CDPATH", 1)) == NULL)
|
||||
path = nullstr;
|
||||
|
||||
+105
-80
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: input.c,v 1.2 1994/09/24 02:57:39 davidg Exp $
|
||||
* $Id: input.c,v 1.4 1995/11/03 18:50:14 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -65,6 +65,7 @@ struct strpush {
|
||||
struct strpush *prev; /* preceding string on stack */
|
||||
char *prevstring;
|
||||
int prevnleft;
|
||||
int prevlleft;
|
||||
struct alias *ap; /* if push was associated with an alias */
|
||||
};
|
||||
|
||||
@@ -78,7 +79,8 @@ struct parsefile {
|
||||
struct parsefile *prev; /* preceding file on stack */
|
||||
int linno; /* current line */
|
||||
int fd; /* file descriptor (or -1 if string) */
|
||||
int nleft; /* number of chars left in buffer */
|
||||
int nleft; /* number of chars left in line */
|
||||
int lleft; /* number of lines left in buffer */
|
||||
char *nextc; /* next char in buffer */
|
||||
char *buf; /* input buffer */
|
||||
struct strpush *strpush; /* for pushing strings at this level */
|
||||
@@ -88,12 +90,11 @@ struct parsefile {
|
||||
|
||||
int plinno = 1; /* input line number */
|
||||
MKINIT int parsenleft; /* copy of parsefile->nleft */
|
||||
MKINIT int parselleft; /* copy of parsefile->lleft */
|
||||
char *parsenextc; /* copy of parsefile->nextc */
|
||||
MKINIT struct parsefile basepf; /* top level input file */
|
||||
char basebuf[BUFSIZ]; /* buffer for top level input file */
|
||||
struct parsefile *parsefile = &basepf; /* current input file */
|
||||
char *pushedstring; /* copy of parsenextc when text pushed back */
|
||||
int pushednleft; /* copy of parsenleft when text pushed back */
|
||||
int init_editline = 0; /* editline library initialized? */
|
||||
int whichprompt; /* 1 == PS1, 2 == PS2 */
|
||||
|
||||
@@ -119,7 +120,7 @@ INIT {
|
||||
|
||||
RESET {
|
||||
if (exception != EXSHELLPROC)
|
||||
parsenleft = 0; /* clear input buffer */
|
||||
parselleft = parsenleft = 0; /* clear input buffer */
|
||||
popallfiles();
|
||||
}
|
||||
|
||||
@@ -168,54 +169,31 @@ pgetc() {
|
||||
return pgetc_macro();
|
||||
}
|
||||
|
||||
static int
|
||||
pread()
|
||||
{
|
||||
int nr;
|
||||
|
||||
/*
|
||||
* Refill the input buffer and return the next input character:
|
||||
*
|
||||
* 1) If a string was pushed back on the input, pop it;
|
||||
* 2) If an EOF was pushed back (parsenleft == EOF_NLEFT) or we are reading
|
||||
* from a string so we can't refill the buffer, return EOF.
|
||||
* 3) Call read to read in the characters.
|
||||
* 4) Delete all nul characters from the buffer.
|
||||
*/
|
||||
|
||||
int
|
||||
preadbuffer() {
|
||||
register char *p, *q;
|
||||
register int i;
|
||||
register int something;
|
||||
extern EditLine *el;
|
||||
|
||||
if (parsefile->strpush) {
|
||||
popstring();
|
||||
if (--parsenleft >= 0)
|
||||
return (*parsenextc++);
|
||||
}
|
||||
if (parsenleft == EOF_NLEFT || parsefile->buf == NULL)
|
||||
return PEOF;
|
||||
flushout(&output);
|
||||
flushout(&errout);
|
||||
parsenextc = parsefile->buf;
|
||||
retry:
|
||||
p = parsenextc = parsefile->buf;
|
||||
if (parsefile->fd == 0 && el) {
|
||||
const char *rl_cp;
|
||||
int len;
|
||||
|
||||
rl_cp = el_gets(el, &len);
|
||||
if (rl_cp == NULL) {
|
||||
i = 0;
|
||||
goto eof;
|
||||
rl_cp = el_gets(el, &nr);
|
||||
if (rl_cp == NULL)
|
||||
nr = 0;
|
||||
else {
|
||||
/* XXX - BUFSIZE should redesign so not necessary */
|
||||
strcpy(parsenextc, rl_cp);
|
||||
}
|
||||
strcpy(p, rl_cp); /* XXX - BUFSIZE should redesign so not necessary */
|
||||
i = len;
|
||||
|
||||
} else {
|
||||
regular_read:
|
||||
i = read(parsefile->fd, p, BUFSIZ - 1);
|
||||
nr = read(parsefile->fd, parsenextc, BUFSIZ - 1);
|
||||
}
|
||||
eof:
|
||||
if (i <= 0) {
|
||||
if (i < 0) {
|
||||
|
||||
if (nr <= 0) {
|
||||
if (nr < 0) {
|
||||
if (errno == EINTR)
|
||||
goto retry;
|
||||
if (parsefile->fd == 0 && errno == EWOULDBLOCK) {
|
||||
@@ -229,57 +207,100 @@ eof:
|
||||
}
|
||||
}
|
||||
}
|
||||
parsenleft = EOF_NLEFT;
|
||||
return PEOF;
|
||||
nr = -1;
|
||||
}
|
||||
parsenleft = i - 1; /* we're returning one char in this call */
|
||||
return nr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Refill the input buffer and return the next input character:
|
||||
*
|
||||
* 1) If a string was pushed back on the input, pop it;
|
||||
* 2) If an EOF was pushed back (parsenleft == EOF_NLEFT) or we are reading
|
||||
* from a string so we can't refill the buffer, return EOF.
|
||||
* 3) If there is more in the buffer, use it; else call read to fill it.
|
||||
* 4) Process input up to next newline, deleting nul characters.
|
||||
*/
|
||||
|
||||
int
|
||||
preadbuffer() {
|
||||
char *p, *q;
|
||||
int more;
|
||||
int something;
|
||||
extern EditLine *el;
|
||||
char savec;
|
||||
|
||||
if (parsefile->strpush) {
|
||||
popstring();
|
||||
if (--parsenleft >= 0)
|
||||
return (*parsenextc++);
|
||||
}
|
||||
if (parsenleft == EOF_NLEFT || parsefile->buf == NULL)
|
||||
return PEOF;
|
||||
flushout(&output);
|
||||
flushout(&errout);
|
||||
|
||||
again:
|
||||
if (parselleft <= 0) {
|
||||
if ((parselleft = pread()) == -1) {
|
||||
parselleft = parsenleft = EOF_NLEFT;
|
||||
return PEOF;
|
||||
}
|
||||
}
|
||||
|
||||
q = p = parsenextc;
|
||||
|
||||
/* delete nul characters */
|
||||
something = 0;
|
||||
for (;;) {
|
||||
if (*p == '\0')
|
||||
for (more = 1; more;) {
|
||||
switch (*p) {
|
||||
case '\0':
|
||||
p++; /* Skip nul */
|
||||
goto check;
|
||||
|
||||
case '\t':
|
||||
case ' ':
|
||||
break;
|
||||
if (*p != ' ' && *p != '\t' && *p != '\n')
|
||||
|
||||
case '\n':
|
||||
parsenleft = q - parsenextc;
|
||||
more = 0; /* Stop processing here */
|
||||
break;
|
||||
|
||||
default:
|
||||
something = 1;
|
||||
p++;
|
||||
if (--i <= 0) {
|
||||
*p = '\0';
|
||||
goto done; /* no nul characters */
|
||||
break;
|
||||
}
|
||||
|
||||
*q++ = *p++;
|
||||
check:
|
||||
if (--parselleft <= 0) {
|
||||
parsenleft = q - parsenextc - 1;
|
||||
if (parsenleft < 0)
|
||||
goto again;
|
||||
*q = '\0';
|
||||
more = 0;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* remove nuls
|
||||
*/
|
||||
q = p++;
|
||||
while (--i > 0) {
|
||||
if (*p != '\0')
|
||||
*q++ = *p;
|
||||
p++;
|
||||
}
|
||||
*q = '\0';
|
||||
if (q == parsefile->buf)
|
||||
goto retry; /* buffer contained nothing but nuls */
|
||||
parsenleft = q - parsefile->buf - 1;
|
||||
|
||||
done:
|
||||
savec = *q;
|
||||
*q = '\0';
|
||||
|
||||
|
||||
if (parsefile->fd == 0 && hist && something) {
|
||||
INTOFF;
|
||||
history(hist, whichprompt == 1 ? H_ENTER : H_ADD,
|
||||
parsefile->buf);
|
||||
history(hist, whichprompt == 1 ? H_ENTER : H_ADD, parsenextc);
|
||||
INTON;
|
||||
}
|
||||
|
||||
|
||||
if (vflag) {
|
||||
/*
|
||||
* This isn't right. Most shells coordinate it with
|
||||
* reading a line at a time. I honestly don't know if its
|
||||
* worth it.
|
||||
*/
|
||||
i = parsenleft + 1;
|
||||
p = parsefile->buf;
|
||||
for (; i--; p++)
|
||||
out2c(*p)
|
||||
out2str(parsenextc);
|
||||
flushout(out2);
|
||||
}
|
||||
|
||||
*q = savec;
|
||||
|
||||
return *parsenextc++;
|
||||
}
|
||||
|
||||
@@ -316,6 +337,7 @@ pushstring(s, len, ap)
|
||||
sp = parsefile->strpush = &(parsefile->basestrpush);
|
||||
sp->prevstring = parsenextc;
|
||||
sp->prevnleft = parsenleft;
|
||||
sp->prevlleft = parselleft;
|
||||
sp->ap = (struct alias *)ap;
|
||||
if (ap)
|
||||
((struct alias *)ap)->flag |= ALIASINUSE;
|
||||
@@ -331,6 +353,7 @@ popstring()
|
||||
INTOFF;
|
||||
parsenextc = sp->prevstring;
|
||||
parsenleft = sp->prevnleft;
|
||||
parselleft = sp->prevlleft;
|
||||
/*dprintf("*** calling popstring: restoring to '%s'\n", parsenextc);*/
|
||||
if (sp->ap)
|
||||
sp->ap->flag &= ~ALIASINUSE;
|
||||
@@ -383,7 +406,7 @@ setinputfd(fd, push) {
|
||||
parsefile->fd = fd;
|
||||
if (parsefile->buf == NULL)
|
||||
parsefile->buf = ckmalloc(BUFSIZ);
|
||||
parsenleft = 0;
|
||||
parselleft = parsenleft = 0;
|
||||
plinno = 1;
|
||||
}
|
||||
|
||||
@@ -400,7 +423,7 @@ setinputstring(string, push)
|
||||
if (push)
|
||||
pushfile();
|
||||
parsenextc = string;
|
||||
parsenleft = strlen(string);
|
||||
parselleft = parsenleft = strlen(string);
|
||||
parsefile->buf = NULL;
|
||||
plinno = 1;
|
||||
INTON;
|
||||
@@ -418,6 +441,7 @@ pushfile() {
|
||||
struct parsefile *pf;
|
||||
|
||||
parsefile->nleft = parsenleft;
|
||||
parsefile->lleft = parselleft;
|
||||
parsefile->nextc = parsenextc;
|
||||
parsefile->linno = plinno;
|
||||
pf = (struct parsefile *)ckmalloc(sizeof (struct parsefile));
|
||||
@@ -443,6 +467,7 @@ popfile() {
|
||||
parsefile = pf->prev;
|
||||
ckfree(pf);
|
||||
parsenleft = parsefile->nleft;
|
||||
parselleft = parsefile->lleft;
|
||||
parsenextc = parsefile->nextc;
|
||||
plinno = parsefile->linno;
|
||||
INTON;
|
||||
|
||||
+214
-1
@@ -4,6 +4,7 @@
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Kenneth Almquist.
|
||||
* The ulimit() builtin has been contributed by Joerg Wunsch.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -33,7 +34,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: miscbltin.c,v 1.4 1995/10/21 00:47:30 joerg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -52,6 +53,18 @@ static char sccsid[] = "@(#)miscbltin.c 8.2 (Berkeley) 4/16/94";
|
||||
#include "error.h"
|
||||
#include "mystring.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#if BSD
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#undef eflag
|
||||
|
||||
extern char **argptr; /* argument list for builtin command */
|
||||
@@ -166,3 +179,203 @@ umaskcmd(argc, argv) char **argv; {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#if BSD
|
||||
struct restab {
|
||||
int resource;
|
||||
int scale;
|
||||
char *descript;
|
||||
};
|
||||
|
||||
/* multi-purpose */
|
||||
#define RLIMIT_UNSPEC (-2)
|
||||
|
||||
/* resource */
|
||||
#define RLIMIT_ALL (-1)
|
||||
|
||||
/* mode */
|
||||
#define RLIMIT_SHOW 0
|
||||
#define RLIMIT_SET 1
|
||||
|
||||
/* what */
|
||||
#define RLIMIT_SOFT 1
|
||||
#define RLIMIT_HARD 2
|
||||
|
||||
static struct restab restab[] = {
|
||||
{RLIMIT_CORE, 512, "coredump(512-blocks) "},
|
||||
{RLIMIT_CPU, 1, "time(seconds) "},
|
||||
{RLIMIT_DATA, 1024, "datasize(kilobytes) "},
|
||||
{RLIMIT_FSIZE, 512, "filesize(512-blocks) "},
|
||||
{RLIMIT_MEMLOCK, 1024, "lockedmem(kilobytes) "},
|
||||
{RLIMIT_NOFILE, 1, "nofiles(descriptors) "},
|
||||
{RLIMIT_NPROC, 1, "userprocs(max) "},
|
||||
{RLIMIT_RSS, 1024, "memoryuse(kilobytes) "},
|
||||
{RLIMIT_STACK, 1024, "stacksize(kilobytes) "}
|
||||
};
|
||||
|
||||
/* get entry into above table */
|
||||
static struct restab *
|
||||
find_resource(resource) {
|
||||
int i;
|
||||
struct restab *rp;
|
||||
|
||||
for(i = 0, rp = restab;
|
||||
i < sizeof restab / sizeof(struct restab);
|
||||
i++, rp++)
|
||||
if(rp->resource == resource)
|
||||
return rp;
|
||||
error("internal error: resource not in table");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
print_resource(rp, what, with_descript) struct restab *rp; {
|
||||
struct rlimit rlim;
|
||||
quad_t val;
|
||||
|
||||
(void)getrlimit(rp->resource, &rlim);
|
||||
val = (what == RLIMIT_SOFT)?
|
||||
rlim.rlim_cur: rlim.rlim_max;
|
||||
if(with_descript)
|
||||
out1str(rp->descript);
|
||||
if(val == RLIM_INFINITY)
|
||||
out1str("unlimited\n");
|
||||
else {
|
||||
val /= (quad_t)rp->scale;
|
||||
if(val > (quad_t)ULONG_MAX)
|
||||
out1fmt("> %lu\n", (unsigned long)ULONG_MAX);
|
||||
else
|
||||
out1fmt("%lu\n", (unsigned long)val);
|
||||
}
|
||||
}
|
||||
|
||||
ulimitcmd(argc, argv) char **argv; {
|
||||
struct rlimit rlim;
|
||||
char *p;
|
||||
int i;
|
||||
int resource = RLIMIT_UNSPEC;
|
||||
quad_t val;
|
||||
int what = RLIMIT_UNSPEC;
|
||||
int mode = RLIMIT_UNSPEC;
|
||||
int errs = 0, arg = 1;
|
||||
struct restab *rp;
|
||||
extern int optreset; /* XXX should be declared in <stdlib.h> */
|
||||
|
||||
opterr = 0; /* use own error processing */
|
||||
optreset = 1;
|
||||
optind = 1;
|
||||
while ((i = getopt(argc, argv, "HSacdfnstmlu")) != EOF) {
|
||||
arg++;
|
||||
switch(i) {
|
||||
case 'H':
|
||||
if(what == RLIMIT_UNSPEC) what = 0;
|
||||
what |= RLIMIT_HARD;
|
||||
break;
|
||||
case 'S':
|
||||
if(what == RLIMIT_UNSPEC) what = 0;
|
||||
what |= RLIMIT_SOFT;
|
||||
break;
|
||||
case 'a':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_ALL;
|
||||
mode = RLIMIT_SHOW;
|
||||
break;
|
||||
case 'c':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_CORE;
|
||||
break;
|
||||
case 'd':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_DATA;
|
||||
break;
|
||||
case 'f':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_FSIZE;
|
||||
break;
|
||||
case 'n':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_NOFILE;
|
||||
break;
|
||||
case 's':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_STACK;
|
||||
break;
|
||||
case 't':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_CPU;
|
||||
break;
|
||||
case 'm':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_RSS;
|
||||
break;
|
||||
case 'l':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_MEMLOCK;
|
||||
break;
|
||||
case 'u':
|
||||
if(resource != RLIMIT_UNSPEC) errs++;
|
||||
resource = RLIMIT_NPROC;
|
||||
break;
|
||||
case '?':
|
||||
error("illegal option -%c", optopt);
|
||||
}
|
||||
}
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
if(argc > 1)
|
||||
error("too many arguments");
|
||||
if(argc == 0)
|
||||
mode = RLIMIT_SHOW;
|
||||
else if (resource == RLIMIT_ALL)
|
||||
errs++;
|
||||
else
|
||||
mode = RLIMIT_SET;
|
||||
if(mode == RLIMIT_UNSPEC)
|
||||
mode = RLIMIT_SHOW;
|
||||
if(resource == RLIMIT_UNSPEC)
|
||||
resource = RLIMIT_FSIZE;
|
||||
if(what == RLIMIT_UNSPEC)
|
||||
what = (mode == RLIMIT_SHOW)?
|
||||
RLIMIT_SOFT: (RLIMIT_SOFT|RLIMIT_HARD);
|
||||
if(mode == RLIMIT_SHOW && what == (RLIMIT_SOFT|RLIMIT_HARD))
|
||||
errs++;
|
||||
if(errs)
|
||||
error("Wrong option combination");
|
||||
|
||||
if(resource == RLIMIT_ALL)
|
||||
for(i = 0; i < sizeof restab / sizeof(struct restab); i++)
|
||||
print_resource(restab + i, what, 1);
|
||||
else if(mode == RLIMIT_SHOW)
|
||||
print_resource(find_resource(resource), what, 0);
|
||||
else {
|
||||
rp = find_resource(resource);
|
||||
if(strcmp(argv[0], "unlimited") == 0)
|
||||
val = RLIM_INFINITY;
|
||||
else {
|
||||
val = 0;
|
||||
p = argv[0];
|
||||
do {
|
||||
if((i = *p - '0') < 0 || i > 9)
|
||||
error("Illegal number: %s", argv[0]);
|
||||
val = (10 * val) + (quad_t)i;
|
||||
} while (*++p != '\0');
|
||||
val *= (quad_t)rp->scale;
|
||||
}
|
||||
(void)getrlimit(resource, &rlim);
|
||||
if(what & RLIMIT_HARD)
|
||||
rlim.rlim_max = val;
|
||||
if(what & RLIMIT_SOFT)
|
||||
rlim.rlim_cur = val;
|
||||
if(setrlimit(resource, &rlim) == -1) {
|
||||
outfmt(&errout, "ulimit: bad limit: %s\n",
|
||||
strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#else /* !BSD */
|
||||
#error ulimit() not implemented
|
||||
#endif /* BSD */
|
||||
+18
-22
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: parser.c,v 1.6.4.1 1995/08/25 03:21:06 davidg Exp $
|
||||
* $Id: parser.c,v 1.6.4.4 1996/06/05 02:36:22 jkh Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -150,29 +150,12 @@ list(nlflag) {
|
||||
for (;;) {
|
||||
switch (readtoken()) {
|
||||
case TBACKGND:
|
||||
if (n1->type == NCMD || n1->type == NPIPE) {
|
||||
n1->ncmd.backgnd = 1;
|
||||
} else if (n1->type == NREDIR) {
|
||||
n1->type = NBACKGND;
|
||||
} else {
|
||||
n3 = (union node *)stalloc(sizeof (struct nredir));
|
||||
n3->type = NBACKGND;
|
||||
n3->nredir.n = n1;
|
||||
n3->nredir.redirect = NULL;
|
||||
n1 = n3;
|
||||
}
|
||||
goto tsemi;
|
||||
case TNL:
|
||||
tokpushback++;
|
||||
parseheredoc();
|
||||
if (nlflag)
|
||||
return n1;
|
||||
/* fall through */
|
||||
tsemi: case TSEMI:
|
||||
if (readtoken() == TNL) {
|
||||
parseheredoc();
|
||||
if (nlflag)
|
||||
return n1;
|
||||
} else {
|
||||
tokpushback++;
|
||||
}
|
||||
case TSEMI:
|
||||
checkkwd = 2;
|
||||
if (tokendlist[peektoken()])
|
||||
return n1;
|
||||
@@ -212,6 +195,19 @@ andor() {
|
||||
} else if (t == TOR) {
|
||||
t = NOR;
|
||||
} else {
|
||||
if (t == TBACKGND) {
|
||||
if (n1->type == NCMD || n1->type == NPIPE) {
|
||||
n1->ncmd.backgnd = 1;
|
||||
} else if (n1->type == NREDIR) {
|
||||
n1->type = NBACKGND;
|
||||
} else {
|
||||
n3 = (union node *)stalloc(sizeof (struct nredir));
|
||||
n3->type = NBACKGND;
|
||||
n3->nredir.n = n1;
|
||||
n3->nredir.redirect = NULL;
|
||||
n1 = n3;
|
||||
}
|
||||
}
|
||||
tokpushback++;
|
||||
return n1;
|
||||
}
|
||||
|
||||
+6
-1
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: redir.c,v 1.2 1994/09/24 02:58:10 davidg Exp $
|
||||
* $Id: redir.c,v 1.4 1995/10/21 00:47:31 joerg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -120,6 +120,9 @@ redirect(redir, flags)
|
||||
}
|
||||
for (n = redir ; n ; n = n->nfile.next) {
|
||||
fd = n->nfile.fd;
|
||||
if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) &&
|
||||
n->ndup.dupfd == fd)
|
||||
continue; /* redirect from/to myself */
|
||||
if ((flags & REDIR_PUSH) && sv->renamed[fd] == EMPTY) {
|
||||
INTOFF;
|
||||
if ((i = copyfd(fd, 10)) != EMPTY) {
|
||||
@@ -341,5 +344,7 @@ copyfd(from, to) {
|
||||
newfd = fcntl(from, F_DUPFD, to);
|
||||
if (newfd < 0 && errno == EMFILE)
|
||||
return EMPTY;
|
||||
if (newfd < 0)
|
||||
error("%d: %s", from, strerror(errno));
|
||||
return newfd;
|
||||
}
|
||||
+53
-1
@@ -33,7 +33,9 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)sh.1 8.4 (Berkeley) 4/18/94
|
||||
.\" $Id: sh.1,v 1.2 1994/09/24 02:58:13 davidg Exp $
|
||||
.\" $Id: sh.1,v 1.5 1995/10/21 00:47:32 joerg Exp $
|
||||
.\"
|
||||
.\"
|
||||
.\"
|
||||
.na
|
||||
.TH SH 1
|
||||
@@ -1277,6 +1279,56 @@ resets trapped (but not ignored) signals to the
|
||||
default action. The trap command has no effect on
|
||||
signals that were ignored on entry to the shell.
|
||||
.TP
|
||||
ulimit [ -HSacdflmnpst ] [ limit ]
|
||||
Set or display resource limits (see getrlimit(2)).
|
||||
If ``limit'' is specified, the named resource will be set;
|
||||
otherwise the current resource value will be displayed.
|
||||
.br
|
||||
If ``-H'' is specified, the hard limits will be
|
||||
set or displayed. While everybody is allowed to reduce a
|
||||
hard limit, only the superuser can increase it. Option ``-S''
|
||||
specifies the soft limits instead. When displaying limits,
|
||||
only one of ``-S'' or ``-H'' can be given. The default is
|
||||
to display the soft limits, and to set both, the hard and
|
||||
the soft limits.
|
||||
.br
|
||||
Option ``-a'' requests to display all resources. The parameter
|
||||
``limit'' is not acceptable in this mode.
|
||||
.br
|
||||
The remaining options specify which resource value is to be
|
||||
displayed or modified. They are mutually exclusive.
|
||||
.RS +.7i
|
||||
.TP 2
|
||||
-c coredumpsize
|
||||
The maximal size of core dump files, in 512-byte blocks.
|
||||
.TP 2
|
||||
-d datasize
|
||||
The maximal size of the data segment of a process, in kilobytes.
|
||||
.TP 2
|
||||
-f filesize
|
||||
The maximal size of a file, in 512-byte blocks. This is the
|
||||
default.
|
||||
.TP 2
|
||||
-l lockedmem
|
||||
The maximal size of memory that can be locked by a process, in
|
||||
kilobytes.
|
||||
.TP 2
|
||||
-m memoryuse
|
||||
The maximal resident set size of a process, in kilobytes.
|
||||
.TP 2
|
||||
-n nofiles
|
||||
The maximal number of descriptors that could be opened by a process.
|
||||
.TP 2
|
||||
-u userproc
|
||||
The maximal number of simultaneous processes for this user ID.
|
||||
.TP 2
|
||||
-s stacksize
|
||||
The maximal size of the stack segment, in kilobytes.
|
||||
.TP 2
|
||||
-t time
|
||||
The maximal amount of CPU time to be used by each process, in seconds.
|
||||
.RE
|
||||
.TP
|
||||
umask [ mask ]
|
||||
Set the value of umask (see umask(2)) to the specified octal value.
|
||||
If the argument is omitted, the
|
||||
|
||||
+4
-4
@@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)stty.1 8.4 (Berkeley) 4/18/94
|
||||
.\" $Id$
|
||||
.\" $Id: stty.1,v 1.2.6.2 1996/06/05 02:36:26 jkh Exp $
|
||||
.\"
|
||||
.Dd April 18, 1994
|
||||
.Dt STTY 1
|
||||
@@ -160,10 +160,10 @@ Signal (do not signal)
|
||||
on
|
||||
break.
|
||||
.It Cm ignpar Pq Fl ignpar
|
||||
Ignore (do not ignore) parity
|
||||
Ignore (do not ignore) characters with parity
|
||||
errors.
|
||||
.It Cm parmrk Pq Fl parmrk
|
||||
Mark (do not mark) parity errors.
|
||||
Mark (do not mark) characters with parity errors.
|
||||
.It Cm inpck Pq Fl inpck
|
||||
Enable (disable) input parity
|
||||
checking.
|
||||
@@ -235,7 +235,7 @@ output modes).
|
||||
Map (do not map)
|
||||
.Dv NL
|
||||
to
|
||||
.DV CR-NL
|
||||
.Dv CR-NL
|
||||
on output.
|
||||
.It Cm oxtabs Pq Fl oxtabs
|
||||
Expand (do not expand) tabs to spaces on output.
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)sync.8 8.1 (Berkeley) 5/31/93
|
||||
.\" $Id$
|
||||
.\" $Id: sync.8,v 1.2 1994/09/24 02:59:08 davidg Exp $
|
||||
.\"
|
||||
.Dd May 31, 1993
|
||||
.Dt SYNC 8
|
||||
|
||||
+4
-4
@@ -33,7 +33,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: test.c,v 1.10 1995/03/19 13:29:28 joerg Exp $
|
||||
* $Id: test.c,v 1.11.4.1 1996/02/20 09:48:53 jkh Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -388,7 +388,7 @@ permission: if (fs->stat.st_uid == geteuid())
|
||||
goto filetype;
|
||||
case ISSYMLINK:
|
||||
i = S_IFLNK;
|
||||
(void)lstat(sp->u.string, &fs->stat);
|
||||
fs->rcode = lstat(sp->u.string, &fs->stat);
|
||||
goto filetype;
|
||||
case ISFIFO:
|
||||
i = S_IFIFO;
|
||||
@@ -578,12 +578,12 @@ static void
|
||||
syntax()
|
||||
{
|
||||
|
||||
err(2, "syntax error");
|
||||
errx(2, "syntax error");
|
||||
}
|
||||
|
||||
static void
|
||||
overflow()
|
||||
{
|
||||
|
||||
err(2, "expression is too complex");
|
||||
errx(2, "expression is too complex");
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
|
||||
The "Artistic License"
|
||||
|
||||
Preamble
|
||||
|
||||
The intent of this document is to state the conditions under which a
|
||||
Package may be copied, such that the Copyright Holder maintains some
|
||||
semblance of artistic control over the development of the package,
|
||||
while giving the users of the package the right to use and distribute
|
||||
the Package in a more-or-less customary fashion, plus the right to make
|
||||
reasonable modifications.
|
||||
|
||||
Definitions:
|
||||
|
||||
"Package" refers to the collection of files distributed by the
|
||||
Copyright Holder, and derivatives of that collection of files
|
||||
created through textual modification.
|
||||
|
||||
"Standard Version" refers to such a Package if it has not been
|
||||
modified, or has been modified in accordance with the wishes
|
||||
of the Copyright Holder as specified below.
|
||||
|
||||
"Copyright Holder" is whoever is named in the copyright or
|
||||
copyrights for the package.
|
||||
|
||||
"You" is you, if you're thinking about copying or distributing
|
||||
this Package.
|
||||
|
||||
"Reasonable copying fee" is whatever you can justify on the
|
||||
basis of media cost, duplication charges, time of people involved,
|
||||
and so on. (You will not be required to justify it to the
|
||||
Copyright Holder, but only to the computing community at large
|
||||
as a market that must bear the fee.)
|
||||
|
||||
"Freely Available" means that no fee is charged for the item
|
||||
itself, though there may be fees involved in handling the item.
|
||||
It also means that recipients of the item may redistribute it
|
||||
under the same conditions they received it.
|
||||
|
||||
1. You may make and give away verbatim copies of the source form of the
|
||||
Standard Version of this Package without restriction, provided that you
|
||||
duplicate all of the original copyright notices and associated disclaimers.
|
||||
|
||||
2. You may apply bug fixes, portability fixes and other modifications
|
||||
derived from the Public Domain or from the Copyright Holder. A Package
|
||||
modified in such a way shall still be considered the Standard Version.
|
||||
|
||||
3. You may otherwise modify your copy of this Package in any way, provided
|
||||
that you insert a prominent notice in each changed file stating how and
|
||||
when you changed that file, and provided that you do at least ONE of the
|
||||
following:
|
||||
|
||||
a) place your modifications in the Public Domain or otherwise make them
|
||||
Freely Available, such as by posting said modifications to Usenet or
|
||||
an equivalent medium, or placing the modifications on a major archive
|
||||
site such as uunet.uu.net, or by allowing the Copyright Holder to include
|
||||
your modifications in the Standard Version of the Package.
|
||||
|
||||
b) use the modified Package only within your corporation or organization.
|
||||
|
||||
c) rename any non-standard executables so the names do not conflict
|
||||
with standard executables, which must also be provided, and provide
|
||||
a separate manual page for each non-standard executable that clearly
|
||||
documents how it differs from the Standard Version.
|
||||
|
||||
d) make other distribution arrangements with the Copyright Holder.
|
||||
|
||||
4. You may distribute the programs of this Package in object code or
|
||||
executable form, provided that you do at least ONE of the following:
|
||||
|
||||
a) distribute a Standard Version of the executables and library files,
|
||||
together with instructions (in the manual page or equivalent) on where
|
||||
to get the Standard Version.
|
||||
|
||||
b) accompany the distribution with the machine-readable source of
|
||||
the Package with your modifications.
|
||||
|
||||
c) give non-standard executables non-standard names, and clearly
|
||||
document the differences in manual pages (or equivalent), together
|
||||
with instructions on where to get the Standard Version.
|
||||
|
||||
d) make other distribution arrangements with the Copyright Holder.
|
||||
|
||||
5. You may charge a reasonable copying fee for any distribution of this
|
||||
Package. You may charge any fee you choose for support of this
|
||||
Package. You may not charge a fee for this Package itself. However,
|
||||
you may distribute this Package in aggregate with other (possibly
|
||||
commercial) programs as part of a larger (possibly commercial) software
|
||||
distribution provided that you do not advertise this Package as a
|
||||
product of your own.
|
||||
|
||||
6. Any programs linked with this library do not automatically fall
|
||||
under the copyright of this Package, but belong to whomever generated
|
||||
them, and may be sold commercially, and may be aggregated with this
|
||||
Package.
|
||||
|
||||
7. The name of the Copyright Holder may not be used to endorse or promote
|
||||
products derived from this software without specific prior written permission.
|
||||
|
||||
8. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
The End
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
|
||||
# $Id$
|
||||
|
||||
SUBDIR= des include lib libexec usr.bin usr.sbin
|
||||
SUBDIR= include lib libexec usr.bin usr.sbin man
|
||||
|
||||
SDIR= ${.CURDIR}/..
|
||||
|
||||
@@ -28,7 +28,7 @@ kprog:
|
||||
|
||||
bootstrap:
|
||||
( cd include; ${MAKE} ${MFLAGS} install )
|
||||
( cd des; ${MAKE} ${MFLAGS} depend all install )
|
||||
( cd lib; ${MAKE} ${MFLAGS} depend all install )
|
||||
${MAKE} ${MFLAGS} cleandir
|
||||
${MAKE} ${MFLAGS} obj
|
||||
${MAKE} ${MFLAGS} depend all install kprog
|
||||
|
||||
+5
-7
@@ -1,14 +1,12 @@
|
||||
# From: @(#)Makefile.inc 5.1 (Berkeley) 6/25/90
|
||||
# $Id: Makefile.inc,v 1.8 1995/09/14 18:16:08 gibbs Exp $
|
||||
# $Id$
|
||||
|
||||
DISTRIBUTION= krb
|
||||
|
||||
INCLUDEDIR= ${.CURDIR}/../../include
|
||||
|
||||
.if exists(${.CURDIR}/../../des/obj)
|
||||
DESOBJDIR= ${.CURDIR}/../../des/obj
|
||||
.if exists(${.CURDIR}/../../../secure/lib/libdes/obj)
|
||||
DESOBJDIR= ${.CURDIR}/../../../secure/lib/libdes/obj
|
||||
.else
|
||||
DESOBJDIR= ${.CURDIR}/../../des
|
||||
DESOBJDIR= ${.CURDIR}/../../../secure/lib/libdes
|
||||
.endif
|
||||
|
||||
.if exists(${.CURDIR}/../../lib/libkrb/obj)
|
||||
@@ -41,7 +39,7 @@ RKINITOBJDIR= ${.CURDIR}/../../lib/librkinit/obj
|
||||
RKINITOBJDIR= ${.CURDIR}/../../lib/librkinit
|
||||
.endif
|
||||
|
||||
CFLAGS+= -I${INCLUDEDIR} -Wall
|
||||
CFLAGS+= -I${.CURDIR}/../../../secure/lib/libdes -I${.CURDIR}/../../include -Wall
|
||||
|
||||
COMPILE_ET= compile_et
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
IMPORTANT!
|
||||
|
||||
This distribution includes a patch (already applied), that updates
|
||||
Kerberos' key generation. The gist of the patch is to replace calls
|
||||
to des_random_key() with calls to des_new_random_key().
|
||||
|
||||
The primary difference is that des_random_key() uses a seeding
|
||||
technique which is predictable and therefore vulnerable.
|
||||
des_new_random_key() uses a feedback mechanism based on the Data
|
||||
Encryption Standard (DES) and is seeded with a secret (and therefore
|
||||
unknown to an attacker) value. This value is the database master
|
||||
key, which is a convenient secret value.
|
||||
|
||||
This patch uses the new_rnd_key.c key module (which contains the
|
||||
definition and code for des_new_random_key()). It has been part of
|
||||
the standard Version 4 distribution since 1992 (and was recreated
|
||||
for FreeBSD in 1995). This is used in the MIT admin server (the
|
||||
primary error at MIT was not upgrading all of Kerberos to use this
|
||||
newer generator. This patch finishes the job).
|
||||
|
||||
In addition to the patch for the Kerberos distribution this
|
||||
distribution also contains a program for changing critical system keys
|
||||
(namely the "krbtgt" and "changepw.kerberos" keys). When you
|
||||
originally built your Kerberos database these keys were chosen at
|
||||
random, using the vulnerable version of the kerberos random number
|
||||
generator. Therefore it is possible for an attacker to mount an attack
|
||||
to guess these values. If an attacker can determine the key for the
|
||||
"krbtgt" ticket, they can construct tickets claiming to be any
|
||||
kerberos principal. Similarly if an attacker can obtain the
|
||||
"changepw.kerberos" key, they can change anyone's password.
|
||||
|
||||
The new "fix_kdb_keys(8)" program, which you run on the KDC
|
||||
server, will change these critical keys to new values using the
|
||||
newer random number generator. IMPORTANT: When you run fix_kdb_keys,
|
||||
all outstanding ticket granting tickets will immediately become
|
||||
invalid. This will be disruptive to your user community. We recommend
|
||||
that you either do this late at night or early in the morning before
|
||||
most users have logged in. Alternatively pre-announce a definitive
|
||||
time when you will run the program and inform your users that they
|
||||
will have to get new tickets at that time (using either "kinit" or
|
||||
simply by logging out and then in again).
|
||||
|
||||
NOTE: The only client program modified is "ksrvutil" which is used
|
||||
to generate new server keys. All other client/server programs are
|
||||
unaffected. End users do *not* need to obtain new versions of
|
||||
programs that use Kerberos. This is because most random number
|
||||
generation in the Kerberos system is done on the KDC system.
|
||||
|
||||
After getting these sources, type "make world" at the toplevel of
|
||||
your source tree. This will, among other things, build the fix_kdb_keys
|
||||
program. This is not necessary if you have already got prebuilt
|
||||
binaries with this distribution.
|
||||
@@ -1,56 +0,0 @@
|
||||
|
||||
libdes, Version 3.00 93/10/07
|
||||
|
||||
Copyright (c) 1993, Eric Young
|
||||
All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of either:
|
||||
|
||||
a) the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 1, or (at your option) any
|
||||
later version, or
|
||||
|
||||
b) the "Artistic License" which comes with this Kit.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
|
||||
the GNU General Public License or the Artistic License for more details.
|
||||
|
||||
You should have received a copy of the Artistic License with this
|
||||
Kit, in the file named "Artistic". If not, I'll be glad to provide one.
|
||||
|
||||
You should also have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
---
|
||||
This kit builds a DES encryption library and a DES encryption program.
|
||||
It suports ecb, cbc, ofb, cfb, triple ecb, triple cbc and MIT's pcbc
|
||||
encryption modes and also has a fast implementation of crypt(3).
|
||||
It contains support routines to read keys from a terminal,
|
||||
generate a random key, generate a key from an arbitary length string,
|
||||
read/write encrypted data from/to a file descriptor.
|
||||
|
||||
The implementation was written so as to conform with the manual entry
|
||||
for the des_crypt(3) library routines from MIT's project Athena.
|
||||
|
||||
destest should be run after compilation to test the des routines.
|
||||
rpw should be run after compilation to test the read password routines.
|
||||
The des program is a replacement for the sun des command. I believe it
|
||||
conforms to the sun version.
|
||||
|
||||
The Imakefile is setup for use in the kerberos distribution.
|
||||
|
||||
These routines are best compiled with gcc or any other good
|
||||
optimising compiler.
|
||||
Just turn you optimiser up to the highest settings and run destest
|
||||
after the build to make sure everything works.
|
||||
|
||||
I believe these routines are close to the fastest and most portable DES
|
||||
routines that use small lookup tables (4.5k) that are publicly available.
|
||||
The fcrypt routine is faster than ufc's fcrypt (when compiling with
|
||||
gcc2 -O2) on the sparc 2 (1410 vs 1270) but is not so good on other machines
|
||||
(on a sun3/260 168 vs 336).
|
||||
|
||||
Eric Young ([email protected])
|
||||
@@ -1,60 +0,0 @@
|
||||
/* 3cbc_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: 3cbc_enc.c,v 1.1.1.1 1994/09/30 14:49:50 csgr Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
void
|
||||
xp(a)
|
||||
unsigned char *a;
|
||||
{ int i; for(i=0; i<8; i++) printf("%02X",a[i]);printf("\n");}
|
||||
|
||||
int des_3cbc_encrypt(input,output,length,ks1,ks2,iv1,iv2,encrypt)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
long length;
|
||||
des_key_schedule ks1,ks2;
|
||||
des_cblock *iv1,*iv2;
|
||||
int encrypt;
|
||||
{
|
||||
int off=length/8-1;
|
||||
des_cblock niv1,niv2;
|
||||
|
||||
printf("3cbc\n");
|
||||
xp(iv1);
|
||||
xp(iv1);
|
||||
xp(iv2);
|
||||
xp(input);
|
||||
if (encrypt == DES_ENCRYPT)
|
||||
{
|
||||
des_cbc_encrypt(input,output,length,ks1,iv1,encrypt);
|
||||
if (length >= sizeof(des_cblock))
|
||||
bcopy(output[off],niv1,sizeof(des_cblock));
|
||||
des_cbc_encrypt(output,output,length,ks2,iv1,!encrypt);
|
||||
des_cbc_encrypt(output,output,length,ks1,iv2, encrypt);
|
||||
if (length >= sizeof(des_cblock))
|
||||
bcopy(output[off],niv2,sizeof(des_cblock));
|
||||
bcopy(niv1,*iv1,sizeof(des_cblock));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (length >= sizeof(des_cblock))
|
||||
bcopy(input[off],niv1,sizeof(des_cblock));
|
||||
des_cbc_encrypt(input,output,length,ks1,iv1,encrypt);
|
||||
des_cbc_encrypt(output,output,length,ks2,iv2,!encrypt);
|
||||
if (length >= sizeof(des_cblock))
|
||||
bcopy(output[off],niv2,sizeof(des_cblock));
|
||||
des_cbc_encrypt(output,output,length,ks1,iv2, encrypt);
|
||||
}
|
||||
bcopy(niv1,iv1,sizeof(des_cblock));
|
||||
bcopy(niv2,iv2,sizeof(des_cblock));
|
||||
xp(iv1);
|
||||
xp(iv1);
|
||||
xp(iv2);
|
||||
xp(output);
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/* 3ecb_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: 3ecb_enc.c,v 1.1.1.1 1994/09/30 14:49:50 csgr Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
int des_3ecb_encrypt(input,output,ks1,ks2,encrypt)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
des_key_schedule ks1,ks2;
|
||||
int encrypt;
|
||||
{
|
||||
register unsigned long l0,l1;
|
||||
register unsigned char *in,*out;
|
||||
unsigned long ll[2];
|
||||
|
||||
in=(unsigned char *)input;
|
||||
out=(unsigned char *)output;
|
||||
c2l(in,l0);
|
||||
c2l(in,l1);
|
||||
ll[0]=l0;
|
||||
ll[1]=l1;
|
||||
des_encrypt(ll,ll,ks1,encrypt);
|
||||
des_encrypt(ll,ll,ks2,!encrypt);
|
||||
des_encrypt(ll,ll,ks1,encrypt);
|
||||
l0=ll[0];
|
||||
l1=ll[1];
|
||||
l2c(l0,out);
|
||||
l2c(l1,out);
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# @(#)Makefile 5.4 (Berkeley) 5/7/91
|
||||
# $Id: Makefile,v 1.4 1995/09/14 18:16:11 gibbs Exp $
|
||||
|
||||
LIB= des
|
||||
SRCS= cbc_cksm.c cbc_enc.c ecb_enc.c enc_read.c enc_writ.c pcbc_enc.c \
|
||||
qud_cksm.c rand_key.c read_pwd.c set_key.c str2key.c \
|
||||
cfb_enc.c 3ecb_enc.c ofb_enc.c 3cbc_enc.c new_rnd_key.c
|
||||
#MAN1= des.1
|
||||
#MAN3= des.3
|
||||
|
||||
#LINKS= crypt
|
||||
CFLAGS+= -DDES_ENCRYPT -DKRBDES_ENCRYPT
|
||||
|
||||
# Kerberos 4?
|
||||
#CFLAGS+=-DKRB4
|
||||
#SRCS+= kerberos.c
|
||||
|
||||
# Kerberos 5?
|
||||
#CFLAGS+= -DKRB5
|
||||
#SRCS+= kerberos5.c
|
||||
|
||||
CFLAGS+= -I${.CURDIR}/include -I${.CURDIR}/../include -DAUTHENTICATE
|
||||
SHLIB_MAJOR?= 2
|
||||
SHLIB_MINOR?= 0
|
||||
|
||||
.include "/usr/src/lib/Makefile.inc"
|
||||
.include <bsd.lib.mk>
|
||||
@@ -1,55 +0,0 @@
|
||||
/* cbc_cksm.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: cbc_cksm.c,v 1.1.1.1 1994/09/30 14:49:50 csgr Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
unsigned long des_cbc_cksum(input,output,length,schedule,ivec)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
long length;
|
||||
des_key_schedule schedule;
|
||||
des_cblock *ivec;
|
||||
{
|
||||
register unsigned long tout0,tout1,tin0,tin1;
|
||||
register long l=length;
|
||||
unsigned long tin[2],tout[2];
|
||||
unsigned char *in,*out,*iv;
|
||||
|
||||
in=(unsigned char *)input;
|
||||
out=(unsigned char *)output;
|
||||
iv=(unsigned char *)ivec;
|
||||
|
||||
c2l(iv,tout0);
|
||||
c2l(iv,tout1);
|
||||
for (; l>0; l-=8)
|
||||
{
|
||||
if (l >= 8)
|
||||
{
|
||||
c2l(in,tin0);
|
||||
c2l(in,tin1);
|
||||
}
|
||||
else
|
||||
c2ln(in,tin0,tin1,l);
|
||||
|
||||
tin0^=tout0;
|
||||
tin1^=tout1;
|
||||
tin[0]=tin0;
|
||||
tin[1]=tin1;
|
||||
des_encrypt((unsigned long *)tin,(unsigned long *)tout,
|
||||
schedule,DES_ENCRYPT);
|
||||
/* fix 15/10/91 eay - thanks to [email protected] */
|
||||
tout0=tout[0];
|
||||
tout1=tout[1];
|
||||
}
|
||||
if (out != NULL)
|
||||
{
|
||||
l2c(tout0,out);
|
||||
l2c(tout1,out);
|
||||
}
|
||||
tout0=tin0=tin1=tin[0]=tin[1]=tout[0]=tout[1]=0;
|
||||
return(tout1);
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
/* cbc_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: cbc_enc.c,v 1.2 1994/07/19 19:21:47 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
int des_cbc_encrypt(input,output,length,schedule,ivec,encrypt)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
long length;
|
||||
des_key_schedule schedule;
|
||||
des_cblock *ivec;
|
||||
int encrypt;
|
||||
{
|
||||
register unsigned long tin0,tin1;
|
||||
register unsigned long tout0,tout1,xor0,xor1;
|
||||
register unsigned char *in,*out;
|
||||
register long l=length;
|
||||
unsigned long tout[2],tin[2];
|
||||
unsigned char *iv;
|
||||
|
||||
in=(unsigned char *)input;
|
||||
out=(unsigned char *)output;
|
||||
iv=(unsigned char *)ivec;
|
||||
|
||||
if (encrypt)
|
||||
{
|
||||
c2l(iv,tout0);
|
||||
c2l(iv,tout1);
|
||||
for (; l>0; l-=8)
|
||||
{
|
||||
if (l >= 8)
|
||||
{
|
||||
c2l(in,tin0);
|
||||
c2l(in,tin1);
|
||||
}
|
||||
else
|
||||
c2ln(in,tin0,tin1,l);
|
||||
tin0^=tout0;
|
||||
tin1^=tout1;
|
||||
tin[0]=tin0;
|
||||
tin[1]=tin1;
|
||||
des_encrypt((unsigned long *)tin,(unsigned long *)tout,
|
||||
schedule,encrypt);
|
||||
tout0=tout[0];
|
||||
tout1=tout[1];
|
||||
l2c(tout0,out);
|
||||
l2c(tout1,out);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
c2l(iv,xor0);
|
||||
c2l(iv,xor1);
|
||||
for (; l>0; l-=8)
|
||||
{
|
||||
c2l(in,tin0);
|
||||
c2l(in,tin1);
|
||||
tin[0]=tin0;
|
||||
tin[1]=tin1;
|
||||
des_encrypt((unsigned long *)tin,(unsigned long *)tout,
|
||||
schedule,encrypt);
|
||||
tout0=tout[0]^xor0;
|
||||
tout1=tout[1]^xor1;
|
||||
if (l >= 8)
|
||||
{
|
||||
l2c(tout0,out);
|
||||
l2c(tout1,out);
|
||||
}
|
||||
else
|
||||
l2cn(tout0,tout1,out,l);
|
||||
xor0=tin0;
|
||||
xor1=tin1;
|
||||
}
|
||||
}
|
||||
tin0=tin1=tout0=tout1=xor0=xor1=0;
|
||||
tin[0]=tin[1]=tout[0]=tout[1]=0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
/* cfb_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: cfb_enc.c,v 1.2 1994/07/19 19:21:48 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
/* The input and output are loaded in multiples of 8 bits.
|
||||
* What this means is that if you hame numbits=12 and length=2
|
||||
* the first 12 bits will be retrieved from the first byte and half
|
||||
* the second. The second 12 bits will come from the 3rd and half the 4th
|
||||
* byte.
|
||||
*/
|
||||
int des_cfb_encrypt(in,out,numbits,length,schedule,ivec,encrypt)
|
||||
unsigned char *in,*out;
|
||||
int numbits;
|
||||
long length;
|
||||
des_key_schedule schedule;
|
||||
des_cblock *ivec;
|
||||
int encrypt;
|
||||
{
|
||||
register unsigned long d0,d1,v0,v1,n=(numbits+7)/8;
|
||||
register unsigned long mask0,mask1;
|
||||
register long l=length;
|
||||
register int num=numbits;
|
||||
unsigned long ti[2],to[2];
|
||||
unsigned char *iv;
|
||||
|
||||
if (num > 64) return(0);
|
||||
if (num > 32)
|
||||
{
|
||||
mask0=0xffffffff;
|
||||
if (num == 64)
|
||||
mask1=mask0;
|
||||
else
|
||||
mask1=(1L<<(num-32))-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (num == 32)
|
||||
mask0=0xffffffff;
|
||||
else
|
||||
mask0=(1L<<num)-1;
|
||||
mask1=0x00000000;
|
||||
}
|
||||
|
||||
iv=(unsigned char *)ivec;
|
||||
c2l(iv,v0);
|
||||
c2l(iv,v1);
|
||||
if (encrypt)
|
||||
{
|
||||
while (l-- > 0)
|
||||
{
|
||||
ti[0]=v0;
|
||||
ti[1]=v1;
|
||||
des_encrypt((unsigned long *)ti,(unsigned long *)to,
|
||||
schedule,DES_ENCRYPT);
|
||||
c2ln(in,d0,d1,n);
|
||||
in+=n;
|
||||
d0=(d0^to[0])&mask0;
|
||||
d1=(d1^to[1])&mask1;
|
||||
l2cn(d0,d1,out,n);
|
||||
out+=n;
|
||||
if (num > 32)
|
||||
{
|
||||
v0=((v1>>(num-32))|(d0<<(64-num)))&0xffffffff;
|
||||
v1=((d0>>(num-32))|(d1<<(64-num)))&0xffffffff;
|
||||
}
|
||||
else
|
||||
{
|
||||
v0=((v0>>num)|(v1<<(32-num)))&0xffffffff;
|
||||
v1=((v1>>num)|(d0<<(32-num)))&0xffffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (l-- > 0)
|
||||
{
|
||||
ti[0]=v0;
|
||||
ti[1]=v1;
|
||||
des_encrypt((unsigned long *)ti,(unsigned long *)to,
|
||||
schedule,DES_ENCRYPT);
|
||||
c2ln(in,d0,d1,n);
|
||||
in+=n;
|
||||
if (num > 32)
|
||||
{
|
||||
v0=((v1>>(num-32))|(d0<<(64-num)))&0xffffffff;
|
||||
v1=((d0>>(num-32))|(d1<<(64-num)))&0xffffffff;
|
||||
}
|
||||
else
|
||||
{
|
||||
v0=((v0>>num)|(v1<<(32-num)))&0xffffffff;
|
||||
v1=((v1>>num)|(d0<<(32-num)))&0xffffffff;
|
||||
}
|
||||
d0=(d0^to[0])&mask0;
|
||||
d1=(d1^to[1])&mask1;
|
||||
l2cn(d0,d1,out,n);
|
||||
out+=n;
|
||||
}
|
||||
}
|
||||
iv=(unsigned char *)ivec;
|
||||
l2c(v0,iv);
|
||||
l2c(v1,iv);
|
||||
v0=v1=d0=d1=ti[0]=ti[1]=to[0]=to[1]=0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
|
||||
The "Artistic License"
|
||||
|
||||
Preamble
|
||||
|
||||
The intent of this document is to state the conditions under which a
|
||||
Package may be copied, such that the Copyright Holder maintains some
|
||||
semblance of artistic control over the development of the package,
|
||||
while giving the users of the package the right to use and distribute
|
||||
the Package in a more-or-less customary fashion, plus the right to make
|
||||
reasonable modifications.
|
||||
|
||||
Definitions:
|
||||
|
||||
"Package" refers to the collection of files distributed by the
|
||||
Copyright Holder, and derivatives of that collection of files
|
||||
created through textual modification.
|
||||
|
||||
"Standard Version" refers to such a Package if it has not been
|
||||
modified, or has been modified in accordance with the wishes
|
||||
of the Copyright Holder as specified below.
|
||||
|
||||
"Copyright Holder" is whoever is named in the copyright or
|
||||
copyrights for the package.
|
||||
|
||||
"You" is you, if you're thinking about copying or distributing
|
||||
this Package.
|
||||
|
||||
"Reasonable copying fee" is whatever you can justify on the
|
||||
basis of media cost, duplication charges, time of people involved,
|
||||
and so on. (You will not be required to justify it to the
|
||||
Copyright Holder, but only to the computing community at large
|
||||
as a market that must bear the fee.)
|
||||
|
||||
"Freely Available" means that no fee is charged for the item
|
||||
itself, though there may be fees involved in handling the item.
|
||||
It also means that recipients of the item may redistribute it
|
||||
under the same conditions they received it.
|
||||
|
||||
1. You may make and give away verbatim copies of the source form of the
|
||||
Standard Version of this Package without restriction, provided that you
|
||||
duplicate all of the original copyright notices and associated disclaimers.
|
||||
|
||||
2. You may apply bug fixes, portability fixes and other modifications
|
||||
derived from the Public Domain or from the Copyright Holder. A Package
|
||||
modified in such a way shall still be considered the Standard Version.
|
||||
|
||||
3. You may otherwise modify your copy of this Package in any way, provided
|
||||
that you insert a prominent notice in each changed file stating how and
|
||||
when you changed that file, and provided that you do at least ONE of the
|
||||
following:
|
||||
|
||||
a) place your modifications in the Public Domain or otherwise make them
|
||||
Freely Available, such as by posting said modifications to Usenet or
|
||||
an equivalent medium, or placing the modifications on a major archive
|
||||
site such as uunet.uu.net, or by allowing the Copyright Holder to include
|
||||
your modifications in the Standard Version of the Package.
|
||||
|
||||
b) use the modified Package only within your corporation or organization.
|
||||
|
||||
c) rename any non-standard executables so the names do not conflict
|
||||
with standard executables, which must also be provided, and provide
|
||||
a separate manual page for each non-standard executable that clearly
|
||||
documents how it differs from the Standard Version.
|
||||
|
||||
d) make other distribution arrangements with the Copyright Holder.
|
||||
|
||||
4. You may distribute the programs of this Package in object code or
|
||||
executable form, provided that you do at least ONE of the following:
|
||||
|
||||
a) distribute a Standard Version of the executables and library files,
|
||||
together with instructions (in the manual page or equivalent) on where
|
||||
to get the Standard Version.
|
||||
|
||||
b) accompany the distribution with the machine-readable source of
|
||||
the Package with your modifications.
|
||||
|
||||
c) give non-standard executables non-standard names, and clearly
|
||||
document the differences in manual pages (or equivalent), together
|
||||
with instructions on where to get the Standard Version.
|
||||
|
||||
d) make other distribution arrangements with the Copyright Holder.
|
||||
|
||||
5. You may charge a reasonable copying fee for any distribution of this
|
||||
Package. You may charge any fee you choose for support of this
|
||||
Package. You may not charge a fee for this Package itself. However,
|
||||
you may distribute this Package in aggregate with other (possibly
|
||||
commercial) programs as part of a larger (possibly commercial) software
|
||||
distribution provided that you do not advertise this Package as a
|
||||
product of your own.
|
||||
|
||||
6. Any programs linked with this library do not automatically fall
|
||||
under the copyright of this Package, but belong to whomever generated
|
||||
them, and may be sold commercially, and may be aggregated with this
|
||||
Package.
|
||||
|
||||
7. The name of the Copyright Holder may not be used to endorse or promote
|
||||
products derived from this software without specific prior written permission.
|
||||
|
||||
8. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
The End
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
The main changes in this package since it was last posted to
|
||||
comp.sources.misc are
|
||||
|
||||
The main changes are
|
||||
- Major changes to the Copyright restrictions.
|
||||
- Lots and lots of features added to the des(1) command, including
|
||||
- Triple DES, both triple ECB and triple CBC options.
|
||||
- uuencodeing/uudecoding built in to des(1).
|
||||
- generate checksums.
|
||||
- hex keys.
|
||||
- Cleaned up the prototypes in des.h
|
||||
- Filenames are now mostly <= 8 characters long.
|
||||
- OFB, CFB, triple ECB and triple CBC modes of DES added to the library.
|
||||
- Compiles and runs of all 64bit machines I could test the code on
|
||||
(Cray, ETA10, DEC Alpha).
|
||||
- It really does work with kerberos v 4 now :-).
|
||||
@@ -1,489 +0,0 @@
|
||||
Copyright (C) 1993 Eric Young
|
||||
|
||||
This is a DES implementation written by Eric Young ([email protected])
|
||||
The implementation was written so as to conform with the manual entry
|
||||
for the des_crypt(3) library routines from MIT's project Athena.
|
||||
|
||||
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
@@ -1,123 +0,0 @@
|
||||
/* ecb_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: ecb_enc.c,v 1.2 1994/07/19 19:21:53 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
#include "spr.h"
|
||||
|
||||
int des_ecb_encrypt(input,output,ks,encrypt)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
des_key_schedule ks;
|
||||
int encrypt;
|
||||
{
|
||||
register unsigned long l0,l1;
|
||||
register unsigned char *in,*out;
|
||||
unsigned long ll[2];
|
||||
|
||||
in=(unsigned char *)input;
|
||||
out=(unsigned char *)output;
|
||||
c2l(in,l0);
|
||||
c2l(in,l1);
|
||||
ll[0]=l0;
|
||||
ll[1]=l1;
|
||||
des_encrypt(ll,ll,ks,encrypt);
|
||||
l0=ll[0];
|
||||
l1=ll[1];
|
||||
l2c(l0,out);
|
||||
l2c(l1,out);
|
||||
l0=l1=ll[0]=ll[1]=0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
int des_encrypt(input,output,ks,encrypt)
|
||||
unsigned long *input;
|
||||
unsigned long *output;
|
||||
des_key_schedule ks;
|
||||
int encrypt;
|
||||
{
|
||||
register unsigned long l,r,t,u;
|
||||
#ifdef ALT_ECB
|
||||
register unsigned char *des_SP=(unsigned char *)des_SPtrans;
|
||||
#endif
|
||||
#ifdef MSDOS
|
||||
union fudge {
|
||||
unsigned long l;
|
||||
unsigned short s[2];
|
||||
unsigned char c[4];
|
||||
} U,T;
|
||||
#endif
|
||||
register int i;
|
||||
register unsigned long *s;
|
||||
|
||||
l=input[0];
|
||||
r=input[1];
|
||||
|
||||
/* do IP */
|
||||
PERM_OP(r,l,t, 4,0x0f0f0f0f);
|
||||
PERM_OP(l,r,t,16,0x0000ffff);
|
||||
PERM_OP(r,l,t, 2,0x33333333);
|
||||
PERM_OP(l,r,t, 8,0x00ff00ff);
|
||||
PERM_OP(r,l,t, 1,0x55555555);
|
||||
/* r and l are reversed - remember that :-) - fix
|
||||
* it in the next step */
|
||||
|
||||
/* Things have been modified so that the initial rotate is
|
||||
* done outside the loop. This required the
|
||||
* des_SPtrans values in sp.h to be rotated 1 bit to the right.
|
||||
* One perl script later and things have a 5% speed up on a sparc2.
|
||||
* Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
|
||||
* for pointing this out. */
|
||||
t=(r<<1)|(r>>31);
|
||||
r=(l<<1)|(l>>31);
|
||||
l=t;
|
||||
|
||||
/* clear the top bits on machines with 8byte longs */
|
||||
l&=0xffffffff;
|
||||
r&=0xffffffff;
|
||||
|
||||
s=(unsigned long *)ks;
|
||||
/* I don't know if it is worth the effort of loop unrolling the
|
||||
* inner loop */
|
||||
if (encrypt)
|
||||
{
|
||||
for (i=0; i<32; i+=4)
|
||||
{
|
||||
D_ENCRYPT(l,r,i+0); /* 1 */
|
||||
D_ENCRYPT(r,l,i+2); /* 2 */
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i=30; i>0; i-=4)
|
||||
{
|
||||
D_ENCRYPT(l,r,i-0); /* 16 */
|
||||
D_ENCRYPT(r,l,i-2); /* 15 */
|
||||
}
|
||||
}
|
||||
l=(l>>1)|(l<<31);
|
||||
r=(r>>1)|(r<<31);
|
||||
/* clear the top bits on machines with 8byte longs */
|
||||
l&=0xffffffff;
|
||||
r&=0xffffffff;
|
||||
|
||||
/* swap l and r
|
||||
* we will not do the swap so just remember they are
|
||||
* reversed for the rest of the subroutine
|
||||
* luckily FP fixes this problem :-) */
|
||||
|
||||
PERM_OP(r,l,t, 1,0x55555555);
|
||||
PERM_OP(l,r,t, 8,0x00ff00ff);
|
||||
PERM_OP(r,l,t, 2,0x33333333);
|
||||
PERM_OP(l,r,t,16,0x0000ffff);
|
||||
PERM_OP(r,l,t, 4,0x0f0f0f0f);
|
||||
|
||||
output[0]=l;
|
||||
output[1]=r;
|
||||
l=r=t=u=0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,150 +0,0 @@
|
||||
/* enc_read.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: enc_read.c,v 1.2 1995/05/30 06:40:11 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include "des_locl.h"
|
||||
|
||||
/* This has some uglies in it but it works - even over sockets. */
|
||||
extern int errno;
|
||||
int des_rw_mode=DES_PCBC_MODE;
|
||||
|
||||
int des_enc_read(fd,buf,len,sched,iv)
|
||||
int fd;
|
||||
char *buf;
|
||||
int len;
|
||||
des_key_schedule sched;
|
||||
des_cblock *iv;
|
||||
{
|
||||
/* data to be unencrypted */
|
||||
int net_num=0;
|
||||
unsigned char net[BSIZE];
|
||||
/* extra unencrypted data
|
||||
* for when a block of 100 comes in but is des_read one byte at
|
||||
* a time. */
|
||||
static char unnet[BSIZE];
|
||||
static int unnet_start=0;
|
||||
static int unnet_left=0;
|
||||
int i;
|
||||
long num=0,rnum;
|
||||
unsigned char *p;
|
||||
|
||||
/* left over data from last decrypt */
|
||||
if (unnet_left != 0)
|
||||
{
|
||||
if (unnet_left < len)
|
||||
{
|
||||
/* we still still need more data but will return
|
||||
* with the number of bytes we have - should always
|
||||
* check the return value */
|
||||
bcopy(&(unnet[unnet_start]),buf,unnet_left);
|
||||
/* eay 26/08/92 I had the next 2 lines
|
||||
* reversed :-( */
|
||||
i=unnet_left;
|
||||
unnet_start=unnet_left=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
bcopy(&(unnet[unnet_start]),buf,len);
|
||||
unnet_start+=len;
|
||||
unnet_left-=len;
|
||||
i=len;
|
||||
}
|
||||
return(i);
|
||||
}
|
||||
|
||||
/* We need to get more data. */
|
||||
if (len > MAXWRITE) len=MAXWRITE;
|
||||
|
||||
/* first - get the length */
|
||||
net_num=0;
|
||||
while (net_num < HDRSIZE)
|
||||
{
|
||||
i=read(fd,&(net[net_num]),HDRSIZE-net_num);
|
||||
if ((i == -1) && (errno == EINTR)) continue;
|
||||
if (i <= 0) return(0);
|
||||
net_num+=i;
|
||||
}
|
||||
|
||||
/* we now have at net_num bytes in net */
|
||||
p=net;
|
||||
num=0;
|
||||
n2l(p,num);
|
||||
/* num should be rounded up to the next group of eight
|
||||
* we make sure that we have read a multiple of 8 bytes from the net.
|
||||
*/
|
||||
if ((num > MAXWRITE) || (num < 0)) /* error */
|
||||
return(-1);
|
||||
rnum=(num < 8)?8:((num+7)/8*8);
|
||||
|
||||
net_num=0;
|
||||
while (net_num < rnum)
|
||||
{
|
||||
i=read(fd,&(net[net_num]),rnum-net_num);
|
||||
if ((i == -1) && (errno == EINTR)) continue;
|
||||
if (i <= 0) return(0);
|
||||
net_num+=i;
|
||||
}
|
||||
|
||||
/* Check if there will be data left over. */
|
||||
if (len < num)
|
||||
{
|
||||
if (des_rw_mode & DES_PCBC_MODE)
|
||||
pcbc_encrypt((des_cblock *)net,(des_cblock *)unnet,
|
||||
num,sched,iv,DES_DECRYPT);
|
||||
else
|
||||
cbc_encrypt((des_cblock *)net,(des_cblock *)unnet,
|
||||
num,sched,iv,DES_DECRYPT);
|
||||
bcopy(unnet,buf,len);
|
||||
unnet_start=len;
|
||||
unnet_left=num-len;
|
||||
|
||||
/* The following line is done because we return num
|
||||
* as the number of bytes read. */
|
||||
num=len;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* >output is a multiple of 8 byes, if len < rnum
|
||||
* >we must be careful. The user must be aware that this
|
||||
* >routine will write more bytes than he asked for.
|
||||
* >The length of the buffer must be correct.
|
||||
* FIXED - Should be ok now 18-9-90 - eay */
|
||||
if (len < rnum)
|
||||
{
|
||||
char tmpbuf[BSIZE];
|
||||
|
||||
if (des_rw_mode & DES_PCBC_MODE)
|
||||
pcbc_encrypt((des_cblock *)net,
|
||||
(des_cblock *)tmpbuf,
|
||||
num,sched,iv,DES_DECRYPT);
|
||||
else
|
||||
cbc_encrypt((des_cblock *)net,
|
||||
(des_cblock *)tmpbuf,
|
||||
num,sched,iv,DES_DECRYPT);
|
||||
|
||||
/* eay 26/08/92 fix a bug that returned more
|
||||
* bytes than you asked for (returned len bytes :-( */
|
||||
bcopy(tmpbuf,buf,num);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (des_rw_mode & DES_PCBC_MODE)
|
||||
pcbc_encrypt((des_cblock *)net,
|
||||
(des_cblock *)buf,num,sched,iv,
|
||||
DES_DECRYPT);
|
||||
else
|
||||
cbc_encrypt((des_cblock *)net,
|
||||
(des_cblock *)buf,num,sched,iv,
|
||||
DES_DECRYPT);
|
||||
}
|
||||
}
|
||||
return(num);
|
||||
}
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
/* enc_writ.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: enc_writ.c,v 1.2 1995/05/30 06:40:12 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include "des_locl.h"
|
||||
|
||||
int des_enc_write(fd,buf,len,sched,iv)
|
||||
int fd;
|
||||
char *buf;
|
||||
int len;
|
||||
des_key_schedule sched;
|
||||
des_cblock *iv;
|
||||
{
|
||||
long rnum;
|
||||
int i,j,k,outnum;
|
||||
char outbuf[BSIZE+HDRSIZE];
|
||||
char shortbuf[8];
|
||||
char *p;
|
||||
static int start=1;
|
||||
|
||||
/* If we are sending less than 8 bytes, the same char will look
|
||||
* the same if we don't pad it out with random bytes */
|
||||
if (start)
|
||||
{
|
||||
start=0;
|
||||
srandom(time(NULL));
|
||||
}
|
||||
|
||||
/* lets recurse if we want to send the data in small chunks */
|
||||
if (len > MAXWRITE)
|
||||
{
|
||||
j=0;
|
||||
for (i=0; i<len; i+=k)
|
||||
{
|
||||
k=des_enc_write(fd,&(buf[i]),
|
||||
((len-i) > MAXWRITE)?MAXWRITE:(len-i),sched,iv);
|
||||
if (k < 0)
|
||||
return(k);
|
||||
else
|
||||
j+=k;
|
||||
}
|
||||
return(j);
|
||||
}
|
||||
|
||||
/* write length first */
|
||||
p=outbuf;
|
||||
l2n(len,p);
|
||||
|
||||
/* pad short strings */
|
||||
if (len < 8)
|
||||
{
|
||||
p=shortbuf;
|
||||
bcopy(buf,shortbuf,len);
|
||||
for (i=len; i<8; i++)
|
||||
shortbuf[i]=random();
|
||||
rnum=8;
|
||||
}
|
||||
else
|
||||
{
|
||||
p=buf;
|
||||
rnum=((len+7)/8*8); /* round up to nearest eight */
|
||||
}
|
||||
|
||||
if (des_rw_mode & DES_PCBC_MODE)
|
||||
pcbc_encrypt((des_cblock *)p,(des_cblock *)&(outbuf[HDRSIZE]),
|
||||
(long)((len<8)?8:len),sched,iv,DES_ENCRYPT);
|
||||
else
|
||||
cbc_encrypt((des_cblock *)p,(des_cblock *)&(outbuf[HDRSIZE]),
|
||||
(long)((len<8)?8:len),sched,iv,DES_ENCRYPT);
|
||||
|
||||
/* output */
|
||||
outnum=rnum+HDRSIZE;
|
||||
|
||||
for (j=0; j<outnum; j+=i)
|
||||
{
|
||||
/* eay 26/08/92 I was not doing writing from where we
|
||||
* got upto. */
|
||||
i=write(fd,&(outbuf[j]),(int)(outnum-j));
|
||||
if (i == -1)
|
||||
{
|
||||
if (errno == EINTR)
|
||||
i=0;
|
||||
else /* This is really a bad error - very bad
|
||||
* It will stuff-up both ends. */
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
||||
return(len);
|
||||
}
|
||||
@@ -1,581 +0,0 @@
|
||||
/* fcrypt.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: fcrypt.c,v 1.1.1.1 1994/09/30 14:49:51 csgr Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Eric Young.
|
||||
* This version of crypt has been developed from my MIT compatable
|
||||
* DES library.
|
||||
* The library is available at pub/DES at ftp.psy.uq.oz.au
|
||||
* eay@psych.psy.uq.oz.au
|
||||
*/
|
||||
|
||||
typedef unsigned char des_cblock[8];
|
||||
|
||||
typedef struct des_ks_struct
|
||||
{
|
||||
union {
|
||||
des_cblock _;
|
||||
/* make sure things are correct size on machines with
|
||||
* 8 byte longs */
|
||||
unsigned long pad[2];
|
||||
} ks;
|
||||
#define _ ks._
|
||||
} des_key_schedule[16];
|
||||
|
||||
#define DES_KEY_SZ (sizeof(des_cblock))
|
||||
#define DES_ENCRYPT 1
|
||||
#define DES_DECRYPT 0
|
||||
|
||||
#define ITERATIONS 16
|
||||
#define HALF_ITERATIONS 8
|
||||
|
||||
#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
|
||||
l|=((unsigned long)(*((c)++)))<< 8, \
|
||||
l|=((unsigned long)(*((c)++)))<<16, \
|
||||
l|=((unsigned long)(*((c)++)))<<24)
|
||||
|
||||
#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>> 8)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>16)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>24)&0xff))
|
||||
|
||||
static unsigned long SPtrans[8][64]={
|
||||
/* nibble 0 */
|
||||
0x00820200, 0x00020000, 0x80800000, 0x80820200,
|
||||
0x00800000, 0x80020200, 0x80020000, 0x80800000,
|
||||
0x80020200, 0x00820200, 0x00820000, 0x80000200,
|
||||
0x80800200, 0x00800000, 0x00000000, 0x80020000,
|
||||
0x00020000, 0x80000000, 0x00800200, 0x00020200,
|
||||
0x80820200, 0x00820000, 0x80000200, 0x00800200,
|
||||
0x80000000, 0x00000200, 0x00020200, 0x80820000,
|
||||
0x00000200, 0x80800200, 0x80820000, 0x00000000,
|
||||
0x00000000, 0x80820200, 0x00800200, 0x80020000,
|
||||
0x00820200, 0x00020000, 0x80000200, 0x00800200,
|
||||
0x80820000, 0x00000200, 0x00020200, 0x80800000,
|
||||
0x80020200, 0x80000000, 0x80800000, 0x00820000,
|
||||
0x80820200, 0x00020200, 0x00820000, 0x80800200,
|
||||
0x00800000, 0x80000200, 0x80020000, 0x00000000,
|
||||
0x00020000, 0x00800000, 0x80800200, 0x00820200,
|
||||
0x80000000, 0x80820000, 0x00000200, 0x80020200,
|
||||
/* nibble 1 */
|
||||
0x10042004, 0x00000000, 0x00042000, 0x10040000,
|
||||
0x10000004, 0x00002004, 0x10002000, 0x00042000,
|
||||
0x00002000, 0x10040004, 0x00000004, 0x10002000,
|
||||
0x00040004, 0x10042000, 0x10040000, 0x00000004,
|
||||
0x00040000, 0x10002004, 0x10040004, 0x00002000,
|
||||
0x00042004, 0x10000000, 0x00000000, 0x00040004,
|
||||
0x10002004, 0x00042004, 0x10042000, 0x10000004,
|
||||
0x10000000, 0x00040000, 0x00002004, 0x10042004,
|
||||
0x00040004, 0x10042000, 0x10002000, 0x00042004,
|
||||
0x10042004, 0x00040004, 0x10000004, 0x00000000,
|
||||
0x10000000, 0x00002004, 0x00040000, 0x10040004,
|
||||
0x00002000, 0x10000000, 0x00042004, 0x10002004,
|
||||
0x10042000, 0x00002000, 0x00000000, 0x10000004,
|
||||
0x00000004, 0x10042004, 0x00042000, 0x10040000,
|
||||
0x10040004, 0x00040000, 0x00002004, 0x10002000,
|
||||
0x10002004, 0x00000004, 0x10040000, 0x00042000,
|
||||
/* nibble 2 */
|
||||
0x41000000, 0x01010040, 0x00000040, 0x41000040,
|
||||
0x40010000, 0x01000000, 0x41000040, 0x00010040,
|
||||
0x01000040, 0x00010000, 0x01010000, 0x40000000,
|
||||
0x41010040, 0x40000040, 0x40000000, 0x41010000,
|
||||
0x00000000, 0x40010000, 0x01010040, 0x00000040,
|
||||
0x40000040, 0x41010040, 0x00010000, 0x41000000,
|
||||
0x41010000, 0x01000040, 0x40010040, 0x01010000,
|
||||
0x00010040, 0x00000000, 0x01000000, 0x40010040,
|
||||
0x01010040, 0x00000040, 0x40000000, 0x00010000,
|
||||
0x40000040, 0x40010000, 0x01010000, 0x41000040,
|
||||
0x00000000, 0x01010040, 0x00010040, 0x41010000,
|
||||
0x40010000, 0x01000000, 0x41010040, 0x40000000,
|
||||
0x40010040, 0x41000000, 0x01000000, 0x41010040,
|
||||
0x00010000, 0x01000040, 0x41000040, 0x00010040,
|
||||
0x01000040, 0x00000000, 0x41010000, 0x40000040,
|
||||
0x41000000, 0x40010040, 0x00000040, 0x01010000,
|
||||
/* nibble 3 */
|
||||
0x00100402, 0x04000400, 0x00000002, 0x04100402,
|
||||
0x00000000, 0x04100000, 0x04000402, 0x00100002,
|
||||
0x04100400, 0x04000002, 0x04000000, 0x00000402,
|
||||
0x04000002, 0x00100402, 0x00100000, 0x04000000,
|
||||
0x04100002, 0x00100400, 0x00000400, 0x00000002,
|
||||
0x00100400, 0x04000402, 0x04100000, 0x00000400,
|
||||
0x00000402, 0x00000000, 0x00100002, 0x04100400,
|
||||
0x04000400, 0x04100002, 0x04100402, 0x00100000,
|
||||
0x04100002, 0x00000402, 0x00100000, 0x04000002,
|
||||
0x00100400, 0x04000400, 0x00000002, 0x04100000,
|
||||
0x04000402, 0x00000000, 0x00000400, 0x00100002,
|
||||
0x00000000, 0x04100002, 0x04100400, 0x00000400,
|
||||
0x04000000, 0x04100402, 0x00100402, 0x00100000,
|
||||
0x04100402, 0x00000002, 0x04000400, 0x00100402,
|
||||
0x00100002, 0x00100400, 0x04100000, 0x04000402,
|
||||
0x00000402, 0x04000000, 0x04000002, 0x04100400,
|
||||
/* nibble 4 */
|
||||
0x02000000, 0x00004000, 0x00000100, 0x02004108,
|
||||
0x02004008, 0x02000100, 0x00004108, 0x02004000,
|
||||
0x00004000, 0x00000008, 0x02000008, 0x00004100,
|
||||
0x02000108, 0x02004008, 0x02004100, 0x00000000,
|
||||
0x00004100, 0x02000000, 0x00004008, 0x00000108,
|
||||
0x02000100, 0x00004108, 0x00000000, 0x02000008,
|
||||
0x00000008, 0x02000108, 0x02004108, 0x00004008,
|
||||
0x02004000, 0x00000100, 0x00000108, 0x02004100,
|
||||
0x02004100, 0x02000108, 0x00004008, 0x02004000,
|
||||
0x00004000, 0x00000008, 0x02000008, 0x02000100,
|
||||
0x02000000, 0x00004100, 0x02004108, 0x00000000,
|
||||
0x00004108, 0x02000000, 0x00000100, 0x00004008,
|
||||
0x02000108, 0x00000100, 0x00000000, 0x02004108,
|
||||
0x02004008, 0x02004100, 0x00000108, 0x00004000,
|
||||
0x00004100, 0x02004008, 0x02000100, 0x00000108,
|
||||
0x00000008, 0x00004108, 0x02004000, 0x02000008,
|
||||
/* nibble 5 */
|
||||
0x20000010, 0x00080010, 0x00000000, 0x20080800,
|
||||
0x00080010, 0x00000800, 0x20000810, 0x00080000,
|
||||
0x00000810, 0x20080810, 0x00080800, 0x20000000,
|
||||
0x20000800, 0x20000010, 0x20080000, 0x00080810,
|
||||
0x00080000, 0x20000810, 0x20080010, 0x00000000,
|
||||
0x00000800, 0x00000010, 0x20080800, 0x20080010,
|
||||
0x20080810, 0x20080000, 0x20000000, 0x00000810,
|
||||
0x00000010, 0x00080800, 0x00080810, 0x20000800,
|
||||
0x00000810, 0x20000000, 0x20000800, 0x00080810,
|
||||
0x20080800, 0x00080010, 0x00000000, 0x20000800,
|
||||
0x20000000, 0x00000800, 0x20080010, 0x00080000,
|
||||
0x00080010, 0x20080810, 0x00080800, 0x00000010,
|
||||
0x20080810, 0x00080800, 0x00080000, 0x20000810,
|
||||
0x20000010, 0x20080000, 0x00080810, 0x00000000,
|
||||
0x00000800, 0x20000010, 0x20000810, 0x20080800,
|
||||
0x20080000, 0x00000810, 0x00000010, 0x20080010,
|
||||
/* nibble 6 */
|
||||
0x00001000, 0x00000080, 0x00400080, 0x00400001,
|
||||
0x00401081, 0x00001001, 0x00001080, 0x00000000,
|
||||
0x00400000, 0x00400081, 0x00000081, 0x00401000,
|
||||
0x00000001, 0x00401080, 0x00401000, 0x00000081,
|
||||
0x00400081, 0x00001000, 0x00001001, 0x00401081,
|
||||
0x00000000, 0x00400080, 0x00400001, 0x00001080,
|
||||
0x00401001, 0x00001081, 0x00401080, 0x00000001,
|
||||
0x00001081, 0x00401001, 0x00000080, 0x00400000,
|
||||
0x00001081, 0x00401000, 0x00401001, 0x00000081,
|
||||
0x00001000, 0x00000080, 0x00400000, 0x00401001,
|
||||
0x00400081, 0x00001081, 0x00001080, 0x00000000,
|
||||
0x00000080, 0x00400001, 0x00000001, 0x00400080,
|
||||
0x00000000, 0x00400081, 0x00400080, 0x00001080,
|
||||
0x00000081, 0x00001000, 0x00401081, 0x00400000,
|
||||
0x00401080, 0x00000001, 0x00001001, 0x00401081,
|
||||
0x00400001, 0x00401080, 0x00401000, 0x00001001,
|
||||
/* nibble 7 */
|
||||
0x08200020, 0x08208000, 0x00008020, 0x00000000,
|
||||
0x08008000, 0x00200020, 0x08200000, 0x08208020,
|
||||
0x00000020, 0x08000000, 0x00208000, 0x00008020,
|
||||
0x00208020, 0x08008020, 0x08000020, 0x08200000,
|
||||
0x00008000, 0x00208020, 0x00200020, 0x08008000,
|
||||
0x08208020, 0x08000020, 0x00000000, 0x00208000,
|
||||
0x08000000, 0x00200000, 0x08008020, 0x08200020,
|
||||
0x00200000, 0x00008000, 0x08208000, 0x00000020,
|
||||
0x00200000, 0x00008000, 0x08000020, 0x08208020,
|
||||
0x00008020, 0x08000000, 0x00000000, 0x00208000,
|
||||
0x08200020, 0x08008020, 0x08008000, 0x00200020,
|
||||
0x08208000, 0x00000020, 0x00200020, 0x08008000,
|
||||
0x08208020, 0x00200000, 0x08200000, 0x08000020,
|
||||
0x00208000, 0x00008020, 0x08008020, 0x08200000,
|
||||
0x00000020, 0x08208000, 0x00208020, 0x00000000,
|
||||
0x08000000, 0x08200020, 0x00008000, 0x00208020};
|
||||
static unsigned long skb[8][64]={
|
||||
/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
|
||||
0x00000000,0x00000010,0x20000000,0x20000010,
|
||||
0x00010000,0x00010010,0x20010000,0x20010010,
|
||||
0x00000800,0x00000810,0x20000800,0x20000810,
|
||||
0x00010800,0x00010810,0x20010800,0x20010810,
|
||||
0x00000020,0x00000030,0x20000020,0x20000030,
|
||||
0x00010020,0x00010030,0x20010020,0x20010030,
|
||||
0x00000820,0x00000830,0x20000820,0x20000830,
|
||||
0x00010820,0x00010830,0x20010820,0x20010830,
|
||||
0x00080000,0x00080010,0x20080000,0x20080010,
|
||||
0x00090000,0x00090010,0x20090000,0x20090010,
|
||||
0x00080800,0x00080810,0x20080800,0x20080810,
|
||||
0x00090800,0x00090810,0x20090800,0x20090810,
|
||||
0x00080020,0x00080030,0x20080020,0x20080030,
|
||||
0x00090020,0x00090030,0x20090020,0x20090030,
|
||||
0x00080820,0x00080830,0x20080820,0x20080830,
|
||||
0x00090820,0x00090830,0x20090820,0x20090830,
|
||||
/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
|
||||
0x00000000,0x02000000,0x00002000,0x02002000,
|
||||
0x00200000,0x02200000,0x00202000,0x02202000,
|
||||
0x00000004,0x02000004,0x00002004,0x02002004,
|
||||
0x00200004,0x02200004,0x00202004,0x02202004,
|
||||
0x00000400,0x02000400,0x00002400,0x02002400,
|
||||
0x00200400,0x02200400,0x00202400,0x02202400,
|
||||
0x00000404,0x02000404,0x00002404,0x02002404,
|
||||
0x00200404,0x02200404,0x00202404,0x02202404,
|
||||
0x10000000,0x12000000,0x10002000,0x12002000,
|
||||
0x10200000,0x12200000,0x10202000,0x12202000,
|
||||
0x10000004,0x12000004,0x10002004,0x12002004,
|
||||
0x10200004,0x12200004,0x10202004,0x12202004,
|
||||
0x10000400,0x12000400,0x10002400,0x12002400,
|
||||
0x10200400,0x12200400,0x10202400,0x12202400,
|
||||
0x10000404,0x12000404,0x10002404,0x12002404,
|
||||
0x10200404,0x12200404,0x10202404,0x12202404,
|
||||
/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
|
||||
0x00000000,0x00000001,0x00040000,0x00040001,
|
||||
0x01000000,0x01000001,0x01040000,0x01040001,
|
||||
0x00000002,0x00000003,0x00040002,0x00040003,
|
||||
0x01000002,0x01000003,0x01040002,0x01040003,
|
||||
0x00000200,0x00000201,0x00040200,0x00040201,
|
||||
0x01000200,0x01000201,0x01040200,0x01040201,
|
||||
0x00000202,0x00000203,0x00040202,0x00040203,
|
||||
0x01000202,0x01000203,0x01040202,0x01040203,
|
||||
0x08000000,0x08000001,0x08040000,0x08040001,
|
||||
0x09000000,0x09000001,0x09040000,0x09040001,
|
||||
0x08000002,0x08000003,0x08040002,0x08040003,
|
||||
0x09000002,0x09000003,0x09040002,0x09040003,
|
||||
0x08000200,0x08000201,0x08040200,0x08040201,
|
||||
0x09000200,0x09000201,0x09040200,0x09040201,
|
||||
0x08000202,0x08000203,0x08040202,0x08040203,
|
||||
0x09000202,0x09000203,0x09040202,0x09040203,
|
||||
/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
|
||||
0x00000000,0x00100000,0x00000100,0x00100100,
|
||||
0x00000008,0x00100008,0x00000108,0x00100108,
|
||||
0x00001000,0x00101000,0x00001100,0x00101100,
|
||||
0x00001008,0x00101008,0x00001108,0x00101108,
|
||||
0x04000000,0x04100000,0x04000100,0x04100100,
|
||||
0x04000008,0x04100008,0x04000108,0x04100108,
|
||||
0x04001000,0x04101000,0x04001100,0x04101100,
|
||||
0x04001008,0x04101008,0x04001108,0x04101108,
|
||||
0x00020000,0x00120000,0x00020100,0x00120100,
|
||||
0x00020008,0x00120008,0x00020108,0x00120108,
|
||||
0x00021000,0x00121000,0x00021100,0x00121100,
|
||||
0x00021008,0x00121008,0x00021108,0x00121108,
|
||||
0x04020000,0x04120000,0x04020100,0x04120100,
|
||||
0x04020008,0x04120008,0x04020108,0x04120108,
|
||||
0x04021000,0x04121000,0x04021100,0x04121100,
|
||||
0x04021008,0x04121008,0x04021108,0x04121108,
|
||||
/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
|
||||
0x00000000,0x10000000,0x00010000,0x10010000,
|
||||
0x00000004,0x10000004,0x00010004,0x10010004,
|
||||
0x20000000,0x30000000,0x20010000,0x30010000,
|
||||
0x20000004,0x30000004,0x20010004,0x30010004,
|
||||
0x00100000,0x10100000,0x00110000,0x10110000,
|
||||
0x00100004,0x10100004,0x00110004,0x10110004,
|
||||
0x20100000,0x30100000,0x20110000,0x30110000,
|
||||
0x20100004,0x30100004,0x20110004,0x30110004,
|
||||
0x00001000,0x10001000,0x00011000,0x10011000,
|
||||
0x00001004,0x10001004,0x00011004,0x10011004,
|
||||
0x20001000,0x30001000,0x20011000,0x30011000,
|
||||
0x20001004,0x30001004,0x20011004,0x30011004,
|
||||
0x00101000,0x10101000,0x00111000,0x10111000,
|
||||
0x00101004,0x10101004,0x00111004,0x10111004,
|
||||
0x20101000,0x30101000,0x20111000,0x30111000,
|
||||
0x20101004,0x30101004,0x20111004,0x30111004,
|
||||
/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
|
||||
0x00000000,0x08000000,0x00000008,0x08000008,
|
||||
0x00000400,0x08000400,0x00000408,0x08000408,
|
||||
0x00020000,0x08020000,0x00020008,0x08020008,
|
||||
0x00020400,0x08020400,0x00020408,0x08020408,
|
||||
0x00000001,0x08000001,0x00000009,0x08000009,
|
||||
0x00000401,0x08000401,0x00000409,0x08000409,
|
||||
0x00020001,0x08020001,0x00020009,0x08020009,
|
||||
0x00020401,0x08020401,0x00020409,0x08020409,
|
||||
0x02000000,0x0A000000,0x02000008,0x0A000008,
|
||||
0x02000400,0x0A000400,0x02000408,0x0A000408,
|
||||
0x02020000,0x0A020000,0x02020008,0x0A020008,
|
||||
0x02020400,0x0A020400,0x02020408,0x0A020408,
|
||||
0x02000001,0x0A000001,0x02000009,0x0A000009,
|
||||
0x02000401,0x0A000401,0x02000409,0x0A000409,
|
||||
0x02020001,0x0A020001,0x02020009,0x0A020009,
|
||||
0x02020401,0x0A020401,0x02020409,0x0A020409,
|
||||
/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
|
||||
0x00000000,0x00000100,0x00080000,0x00080100,
|
||||
0x01000000,0x01000100,0x01080000,0x01080100,
|
||||
0x00000010,0x00000110,0x00080010,0x00080110,
|
||||
0x01000010,0x01000110,0x01080010,0x01080110,
|
||||
0x00200000,0x00200100,0x00280000,0x00280100,
|
||||
0x01200000,0x01200100,0x01280000,0x01280100,
|
||||
0x00200010,0x00200110,0x00280010,0x00280110,
|
||||
0x01200010,0x01200110,0x01280010,0x01280110,
|
||||
0x00000200,0x00000300,0x00080200,0x00080300,
|
||||
0x01000200,0x01000300,0x01080200,0x01080300,
|
||||
0x00000210,0x00000310,0x00080210,0x00080310,
|
||||
0x01000210,0x01000310,0x01080210,0x01080310,
|
||||
0x00200200,0x00200300,0x00280200,0x00280300,
|
||||
0x01200200,0x01200300,0x01280200,0x01280300,
|
||||
0x00200210,0x00200310,0x00280210,0x00280310,
|
||||
0x01200210,0x01200310,0x01280210,0x01280310,
|
||||
/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
|
||||
0x00000000,0x04000000,0x00040000,0x04040000,
|
||||
0x00000002,0x04000002,0x00040002,0x04040002,
|
||||
0x00002000,0x04002000,0x00042000,0x04042000,
|
||||
0x00002002,0x04002002,0x00042002,0x04042002,
|
||||
0x00000020,0x04000020,0x00040020,0x04040020,
|
||||
0x00000022,0x04000022,0x00040022,0x04040022,
|
||||
0x00002020,0x04002020,0x00042020,0x04042020,
|
||||
0x00002022,0x04002022,0x00042022,0x04042022,
|
||||
0x00000800,0x04000800,0x00040800,0x04040800,
|
||||
0x00000802,0x04000802,0x00040802,0x04040802,
|
||||
0x00002800,0x04002800,0x00042800,0x04042800,
|
||||
0x00002802,0x04002802,0x00042802,0x04042802,
|
||||
0x00000820,0x04000820,0x00040820,0x04040820,
|
||||
0x00000822,0x04000822,0x00040822,0x04040822,
|
||||
0x00002820,0x04002820,0x00042820,0x04042820,
|
||||
0x00002822,0x04002822,0x00042822,0x04042822,
|
||||
};
|
||||
|
||||
/* See ecb_encrypt.c for a pseudo description of these macros. */
|
||||
#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
|
||||
(b)^=(t),\
|
||||
(a)^=((t)<<(n)))
|
||||
|
||||
#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
|
||||
(a)=(a)^(t)^(t>>(16-(n))))\
|
||||
|
||||
static char shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
|
||||
|
||||
static int body();
|
||||
static int des_set___key();
|
||||
|
||||
static int des_set___key(key,schedule)
|
||||
des_cblock *key;
|
||||
des_key_schedule schedule;
|
||||
{
|
||||
register unsigned long c,d,t,s;
|
||||
register unsigned char *in;
|
||||
register unsigned long *k;
|
||||
register int i;
|
||||
|
||||
k=(unsigned long *)schedule;
|
||||
in=(unsigned char *)key;
|
||||
|
||||
c2l(in,c);
|
||||
c2l(in,d);
|
||||
|
||||
/* I now do it in 47 simple operations :-)
|
||||
* Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
|
||||
* for the inspiration. :-) */
|
||||
PERM_OP (d,c,t,4,0x0f0f0f0f);
|
||||
HPERM_OP(c,t,-2,0xcccc0000);
|
||||
HPERM_OP(d,t,-2,0xcccc0000);
|
||||
PERM_OP (d,c,t,1,0x55555555);
|
||||
PERM_OP (c,d,t,8,0x00ff00ff);
|
||||
PERM_OP (d,c,t,1,0x55555555);
|
||||
d= (((d&0x000000ff)<<16)| (d&0x0000ff00) |
|
||||
((d&0x00ff0000)>>16)|((c&0xf0000000)>>4));
|
||||
c&=0x0fffffff;
|
||||
|
||||
for (i=0; i<ITERATIONS; i++)
|
||||
{
|
||||
if (shifts2[i])
|
||||
{ c=((c>>2)|(c<<26)); d=((d>>2)|(d<<26)); }
|
||||
else
|
||||
{ c=((c>>1)|(c<<27)); d=((d>>1)|(d<<27)); }
|
||||
c&=0x0fffffff;
|
||||
d&=0x0fffffff;
|
||||
/* could be a few less shifts but I am to lazy at this
|
||||
* point in time to investigate */
|
||||
s= skb[0][ (c )&0x3f ]|
|
||||
skb[1][((c>> 6)&0x03)|((c>> 7)&0x3c)]|
|
||||
skb[2][((c>>13)&0x0f)|((c>>14)&0x30)]|
|
||||
skb[3][((c>>20)&0x01)|((c>>21)&0x06) |
|
||||
((c>>22)&0x38)];
|
||||
t= skb[4][ (d )&0x3f ]|
|
||||
skb[5][((d>> 7)&0x03)|((d>> 8)&0x3c)]|
|
||||
skb[6][ (d>>15)&0x3f ]|
|
||||
skb[7][((d>>21)&0x0f)|((d>>22)&0x30)];
|
||||
|
||||
/* table contained 0213 4657 */
|
||||
*(k++)=((t<<16)|(s&0x0000ffff))&0xffffffff;
|
||||
s= ((s>>16)|(t&0xffff0000));
|
||||
|
||||
s=(s<<4)|(s>>28);
|
||||
*(k++)=s&0xffffffff;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
* modified stuff for crypt.
|
||||
******************************************************************/
|
||||
|
||||
/* The changes to this macro may help or hinder, depending on the
|
||||
* compiler and the achitecture. gcc2 always seems to do well :-).
|
||||
* Inspired by Dana How <how@isl.stanford.edu>
|
||||
* DO NOT use the alternative version on machines with 8 byte longs.
|
||||
*/
|
||||
#ifdef ALT_ECB
|
||||
#define D_ENCRYPT(L,R,S) \
|
||||
v=(R^(R>>16)); \
|
||||
u=(v&E0); \
|
||||
v=(v&E1); \
|
||||
u=((u^(u<<16))^R^s[S ])<<2; \
|
||||
t=(v^(v<<16))^R^s[S+1]; \
|
||||
t=(t>>2)|(t<<30); \
|
||||
L^= \
|
||||
*(unsigned long *)(des_SP+0x0100+((t )&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0300+((t>> 8)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0500+((t>>16)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0700+((t>>24)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+ ((u )&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0200+((u>> 8)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0400+((u>>16)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0600+((u>>24)&0xfc));
|
||||
#else /* original version */
|
||||
#define D_ENCRYPT(L,R,S) \
|
||||
v=(R^(R>>16)); \
|
||||
u=(v&E0); \
|
||||
v=(v&E1); \
|
||||
u=(u^(u<<16))^R^s[S ]; \
|
||||
t=(v^(v<<16))^R^s[S+1]; \
|
||||
t=(t>>4)|(t<<28); \
|
||||
L^= SPtrans[1][(t )&0x3f]| \
|
||||
SPtrans[3][(t>> 8)&0x3f]| \
|
||||
SPtrans[5][(t>>16)&0x3f]| \
|
||||
SPtrans[7][(t>>24)&0x3f]| \
|
||||
SPtrans[0][(u )&0x3f]| \
|
||||
SPtrans[2][(u>> 8)&0x3f]| \
|
||||
SPtrans[4][(u>>16)&0x3f]| \
|
||||
SPtrans[6][(u>>24)&0x3f];
|
||||
#endif
|
||||
|
||||
unsigned char con_salt[128]={
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
|
||||
0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
|
||||
0x0A,0x0B,0x05,0x06,0x07,0x08,0x09,0x0A,
|
||||
0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,
|
||||
0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,
|
||||
0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,
|
||||
0x23,0x24,0x25,0x20,0x21,0x22,0x23,0x24,
|
||||
0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,
|
||||
0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,
|
||||
0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
|
||||
0x3D,0x3E,0x3F,0x00,0x00,0x00,0x00,0x00,
|
||||
};
|
||||
|
||||
unsigned char cov_2char[64]={
|
||||
0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,
|
||||
0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,
|
||||
0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,
|
||||
0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,
|
||||
0x55,0x56,0x57,0x58,0x59,0x5A,0x61,0x62,
|
||||
0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,
|
||||
0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,
|
||||
0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A
|
||||
};
|
||||
|
||||
char *crypt(buf,salt)
|
||||
char *buf;
|
||||
char *salt;
|
||||
{
|
||||
unsigned int i,j,x,y;
|
||||
unsigned long Eswap0=0,Eswap1=0;
|
||||
unsigned long out[2],ll;
|
||||
des_cblock key;
|
||||
des_key_schedule ks;
|
||||
static unsigned char buff[20];
|
||||
unsigned char bb[9];
|
||||
unsigned char *b=bb;
|
||||
unsigned char c,u;
|
||||
|
||||
/* eay 25/08/92
|
||||
* If you call crypt("pwd","*") as often happens when you
|
||||
* have * as the pwd field in /etc/passwd, the function
|
||||
* returns *\0XXXXXXXXX
|
||||
* The \0 makes the string look like * so the pwd "*" would
|
||||
* crypt to "*". This was found when replacing the crypt in
|
||||
* our shared libraries. People found that the disbled
|
||||
* accounts effectivly had no passwd :-(. */
|
||||
if (salt[0] == '\0') salt[0]='A';
|
||||
if (salt[1] == '\0') salt[1]='A';
|
||||
x=buff[0]=salt[0];
|
||||
Eswap0=con_salt[x];
|
||||
x=buff[1]=salt[1];
|
||||
Eswap1=con_salt[x]<<4;
|
||||
|
||||
for (i=0; i<8; i++)
|
||||
{
|
||||
c= *(buf++);
|
||||
if (!c) break;
|
||||
key[i]=(c<<1);
|
||||
}
|
||||
for (; i<8; i++)
|
||||
key[i]=0;
|
||||
|
||||
des_set___key((des_cblock *)(key),ks);
|
||||
body(&out[0],&out[1],ks,Eswap0,Eswap1);
|
||||
|
||||
ll=out[0]; l2c(ll,b);
|
||||
ll=out[1]; l2c(ll,b);
|
||||
y=0;
|
||||
u=0x80;
|
||||
bb[8]=0;
|
||||
for (i=2; i<13; i++)
|
||||
{
|
||||
c=0;
|
||||
for (j=0; j<6; j++)
|
||||
{
|
||||
c<<=1;
|
||||
if (bb[y] & u) c|=1;
|
||||
u>>=1;
|
||||
if (!u)
|
||||
{
|
||||
y++;
|
||||
u=0x80;
|
||||
}
|
||||
}
|
||||
buff[i]=cov_2char[c];
|
||||
}
|
||||
return((char *)buff);
|
||||
}
|
||||
|
||||
static int body(out0,out1,ks,Eswap0,Eswap1)
|
||||
unsigned long *out0,*out1;
|
||||
des_key_schedule *ks;
|
||||
unsigned long Eswap0,Eswap1;
|
||||
{
|
||||
register unsigned long l,r,t,u,v;
|
||||
#ifdef ALT_ECB
|
||||
register unsigned char *des_SP=(unsigned char *)SPtrans;
|
||||
#endif
|
||||
register unsigned long *s;
|
||||
register int i,j;
|
||||
register unsigned long E0,E1;
|
||||
|
||||
l=0;
|
||||
r=0;
|
||||
|
||||
s=(unsigned long *)ks;
|
||||
E0=Eswap0;
|
||||
E1=Eswap1;
|
||||
|
||||
for (j=0; j<25; j++)
|
||||
{
|
||||
for (i=0; i<(ITERATIONS*2); i+=4)
|
||||
{
|
||||
D_ENCRYPT(l,r, i); /* 1 */
|
||||
D_ENCRYPT(r,l, i+2); /* 2 */
|
||||
}
|
||||
t=l;
|
||||
l=r;
|
||||
r=t;
|
||||
}
|
||||
t=r;
|
||||
r=(l>>1)|(l<<31);
|
||||
l=(t>>1)|(t<<31);
|
||||
/* clear the top bits on machines with 8byte longs */
|
||||
l&=0xffffffff;
|
||||
r&=0xffffffff;
|
||||
|
||||
PERM_OP(r,l,t, 1,0x55555555);
|
||||
PERM_OP(l,r,t, 8,0x00ff00ff);
|
||||
PERM_OP(r,l,t, 2,0x33333333);
|
||||
PERM_OP(l,r,t,16,0x0000ffff);
|
||||
PERM_OP(r,l,t, 4,0x0f0f0f0f);
|
||||
|
||||
*out0=l;
|
||||
*out1=r;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,186 +0,0 @@
|
||||
/* des_locl.h */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: des_locl.h,v 1.2 1994/07/19 19:22:18 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "des.h"
|
||||
|
||||
#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
|
||||
#include <string.h>
|
||||
#define bcopy(b1,b2,len) memcpy(b2, b1, (size_t)(len))
|
||||
#define bzero(b,len) memset(b, 0, (size_t)(len))
|
||||
#define bcmp(b1,b2,len) memcmp(b1, b2, (size_t)(len))
|
||||
#define index(s1,char) strchr(s1,char)
|
||||
#endif
|
||||
|
||||
#ifdef MSDOS
|
||||
#define getpid() 2
|
||||
#define RAND
|
||||
extern int errno;
|
||||
#define PROTO
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
#define PROTO
|
||||
#endif
|
||||
|
||||
#ifdef RAND
|
||||
#define random() rand()
|
||||
#define srandom(s) srand(s)
|
||||
#endif
|
||||
|
||||
#define ITERATIONS 16
|
||||
#define HALF_ITERATIONS 8
|
||||
|
||||
/* used in des_read and des_write */
|
||||
#define MAXWRITE (1024*16)
|
||||
#define BSIZE (MAXWRITE+4)
|
||||
|
||||
#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
|
||||
l|=((unsigned long)(*((c)++)))<< 8, \
|
||||
l|=((unsigned long)(*((c)++)))<<16, \
|
||||
l|=((unsigned long)(*((c)++)))<<24)
|
||||
|
||||
/* NOTE - c is not incremented as per c2l */
|
||||
#define c2ln(c,l1,l2,n) { \
|
||||
c+=n; \
|
||||
l1=l2=0; \
|
||||
switch (n) { \
|
||||
case 8: l2|=((unsigned long)(*(--(c))))<<24; \
|
||||
case 7: l2|=((unsigned long)(*(--(c))))<<16; \
|
||||
case 6: l2|=((unsigned long)(*(--(c))))<< 8; \
|
||||
case 5: l2|=((unsigned long)(*(--(c)))); \
|
||||
case 4: l1|=((unsigned long)(*(--(c))))<<24; \
|
||||
case 3: l1|=((unsigned long)(*(--(c))))<<16; \
|
||||
case 2: l1|=((unsigned long)(*(--(c))))<< 8; \
|
||||
case 1: l1|=((unsigned long)(*(--(c)))); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>> 8)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>16)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>24)&0xff))
|
||||
|
||||
/* replacements for htonl and ntohl since I have no idea what to do
|
||||
* when faced with machines with 8 byte longs. */
|
||||
#define HDRSIZE 4
|
||||
|
||||
#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \
|
||||
l|=((unsigned long)(*((c)++)))<<16, \
|
||||
l|=((unsigned long)(*((c)++)))<< 8, \
|
||||
l|=((unsigned long)(*((c)++))))
|
||||
|
||||
#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>16)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>> 8)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l) )&0xff))
|
||||
|
||||
/* NOTE - c is not incremented as per l2c */
|
||||
#define l2cn(l1,l2,c,n) { \
|
||||
c+=n; \
|
||||
switch (n) { \
|
||||
case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
|
||||
case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
|
||||
case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
|
||||
case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
|
||||
case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
|
||||
case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
|
||||
case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
|
||||
case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
|
||||
} \
|
||||
}
|
||||
|
||||
/* The changes to this macro may help or hinder, depending on the
|
||||
* compiler and the achitecture. gcc2 always seems to do well :-).
|
||||
* Inspired by Dana How <how@isl.stanford.edu>
|
||||
* DO NOT use the alternative version on machines with 8 byte longs. */
|
||||
#ifdef ALT_ECB
|
||||
#define D_ENCRYPT(L,R,S) \
|
||||
u=((R^s[S ])<<2); \
|
||||
t= R^s[S+1]; \
|
||||
t=((t>>2)+(t<<30)); \
|
||||
L^= \
|
||||
*(unsigned long *)(des_SP+0x0100+((t )&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0300+((t>> 8)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0500+((t>>16)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0700+((t>>24)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+ ((u )&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0200+((u>> 8)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0400+((u>>16)&0xfc))+ \
|
||||
*(unsigned long *)(des_SP+0x0600+((u>>24)&0xfc));
|
||||
#else /* original version */
|
||||
#ifdef MSDOS
|
||||
#define D_ENCRYPT(L,R,S) \
|
||||
U.l=R^s[S+1]; \
|
||||
T.s[0]=((U.s[0]>>4)|(U.s[1]<<12))&0x3f3f; \
|
||||
T.s[1]=((U.s[1]>>4)|(U.s[0]<<12))&0x3f3f; \
|
||||
U.l=(R^s[S ])&0x3f3f3f3f; \
|
||||
L^= des_SPtrans[1][(T.c[0])]| \
|
||||
des_SPtrans[3][(T.c[1])]| \
|
||||
des_SPtrans[5][(T.c[2])]| \
|
||||
des_SPtrans[7][(T.c[3])]| \
|
||||
des_SPtrans[0][(U.c[0])]| \
|
||||
des_SPtrans[2][(U.c[1])]| \
|
||||
des_SPtrans[4][(U.c[2])]| \
|
||||
des_SPtrans[6][(U.c[3])];
|
||||
#else
|
||||
#define D_ENCRYPT(L,R,S) \
|
||||
u=(R^s[S ]); \
|
||||
t=R^s[S+1]; \
|
||||
t=((t>>4)+(t<<28)); \
|
||||
L^= des_SPtrans[1][(t )&0x3f]| \
|
||||
des_SPtrans[3][(t>> 8)&0x3f]| \
|
||||
des_SPtrans[5][(t>>16)&0x3f]| \
|
||||
des_SPtrans[7][(t>>24)&0x3f]| \
|
||||
des_SPtrans[0][(u )&0x3f]| \
|
||||
des_SPtrans[2][(u>> 8)&0x3f]| \
|
||||
des_SPtrans[4][(u>>16)&0x3f]| \
|
||||
des_SPtrans[6][(u>>24)&0x3f];
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* IP and FP
|
||||
* The problem is more of a geometric problem that random bit fiddling.
|
||||
0 1 2 3 4 5 6 7 62 54 46 38 30 22 14 6
|
||||
8 9 10 11 12 13 14 15 60 52 44 36 28 20 12 4
|
||||
16 17 18 19 20 21 22 23 58 50 42 34 26 18 10 2
|
||||
24 25 26 27 28 29 30 31 to 56 48 40 32 24 16 8 0
|
||||
|
||||
32 33 34 35 36 37 38 39 63 55 47 39 31 23 15 7
|
||||
40 41 42 43 44 45 46 47 61 53 45 37 29 21 13 5
|
||||
48 49 50 51 52 53 54 55 59 51 43 35 27 19 11 3
|
||||
56 57 58 59 60 61 62 63 57 49 41 33 25 17 9 1
|
||||
|
||||
The output has been subject to swaps of the form
|
||||
0 1 -> 3 1 but the odd and even bits have been put into
|
||||
2 3 2 0
|
||||
different words. The main trick is to remember that
|
||||
t=((l>>size)^r)&(mask);
|
||||
r^=t;
|
||||
l^=(t<<size);
|
||||
can be used to swap and move bits between words.
|
||||
|
||||
So l = 0 1 2 3 r = 16 17 18 19
|
||||
4 5 6 7 20 21 22 23
|
||||
8 9 10 11 24 25 26 27
|
||||
12 13 14 15 28 29 30 31
|
||||
becomes (for size == 2 and mask == 0x3333)
|
||||
t = 2^16 3^17 -- -- l = 0 1 16 17 r = 2 3 18 19
|
||||
6^20 7^21 -- -- 4 5 20 21 6 7 22 23
|
||||
10^24 11^25 -- -- 8 9 24 25 10 11 24 25
|
||||
14^28 15^29 -- -- 12 13 28 29 14 15 28 29
|
||||
|
||||
Thanks for hints from Richard Outerbridge - he told me IP&FP
|
||||
could be done in 15 xor, 10 shifts and 5 ands.
|
||||
When I finally started to think of the problem in 2D
|
||||
I first got ~42 operations without xors. When I remembered
|
||||
how to use xors :-) I got it to its final state.
|
||||
*/
|
||||
#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
|
||||
(b)^=(t),\
|
||||
(a)^=((t)<<(n)))
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
/* podd.h */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: podd.h,v 1.2 1994/07/19 19:22:20 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
static unsigned char odd_parity[256]={
|
||||
1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
|
||||
16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
|
||||
32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
|
||||
49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
|
||||
64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
|
||||
81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
|
||||
97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
|
||||
112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
|
||||
128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
|
||||
145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
|
||||
161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
|
||||
176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
|
||||
193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
|
||||
208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
|
||||
224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
|
||||
241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254};
|
||||
@@ -1,145 +0,0 @@
|
||||
/* sk.h */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: sk.h,v 1.2 1994/07/19 19:22:22 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
static unsigned long des_skb[8][64]={
|
||||
/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
|
||||
0x00000000,0x00000010,0x20000000,0x20000010,
|
||||
0x00010000,0x00010010,0x20010000,0x20010010,
|
||||
0x00000800,0x00000810,0x20000800,0x20000810,
|
||||
0x00010800,0x00010810,0x20010800,0x20010810,
|
||||
0x00000020,0x00000030,0x20000020,0x20000030,
|
||||
0x00010020,0x00010030,0x20010020,0x20010030,
|
||||
0x00000820,0x00000830,0x20000820,0x20000830,
|
||||
0x00010820,0x00010830,0x20010820,0x20010830,
|
||||
0x00080000,0x00080010,0x20080000,0x20080010,
|
||||
0x00090000,0x00090010,0x20090000,0x20090010,
|
||||
0x00080800,0x00080810,0x20080800,0x20080810,
|
||||
0x00090800,0x00090810,0x20090800,0x20090810,
|
||||
0x00080020,0x00080030,0x20080020,0x20080030,
|
||||
0x00090020,0x00090030,0x20090020,0x20090030,
|
||||
0x00080820,0x00080830,0x20080820,0x20080830,
|
||||
0x00090820,0x00090830,0x20090820,0x20090830,
|
||||
/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
|
||||
0x00000000,0x02000000,0x00002000,0x02002000,
|
||||
0x00200000,0x02200000,0x00202000,0x02202000,
|
||||
0x00000004,0x02000004,0x00002004,0x02002004,
|
||||
0x00200004,0x02200004,0x00202004,0x02202004,
|
||||
0x00000400,0x02000400,0x00002400,0x02002400,
|
||||
0x00200400,0x02200400,0x00202400,0x02202400,
|
||||
0x00000404,0x02000404,0x00002404,0x02002404,
|
||||
0x00200404,0x02200404,0x00202404,0x02202404,
|
||||
0x10000000,0x12000000,0x10002000,0x12002000,
|
||||
0x10200000,0x12200000,0x10202000,0x12202000,
|
||||
0x10000004,0x12000004,0x10002004,0x12002004,
|
||||
0x10200004,0x12200004,0x10202004,0x12202004,
|
||||
0x10000400,0x12000400,0x10002400,0x12002400,
|
||||
0x10200400,0x12200400,0x10202400,0x12202400,
|
||||
0x10000404,0x12000404,0x10002404,0x12002404,
|
||||
0x10200404,0x12200404,0x10202404,0x12202404,
|
||||
/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
|
||||
0x00000000,0x00000001,0x00040000,0x00040001,
|
||||
0x01000000,0x01000001,0x01040000,0x01040001,
|
||||
0x00000002,0x00000003,0x00040002,0x00040003,
|
||||
0x01000002,0x01000003,0x01040002,0x01040003,
|
||||
0x00000200,0x00000201,0x00040200,0x00040201,
|
||||
0x01000200,0x01000201,0x01040200,0x01040201,
|
||||
0x00000202,0x00000203,0x00040202,0x00040203,
|
||||
0x01000202,0x01000203,0x01040202,0x01040203,
|
||||
0x08000000,0x08000001,0x08040000,0x08040001,
|
||||
0x09000000,0x09000001,0x09040000,0x09040001,
|
||||
0x08000002,0x08000003,0x08040002,0x08040003,
|
||||
0x09000002,0x09000003,0x09040002,0x09040003,
|
||||
0x08000200,0x08000201,0x08040200,0x08040201,
|
||||
0x09000200,0x09000201,0x09040200,0x09040201,
|
||||
0x08000202,0x08000203,0x08040202,0x08040203,
|
||||
0x09000202,0x09000203,0x09040202,0x09040203,
|
||||
/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
|
||||
0x00000000,0x00100000,0x00000100,0x00100100,
|
||||
0x00000008,0x00100008,0x00000108,0x00100108,
|
||||
0x00001000,0x00101000,0x00001100,0x00101100,
|
||||
0x00001008,0x00101008,0x00001108,0x00101108,
|
||||
0x04000000,0x04100000,0x04000100,0x04100100,
|
||||
0x04000008,0x04100008,0x04000108,0x04100108,
|
||||
0x04001000,0x04101000,0x04001100,0x04101100,
|
||||
0x04001008,0x04101008,0x04001108,0x04101108,
|
||||
0x00020000,0x00120000,0x00020100,0x00120100,
|
||||
0x00020008,0x00120008,0x00020108,0x00120108,
|
||||
0x00021000,0x00121000,0x00021100,0x00121100,
|
||||
0x00021008,0x00121008,0x00021108,0x00121108,
|
||||
0x04020000,0x04120000,0x04020100,0x04120100,
|
||||
0x04020008,0x04120008,0x04020108,0x04120108,
|
||||
0x04021000,0x04121000,0x04021100,0x04121100,
|
||||
0x04021008,0x04121008,0x04021108,0x04121108,
|
||||
/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
|
||||
0x00000000,0x10000000,0x00010000,0x10010000,
|
||||
0x00000004,0x10000004,0x00010004,0x10010004,
|
||||
0x20000000,0x30000000,0x20010000,0x30010000,
|
||||
0x20000004,0x30000004,0x20010004,0x30010004,
|
||||
0x00100000,0x10100000,0x00110000,0x10110000,
|
||||
0x00100004,0x10100004,0x00110004,0x10110004,
|
||||
0x20100000,0x30100000,0x20110000,0x30110000,
|
||||
0x20100004,0x30100004,0x20110004,0x30110004,
|
||||
0x00001000,0x10001000,0x00011000,0x10011000,
|
||||
0x00001004,0x10001004,0x00011004,0x10011004,
|
||||
0x20001000,0x30001000,0x20011000,0x30011000,
|
||||
0x20001004,0x30001004,0x20011004,0x30011004,
|
||||
0x00101000,0x10101000,0x00111000,0x10111000,
|
||||
0x00101004,0x10101004,0x00111004,0x10111004,
|
||||
0x20101000,0x30101000,0x20111000,0x30111000,
|
||||
0x20101004,0x30101004,0x20111004,0x30111004,
|
||||
/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
|
||||
0x00000000,0x08000000,0x00000008,0x08000008,
|
||||
0x00000400,0x08000400,0x00000408,0x08000408,
|
||||
0x00020000,0x08020000,0x00020008,0x08020008,
|
||||
0x00020400,0x08020400,0x00020408,0x08020408,
|
||||
0x00000001,0x08000001,0x00000009,0x08000009,
|
||||
0x00000401,0x08000401,0x00000409,0x08000409,
|
||||
0x00020001,0x08020001,0x00020009,0x08020009,
|
||||
0x00020401,0x08020401,0x00020409,0x08020409,
|
||||
0x02000000,0x0A000000,0x02000008,0x0A000008,
|
||||
0x02000400,0x0A000400,0x02000408,0x0A000408,
|
||||
0x02020000,0x0A020000,0x02020008,0x0A020008,
|
||||
0x02020400,0x0A020400,0x02020408,0x0A020408,
|
||||
0x02000001,0x0A000001,0x02000009,0x0A000009,
|
||||
0x02000401,0x0A000401,0x02000409,0x0A000409,
|
||||
0x02020001,0x0A020001,0x02020009,0x0A020009,
|
||||
0x02020401,0x0A020401,0x02020409,0x0A020409,
|
||||
/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
|
||||
0x00000000,0x00000100,0x00080000,0x00080100,
|
||||
0x01000000,0x01000100,0x01080000,0x01080100,
|
||||
0x00000010,0x00000110,0x00080010,0x00080110,
|
||||
0x01000010,0x01000110,0x01080010,0x01080110,
|
||||
0x00200000,0x00200100,0x00280000,0x00280100,
|
||||
0x01200000,0x01200100,0x01280000,0x01280100,
|
||||
0x00200010,0x00200110,0x00280010,0x00280110,
|
||||
0x01200010,0x01200110,0x01280010,0x01280110,
|
||||
0x00000200,0x00000300,0x00080200,0x00080300,
|
||||
0x01000200,0x01000300,0x01080200,0x01080300,
|
||||
0x00000210,0x00000310,0x00080210,0x00080310,
|
||||
0x01000210,0x01000310,0x01080210,0x01080310,
|
||||
0x00200200,0x00200300,0x00280200,0x00280300,
|
||||
0x01200200,0x01200300,0x01280200,0x01280300,
|
||||
0x00200210,0x00200310,0x00280210,0x00280310,
|
||||
0x01200210,0x01200310,0x01280210,0x01280310,
|
||||
/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
|
||||
0x00000000,0x04000000,0x00040000,0x04040000,
|
||||
0x00000002,0x04000002,0x00040002,0x04040002,
|
||||
0x00002000,0x04002000,0x00042000,0x04042000,
|
||||
0x00002002,0x04002002,0x00042002,0x04042002,
|
||||
0x00000020,0x04000020,0x00040020,0x04040020,
|
||||
0x00000022,0x04000022,0x00040022,0x04040022,
|
||||
0x00002020,0x04002020,0x00042020,0x04042020,
|
||||
0x00002022,0x04002022,0x00042022,0x04042022,
|
||||
0x00000800,0x04000800,0x00040800,0x04040800,
|
||||
0x00000802,0x04000802,0x00040802,0x04040802,
|
||||
0x00002800,0x04002800,0x00042800,0x04042800,
|
||||
0x00002802,0x04002802,0x00042802,0x04042802,
|
||||
0x00000820,0x04000820,0x00040820,0x04040820,
|
||||
0x00000822,0x04000822,0x00040822,0x04040822,
|
||||
0x00002820,0x04002820,0x00042820,0x04042820,
|
||||
0x00002822,0x04002822,0x00042822,0x04042822,
|
||||
};
|
||||
@@ -1,151 +0,0 @@
|
||||
/* spr.h */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: spr.h,v 1.2 1994/07/19 19:22:23 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
static unsigned long des_SPtrans[8][64]={
|
||||
/* nibble 0 */
|
||||
0x00820200, 0x00020000, 0x80800000, 0x80820200,
|
||||
0x00800000, 0x80020200, 0x80020000, 0x80800000,
|
||||
0x80020200, 0x00820200, 0x00820000, 0x80000200,
|
||||
0x80800200, 0x00800000, 0x00000000, 0x80020000,
|
||||
0x00020000, 0x80000000, 0x00800200, 0x00020200,
|
||||
0x80820200, 0x00820000, 0x80000200, 0x00800200,
|
||||
0x80000000, 0x00000200, 0x00020200, 0x80820000,
|
||||
0x00000200, 0x80800200, 0x80820000, 0x00000000,
|
||||
0x00000000, 0x80820200, 0x00800200, 0x80020000,
|
||||
0x00820200, 0x00020000, 0x80000200, 0x00800200,
|
||||
0x80820000, 0x00000200, 0x00020200, 0x80800000,
|
||||
0x80020200, 0x80000000, 0x80800000, 0x00820000,
|
||||
0x80820200, 0x00020200, 0x00820000, 0x80800200,
|
||||
0x00800000, 0x80000200, 0x80020000, 0x00000000,
|
||||
0x00020000, 0x00800000, 0x80800200, 0x00820200,
|
||||
0x80000000, 0x80820000, 0x00000200, 0x80020200,
|
||||
|
||||
/* nibble 1 */
|
||||
0x10042004, 0x00000000, 0x00042000, 0x10040000,
|
||||
0x10000004, 0x00002004, 0x10002000, 0x00042000,
|
||||
0x00002000, 0x10040004, 0x00000004, 0x10002000,
|
||||
0x00040004, 0x10042000, 0x10040000, 0x00000004,
|
||||
0x00040000, 0x10002004, 0x10040004, 0x00002000,
|
||||
0x00042004, 0x10000000, 0x00000000, 0x00040004,
|
||||
0x10002004, 0x00042004, 0x10042000, 0x10000004,
|
||||
0x10000000, 0x00040000, 0x00002004, 0x10042004,
|
||||
0x00040004, 0x10042000, 0x10002000, 0x00042004,
|
||||
0x10042004, 0x00040004, 0x10000004, 0x00000000,
|
||||
0x10000000, 0x00002004, 0x00040000, 0x10040004,
|
||||
0x00002000, 0x10000000, 0x00042004, 0x10002004,
|
||||
0x10042000, 0x00002000, 0x00000000, 0x10000004,
|
||||
0x00000004, 0x10042004, 0x00042000, 0x10040000,
|
||||
0x10040004, 0x00040000, 0x00002004, 0x10002000,
|
||||
0x10002004, 0x00000004, 0x10040000, 0x00042000,
|
||||
|
||||
/* nibble 2 */
|
||||
0x41000000, 0x01010040, 0x00000040, 0x41000040,
|
||||
0x40010000, 0x01000000, 0x41000040, 0x00010040,
|
||||
0x01000040, 0x00010000, 0x01010000, 0x40000000,
|
||||
0x41010040, 0x40000040, 0x40000000, 0x41010000,
|
||||
0x00000000, 0x40010000, 0x01010040, 0x00000040,
|
||||
0x40000040, 0x41010040, 0x00010000, 0x41000000,
|
||||
0x41010000, 0x01000040, 0x40010040, 0x01010000,
|
||||
0x00010040, 0x00000000, 0x01000000, 0x40010040,
|
||||
0x01010040, 0x00000040, 0x40000000, 0x00010000,
|
||||
0x40000040, 0x40010000, 0x01010000, 0x41000040,
|
||||
0x00000000, 0x01010040, 0x00010040, 0x41010000,
|
||||
0x40010000, 0x01000000, 0x41010040, 0x40000000,
|
||||
0x40010040, 0x41000000, 0x01000000, 0x41010040,
|
||||
0x00010000, 0x01000040, 0x41000040, 0x00010040,
|
||||
0x01000040, 0x00000000, 0x41010000, 0x40000040,
|
||||
0x41000000, 0x40010040, 0x00000040, 0x01010000,
|
||||
|
||||
/* nibble 3 */
|
||||
0x00100402, 0x04000400, 0x00000002, 0x04100402,
|
||||
0x00000000, 0x04100000, 0x04000402, 0x00100002,
|
||||
0x04100400, 0x04000002, 0x04000000, 0x00000402,
|
||||
0x04000002, 0x00100402, 0x00100000, 0x04000000,
|
||||
0x04100002, 0x00100400, 0x00000400, 0x00000002,
|
||||
0x00100400, 0x04000402, 0x04100000, 0x00000400,
|
||||
0x00000402, 0x00000000, 0x00100002, 0x04100400,
|
||||
0x04000400, 0x04100002, 0x04100402, 0x00100000,
|
||||
0x04100002, 0x00000402, 0x00100000, 0x04000002,
|
||||
0x00100400, 0x04000400, 0x00000002, 0x04100000,
|
||||
0x04000402, 0x00000000, 0x00000400, 0x00100002,
|
||||
0x00000000, 0x04100002, 0x04100400, 0x00000400,
|
||||
0x04000000, 0x04100402, 0x00100402, 0x00100000,
|
||||
0x04100402, 0x00000002, 0x04000400, 0x00100402,
|
||||
0x00100002, 0x00100400, 0x04100000, 0x04000402,
|
||||
0x00000402, 0x04000000, 0x04000002, 0x04100400,
|
||||
|
||||
/* nibble 4 */
|
||||
0x02000000, 0x00004000, 0x00000100, 0x02004108,
|
||||
0x02004008, 0x02000100, 0x00004108, 0x02004000,
|
||||
0x00004000, 0x00000008, 0x02000008, 0x00004100,
|
||||
0x02000108, 0x02004008, 0x02004100, 0x00000000,
|
||||
0x00004100, 0x02000000, 0x00004008, 0x00000108,
|
||||
0x02000100, 0x00004108, 0x00000000, 0x02000008,
|
||||
0x00000008, 0x02000108, 0x02004108, 0x00004008,
|
||||
0x02004000, 0x00000100, 0x00000108, 0x02004100,
|
||||
0x02004100, 0x02000108, 0x00004008, 0x02004000,
|
||||
0x00004000, 0x00000008, 0x02000008, 0x02000100,
|
||||
0x02000000, 0x00004100, 0x02004108, 0x00000000,
|
||||
0x00004108, 0x02000000, 0x00000100, 0x00004008,
|
||||
0x02000108, 0x00000100, 0x00000000, 0x02004108,
|
||||
0x02004008, 0x02004100, 0x00000108, 0x00004000,
|
||||
0x00004100, 0x02004008, 0x02000100, 0x00000108,
|
||||
0x00000008, 0x00004108, 0x02004000, 0x02000008,
|
||||
|
||||
/* nibble 5 */
|
||||
0x20000010, 0x00080010, 0x00000000, 0x20080800,
|
||||
0x00080010, 0x00000800, 0x20000810, 0x00080000,
|
||||
0x00000810, 0x20080810, 0x00080800, 0x20000000,
|
||||
0x20000800, 0x20000010, 0x20080000, 0x00080810,
|
||||
0x00080000, 0x20000810, 0x20080010, 0x00000000,
|
||||
0x00000800, 0x00000010, 0x20080800, 0x20080010,
|
||||
0x20080810, 0x20080000, 0x20000000, 0x00000810,
|
||||
0x00000010, 0x00080800, 0x00080810, 0x20000800,
|
||||
0x00000810, 0x20000000, 0x20000800, 0x00080810,
|
||||
0x20080800, 0x00080010, 0x00000000, 0x20000800,
|
||||
0x20000000, 0x00000800, 0x20080010, 0x00080000,
|
||||
0x00080010, 0x20080810, 0x00080800, 0x00000010,
|
||||
0x20080810, 0x00080800, 0x00080000, 0x20000810,
|
||||
0x20000010, 0x20080000, 0x00080810, 0x00000000,
|
||||
0x00000800, 0x20000010, 0x20000810, 0x20080800,
|
||||
0x20080000, 0x00000810, 0x00000010, 0x20080010,
|
||||
|
||||
/* nibble 6 */
|
||||
0x00001000, 0x00000080, 0x00400080, 0x00400001,
|
||||
0x00401081, 0x00001001, 0x00001080, 0x00000000,
|
||||
0x00400000, 0x00400081, 0x00000081, 0x00401000,
|
||||
0x00000001, 0x00401080, 0x00401000, 0x00000081,
|
||||
0x00400081, 0x00001000, 0x00001001, 0x00401081,
|
||||
0x00000000, 0x00400080, 0x00400001, 0x00001080,
|
||||
0x00401001, 0x00001081, 0x00401080, 0x00000001,
|
||||
0x00001081, 0x00401001, 0x00000080, 0x00400000,
|
||||
0x00001081, 0x00401000, 0x00401001, 0x00000081,
|
||||
0x00001000, 0x00000080, 0x00400000, 0x00401001,
|
||||
0x00400081, 0x00001081, 0x00001080, 0x00000000,
|
||||
0x00000080, 0x00400001, 0x00000001, 0x00400080,
|
||||
0x00000000, 0x00400081, 0x00400080, 0x00001080,
|
||||
0x00000081, 0x00001000, 0x00401081, 0x00400000,
|
||||
0x00401080, 0x00000001, 0x00001001, 0x00401081,
|
||||
0x00400001, 0x00401080, 0x00401000, 0x00001001,
|
||||
|
||||
/* nibble 7 */
|
||||
0x08200020, 0x08208000, 0x00008020, 0x00000000,
|
||||
0x08008000, 0x00200020, 0x08200000, 0x08208020,
|
||||
0x00000020, 0x08000000, 0x00208000, 0x00008020,
|
||||
0x00208020, 0x08008020, 0x08000020, 0x08200000,
|
||||
0x00008000, 0x00208020, 0x00200020, 0x08008000,
|
||||
0x08208020, 0x08000020, 0x00000000, 0x00208000,
|
||||
0x08000000, 0x00200000, 0x08008020, 0x08200020,
|
||||
0x00200000, 0x00008000, 0x08208000, 0x00000020,
|
||||
0x00200000, 0x00008000, 0x08000020, 0x08208020,
|
||||
0x00008020, 0x08000000, 0x00000000, 0x00208000,
|
||||
0x08200020, 0x08008020, 0x08008000, 0x00200020,
|
||||
0x08208000, 0x00000020, 0x00200020, 0x08008000,
|
||||
0x08208020, 0x00200000, 0x08200000, 0x08000020,
|
||||
0x00208000, 0x00008020, 0x08008020, 0x08200000,
|
||||
0x00000020, 0x08208000, 0x00208020, 0x00000000,
|
||||
0x08000000, 0x08200020, 0x00008000, 0x00208020};
|
||||
@@ -1,72 +0,0 @@
|
||||
/* ofb_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: ofb_enc.c,v 1.2 1994/07/19 19:21:59 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
/* The input and output are loaded in multiples of 8 bits.
|
||||
* What this means is that if you hame numbits=12 and length=2
|
||||
* the first 12 bits will be retrieved from the first byte and half
|
||||
* the second. The second 12 bits will come from the 3rd and half the 4th
|
||||
* byte.
|
||||
*/
|
||||
int des_ofb_encrypt(in,out,numbits,length,schedule,ivec)
|
||||
unsigned char *in,*out;
|
||||
int numbits;
|
||||
long length;
|
||||
des_key_schedule schedule;
|
||||
des_cblock *ivec;
|
||||
{
|
||||
register unsigned long d0,d1,v0,v1,n=(numbits+7)/8;
|
||||
register unsigned long mask0,mask1;
|
||||
register long l=length;
|
||||
register int num=numbits;
|
||||
unsigned long ti[2];
|
||||
unsigned char *iv;
|
||||
|
||||
if (num > 64) return(0);
|
||||
if (num > 32)
|
||||
{
|
||||
mask0=0xffffffff;
|
||||
if (num >= 64)
|
||||
mask1=mask0;
|
||||
else
|
||||
mask1=(1L<<(num-32))-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (num == 32)
|
||||
mask0=0xffffffff;
|
||||
else
|
||||
mask0=(1L<<num)-1;
|
||||
mask1=0x00000000;
|
||||
}
|
||||
|
||||
iv=(unsigned char *)ivec;
|
||||
c2l(iv,v0);
|
||||
c2l(iv,v1);
|
||||
ti[0]=v0;
|
||||
ti[1]=v1;
|
||||
while (l-- > 0)
|
||||
{
|
||||
des_encrypt((unsigned long *)ti,(unsigned long *)ti,
|
||||
schedule,DES_ENCRYPT);
|
||||
c2ln(in,d0,d1,n);
|
||||
in+=n;
|
||||
d0=(d0^ti[0])&mask0;
|
||||
d1=(d1^ti[1])&mask1;
|
||||
l2cn(d0,d1,out,n);
|
||||
out+=n;
|
||||
}
|
||||
v0=ti[0];
|
||||
v1=ti[1];
|
||||
iv=(unsigned char *)ivec;
|
||||
l2c(v0,iv);
|
||||
l2c(v1,iv);
|
||||
v0=v1=d0=d1=ti[0]=ti[1]=0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
/* pcbc_enc.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: pcbc_enc.c,v 1.2 1994/07/19 19:22:01 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
int des_pcbc_encrypt(input,output,length,schedule,ivec,encrypt)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
register long length;
|
||||
des_key_schedule schedule;
|
||||
des_cblock *ivec;
|
||||
int encrypt;
|
||||
{
|
||||
register unsigned long sin0,sin1,xor0,xor1,tout0,tout1;
|
||||
unsigned long tin[2],tout[2];
|
||||
unsigned char *in,*out,*iv;
|
||||
|
||||
in=(unsigned char *)input;
|
||||
out=(unsigned char *)output;
|
||||
iv=(unsigned char *)ivec;
|
||||
|
||||
if (encrypt)
|
||||
{
|
||||
c2l(iv,xor0);
|
||||
c2l(iv,xor1);
|
||||
for (; length>0; length-=8)
|
||||
{
|
||||
if (length >= 8)
|
||||
{
|
||||
c2l(in,sin0);
|
||||
c2l(in,sin1);
|
||||
}
|
||||
else
|
||||
c2ln(in,sin0,sin1,length);
|
||||
tin[0]=sin0^xor0;
|
||||
tin[1]=sin1^xor1;
|
||||
des_encrypt((unsigned long *)tin,(unsigned long *)tout,
|
||||
schedule,encrypt);
|
||||
tout0=tout[0];
|
||||
tout1=tout[1];
|
||||
xor0=sin0^tout[0];
|
||||
xor1=sin1^tout[1];
|
||||
l2c(tout0,out);
|
||||
l2c(tout1,out);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
c2l(iv,xor0); c2l(iv,xor1);
|
||||
for (; length>0; length-=8)
|
||||
{
|
||||
c2l(in,sin0);
|
||||
c2l(in,sin1);
|
||||
tin[0]=sin0;
|
||||
tin[1]=sin1;
|
||||
des_encrypt((unsigned long *)tin,(unsigned long *)tout,
|
||||
schedule,encrypt);
|
||||
tout0=tout[0]^xor0;
|
||||
tout1=tout[1]^xor1;
|
||||
if (length >= 8)
|
||||
{
|
||||
l2c(tout0,out);
|
||||
l2c(tout1,out);
|
||||
}
|
||||
else
|
||||
l2cn(tout0,tout1,out,length);
|
||||
xor0=tout0^sin0;
|
||||
xor1=tout1^sin1;
|
||||
}
|
||||
}
|
||||
tin[0]=tin[1]=tout[0]=tout[1]=0;
|
||||
sin0=sin1=xor0=xor1=tout0=tout1=0;
|
||||
return(0);
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
/* qud_cksm.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: qud_cksm.c,v 1.1.1.1 1994/09/30 14:49:51 csgr Exp $
|
||||
*/
|
||||
|
||||
/* From "Message Authentication" R.R. Jueneman, S.M. Matyas, C.H. Meyer
|
||||
* IEEE Communications Magazine Sept 1985 Vol. 23 No. 9 p 29-40
|
||||
* This module in only based on the code in this paper and is
|
||||
* almost definitely not the same as the MIT implementation.
|
||||
*/
|
||||
#include "des_locl.h"
|
||||
|
||||
/* bug fix for dos - 7/6/91 - Larry [email protected] */
|
||||
#define B0(a) (((unsigned long)(a)))
|
||||
#define B1(a) (((unsigned long)(a))<<8)
|
||||
#define B2(a) (((unsigned long)(a))<<16)
|
||||
#define B3(a) (((unsigned long)(a))<<24)
|
||||
|
||||
/* used to scramble things a bit */
|
||||
/* Got the value MIT uses via brute force :-) 2/10/90 eay */
|
||||
#define NOISE ((unsigned long)83653421)
|
||||
|
||||
unsigned long des_quad_cksum(input,output,length,out_count,seed)
|
||||
des_cblock *input;
|
||||
des_cblock *output;
|
||||
long length;
|
||||
int out_count;
|
||||
des_cblock *seed;
|
||||
{
|
||||
unsigned long z0,z1,t0,t1;
|
||||
int i;
|
||||
long l=0;
|
||||
unsigned char *cp;
|
||||
unsigned char *lp;
|
||||
|
||||
if (out_count < 1) out_count=1;
|
||||
lp=(unsigned char *)output;
|
||||
|
||||
z0=B0((*seed)[0])|B1((*seed)[1])|B2((*seed)[2])|B3((*seed)[3]);
|
||||
z1=B0((*seed)[4])|B1((*seed)[5])|B2((*seed)[6])|B3((*seed)[7]);
|
||||
|
||||
for (i=0; ((i<4)&&(i<out_count)); i++)
|
||||
{
|
||||
cp=(unsigned char *)input;
|
||||
l=length;
|
||||
while (l > 0)
|
||||
{
|
||||
if (l > 1)
|
||||
{
|
||||
t0= (unsigned long)(*(cp++));
|
||||
t0|=(unsigned long)B1(*(cp++));
|
||||
l--;
|
||||
}
|
||||
else
|
||||
t0= (unsigned long)(*(cp++));
|
||||
l--;
|
||||
/* add */
|
||||
t0+=z0;
|
||||
t0&=0xffffffff;
|
||||
t1=z1;
|
||||
/* square, well sort of square */
|
||||
z0=((((t0*t0)&0xffffffff)+((t1*t1)&0xffffffff))
|
||||
&0xffffffff)%0x7fffffff;
|
||||
z1=((t0*((t1+NOISE)&0xffffffff))&0xffffffff)%0x7fffffff;
|
||||
}
|
||||
if (lp != NULL)
|
||||
{
|
||||
/* I believe I finally have things worked out.
|
||||
* The MIT library assumes that the checksum
|
||||
* is one huge number and it is returned in a
|
||||
* host dependant byte order.
|
||||
*/
|
||||
static unsigned long l=1;
|
||||
static unsigned char *c=(unsigned char *)&l;
|
||||
|
||||
if (c[0])
|
||||
{
|
||||
l2c(z0,lp);
|
||||
l2c(z1,lp);
|
||||
}
|
||||
else
|
||||
{
|
||||
lp=output[out_count-i-1];
|
||||
l2n(z1,lp);
|
||||
l2n(z0,lp);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(z0);
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/* rand_key.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: rand_key.c,v 1.2 1995/05/09 18:05:15 wollman Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#include "des_locl.h"
|
||||
|
||||
int des_random_key(ret)
|
||||
des_cblock ret;
|
||||
{
|
||||
des_key_schedule ks;
|
||||
static unsigned long c=0;
|
||||
static unsigned short pid=0;
|
||||
static des_cblock data={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
|
||||
des_cblock key;
|
||||
unsigned char *p;
|
||||
unsigned long t;
|
||||
|
||||
#ifdef MSDOS
|
||||
pid=1;
|
||||
#else
|
||||
if (!pid) pid=getpid();
|
||||
#endif
|
||||
p=key;
|
||||
t=(unsigned long)time(NULL);
|
||||
l2c(t,p);
|
||||
t=(unsigned long)((pid)|((c++)<<16));
|
||||
l2c(t,p);
|
||||
|
||||
des_set_odd_parity((des_cblock *)data);
|
||||
des_set__key((des_cblock *)data,ks);
|
||||
des_cbc_cksum((des_cblock *)key,(des_cblock *)key,
|
||||
(long)sizeof(key),ks,(des_cblock *)data);
|
||||
des_set_odd_parity((des_cblock *)key);
|
||||
des_cbc_cksum((des_cblock *)key,(des_cblock *)key,
|
||||
(long)sizeof(key),ks,(des_cblock *)data);
|
||||
des_set_odd_parity((des_cblock *)key);
|
||||
|
||||
bcopy(key,ret,sizeof(key));
|
||||
bzero(key,sizeof(key));
|
||||
bzero(ks,sizeof(ks));
|
||||
t=0;
|
||||
return(0);
|
||||
}
|
||||
@@ -1,333 +0,0 @@
|
||||
/* read_pwd.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
/* 06-Apr-92 Luke Brennan Support for VMS */
|
||||
|
||||
/*-
|
||||
* $Id: read_pwd.c,v 1.2 1995/01/25 02:27:00 ache Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
#include <sys/param.h>
|
||||
|
||||
#ifdef BSD
|
||||
#include <pwd.h>
|
||||
extern char * getpass(const char * prompt);
|
||||
#endif
|
||||
|
||||
#ifndef VMS
|
||||
#ifndef MSDOS
|
||||
#ifndef _IRIX
|
||||
#ifdef CRAY
|
||||
#include <termio.h>
|
||||
#define sgttyb termio
|
||||
#define sg_flags c_lflag
|
||||
#else /* !CRAY */
|
||||
#include <sgtty.h>
|
||||
#endif
|
||||
#include <sys/ioctl.h>
|
||||
#else /* _IRIX */
|
||||
struct sgttyb {
|
||||
char sg_ispeed; /* input speed */
|
||||
char sg_ospeed; /* output speed */
|
||||
char sg_erase; /* erase character */
|
||||
char sg_kill; /* kill character */
|
||||
short sg_flags; /* mode flags */
|
||||
};
|
||||
#endif
|
||||
#else /* MSDOS */
|
||||
#define fgets(a,b,c) noecho_fgets(a,b,c)
|
||||
#ifndef NSIG
|
||||
#define NSIG 32
|
||||
#endif
|
||||
#endif
|
||||
#else /* VMS */
|
||||
#include <ssdef.h>
|
||||
#include <iodef.h>
|
||||
#include <ttdef.h>
|
||||
#include <descrip.h>
|
||||
struct IOSB {
|
||||
short iosb$w_value;
|
||||
short iosb$w_count;
|
||||
long iosb$l_info;
|
||||
};
|
||||
#endif
|
||||
|
||||
static void read_till_nl();
|
||||
static int read_pw();
|
||||
static void recsig();
|
||||
static void pushsig();
|
||||
static void popsig();
|
||||
#ifdef MSDOS
|
||||
static int noecho_fgets();
|
||||
#endif
|
||||
|
||||
static void (*savsig[NSIG])();
|
||||
static jmp_buf save;
|
||||
|
||||
int des_read_password(key,prompt,verify)
|
||||
des_cblock *key;
|
||||
char *prompt;
|
||||
int verify;
|
||||
{
|
||||
int ok;
|
||||
char buf[BUFSIZ],buff[BUFSIZ];
|
||||
|
||||
if ((ok=read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
|
||||
des_string_to_key(buf,key);
|
||||
bzero(buf,BUFSIZ);
|
||||
bzero(buff,BUFSIZ);
|
||||
return(ok);
|
||||
}
|
||||
|
||||
int des_read_2passwords(key1,key2,prompt,verify)
|
||||
des_cblock *key1;
|
||||
des_cblock *key2;
|
||||
char *prompt;
|
||||
int verify;
|
||||
{
|
||||
int ok;
|
||||
char buf[BUFSIZ],buff[BUFSIZ];
|
||||
|
||||
if ((ok=read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
|
||||
des_string_to_2keys(buf,key1,key2);
|
||||
bzero(buf,BUFSIZ);
|
||||
bzero(buff,BUFSIZ);
|
||||
return(ok);
|
||||
}
|
||||
|
||||
#if defined(BSD)
|
||||
int des_read_pw_string(buf, length, prompt, verify)
|
||||
char *buf;
|
||||
int length;
|
||||
char * prompt;
|
||||
int verify;
|
||||
{
|
||||
int len = MIN(_PASSWORD_LEN, length);
|
||||
char * s;
|
||||
int ok = 0;
|
||||
|
||||
fflush(stdout);
|
||||
while (!ok) {
|
||||
s = getpass(prompt);
|
||||
strncpy(buf, s, len);
|
||||
if(verify) {
|
||||
printf("Verifying password\n"); fflush(stdout);
|
||||
if(strncmp(getpass(prompt), buf, len) != 0) {
|
||||
printf("\nVerify failure - try again\n");
|
||||
fflush(stdout);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ok = 1;
|
||||
buf[len-1] = '\0';
|
||||
}
|
||||
return (!ok);
|
||||
}
|
||||
|
||||
#else /* BSD */
|
||||
|
||||
int des_read_pw_string(buf,length,prompt,verify)
|
||||
char *buf;
|
||||
int length;
|
||||
char *prompt;
|
||||
int verify;
|
||||
{
|
||||
char buff[BUFSIZ];
|
||||
int ret;
|
||||
|
||||
ret=read_pw(buf,buff,(length>BUFSIZ)?BUFSIZ:length,prompt,verify);
|
||||
bzero(buff,BUFSIZ);
|
||||
return(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void read_till_nl(in)
|
||||
FILE *in;
|
||||
{
|
||||
#define SIZE 4
|
||||
char buf[SIZE+1];
|
||||
|
||||
do {
|
||||
fgets(buf,SIZE,in);
|
||||
} while (index(buf,'\n') == NULL);
|
||||
}
|
||||
|
||||
/* return 0 if ok, 1 (or -1) otherwise */
|
||||
static int read_pw(buf,buff,size,prompt,verify)
|
||||
char *buf,*buff;
|
||||
int size;
|
||||
char *prompt;
|
||||
int verify;
|
||||
{
|
||||
#ifndef VMS
|
||||
#ifndef MSDOS
|
||||
struct sgttyb tty_orig,tty_new;
|
||||
#endif /* !MSDOS */
|
||||
#else
|
||||
struct IOSB iosb;
|
||||
$DESCRIPTOR(terminal,"TT");
|
||||
long tty_orig[3], tty_new[3];
|
||||
long status;
|
||||
unsigned short channel = 0;
|
||||
#endif
|
||||
int ok=0;
|
||||
char *p;
|
||||
int ps=0;
|
||||
FILE *tty;
|
||||
|
||||
#ifndef MSDOS
|
||||
if ((tty=fopen("/dev/tty","r")) == NULL)
|
||||
tty=stdin;
|
||||
#else /* MSDOS */
|
||||
if ((tty=fopen("con","r")) == NULL)
|
||||
tty=stdin;
|
||||
#endif /* MSDOS */
|
||||
#ifndef VMS
|
||||
#ifdef TIOCGETP
|
||||
if (ioctl(fileno(tty),TIOCGETP,(char *)&tty_orig) == -1)
|
||||
return(-1);
|
||||
bcopy(&(tty_orig),&(tty_new),sizeof(tty_orig));
|
||||
#endif
|
||||
#else /* VMS */
|
||||
status = SYS$ASSIGN(&terminal,&channel,0,0);
|
||||
if (status != SS$_NORMAL)
|
||||
return(-1);
|
||||
status=SYS$QIOW(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0);
|
||||
if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
|
||||
return(-1);
|
||||
#endif
|
||||
|
||||
if (setjmp(save))
|
||||
{
|
||||
ok=0;
|
||||
goto error;
|
||||
}
|
||||
pushsig();
|
||||
ps=1;
|
||||
#ifndef VMS
|
||||
#ifndef MSDOS
|
||||
tty_new.sg_flags &= ~ECHO;
|
||||
#endif /* !MSDOS */
|
||||
#ifdef TIOCSETP
|
||||
if (ioctl(fileno(tty),TIOCSETP,(char *)&tty_new) == -1)
|
||||
return(-1);
|
||||
#endif
|
||||
#else /* VMS */
|
||||
tty_new[0] = tty_orig[0];
|
||||
tty_new[1] = tty_orig[1] | TT$M_NOECHO;
|
||||
tty_new[2] = tty_orig[2];
|
||||
status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0);
|
||||
if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
|
||||
return(-1);
|
||||
#endif /* VMS */
|
||||
ps=2;
|
||||
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
while (!ok)
|
||||
{
|
||||
fputs(prompt,stderr);
|
||||
fflush(stderr);
|
||||
|
||||
buf[0]='\0';
|
||||
fgets(buf,size,tty);
|
||||
if (feof(tty)) goto error;
|
||||
if ((p=(char *)index(buf,'\n')) != NULL)
|
||||
*p='\0';
|
||||
else read_till_nl(tty);
|
||||
if (verify)
|
||||
{
|
||||
fprintf(stderr,"\nVerifying password %s",prompt);
|
||||
fflush(stderr);
|
||||
buff[0]='\0';
|
||||
fgets(buff,size,tty);
|
||||
if (feof(tty)) goto error;
|
||||
if ((p=(char *)index(buff,'\n')) != NULL)
|
||||
*p='\0';
|
||||
else read_till_nl(tty);
|
||||
|
||||
if (strcmp(buf,buff) != 0)
|
||||
{
|
||||
fprintf(stderr,"\nVerify failure - try again\n");
|
||||
fflush(stderr);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ok=1;
|
||||
}
|
||||
|
||||
error:
|
||||
fprintf(stderr,"\n");
|
||||
/* What can we do if there is an error? */
|
||||
#ifndef VMS
|
||||
#ifdef TIOCSETP
|
||||
if (ps >= 2) ioctl(fileno(tty),TIOCSETP,(char *)&tty_orig);
|
||||
#endif
|
||||
#else /* VMS */
|
||||
if (ps >= 2)
|
||||
status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0
|
||||
,tty_orig,12,0,0,0,0);
|
||||
#endif /* VMS */
|
||||
|
||||
if (ps >= 1) popsig();
|
||||
if (stdin != tty) fclose(tty);
|
||||
#ifdef VMS
|
||||
status = SYS$DASSGN(channel);
|
||||
#endif
|
||||
return(!ok);
|
||||
}
|
||||
|
||||
static void pushsig()
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<NSIG; i++)
|
||||
savsig[i]=signal(i,recsig);
|
||||
}
|
||||
|
||||
static void popsig()
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<NSIG; i++)
|
||||
signal(i,savsig[i]);
|
||||
}
|
||||
|
||||
static void recsig()
|
||||
{
|
||||
longjmp(save,1);
|
||||
}
|
||||
|
||||
#ifdef MSDOS
|
||||
static int noecho_fgets(buf,size,tty)
|
||||
char *buf;
|
||||
int size;
|
||||
FILE *tty;
|
||||
{
|
||||
int i;
|
||||
char *p;
|
||||
|
||||
p=buf;
|
||||
for (;;)
|
||||
{
|
||||
if (size == 0)
|
||||
{
|
||||
*p='\0';
|
||||
break;
|
||||
}
|
||||
size--;
|
||||
i=getch();
|
||||
if (i == '\r') i='\n';
|
||||
*(p++)=i;
|
||||
if (i == '\n')
|
||||
{
|
||||
*p='\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1,190 +0,0 @@
|
||||
/* set_key.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
/* set_key.c v 1.4 eay 24/9/91
|
||||
* 1.4 Speed up by 400% :-)
|
||||
* 1.3 added register declarations.
|
||||
* 1.2 unrolled make_key_sched a bit more
|
||||
* 1.1 added norm_expand_bits
|
||||
* 1.0 First working version
|
||||
*/
|
||||
|
||||
/*-
|
||||
* $Id: set_key.c,v 1.1.1.1 1994/09/30 14:49:51 csgr Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
#include "podd.h"
|
||||
#include "sk.h"
|
||||
|
||||
static int check_parity();
|
||||
|
||||
int des_check_key=0;
|
||||
|
||||
void des_set_odd_parity(key)
|
||||
des_cblock *key;
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<DES_KEY_SZ; i++)
|
||||
(*key)[i]=odd_parity[(*key)[i]];
|
||||
}
|
||||
|
||||
static int check_parity(key)
|
||||
des_cblock *key;
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<DES_KEY_SZ; i++)
|
||||
{
|
||||
if ((*key)[i] != odd_parity[(*key)[i]])
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
/* Weak and semi week keys as take from
|
||||
* %A D.W. Davies
|
||||
* %A W.L. Price
|
||||
* %T Security for Computer Networks
|
||||
* %I John Wiley & Sons
|
||||
* %D 1984
|
||||
* Many thanks to smb@ulysses.att.com (Steven Bellovin) for the reference
|
||||
* (and actual cblock values).
|
||||
*/
|
||||
#define NUM_WEAK_KEY 16
|
||||
static des_cblock weak_keys[NUM_WEAK_KEY]={
|
||||
/* weak keys */
|
||||
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
|
||||
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
|
||||
0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
|
||||
0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
|
||||
/* semi-weak keys */
|
||||
0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,
|
||||
0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,
|
||||
0x1F,0xE0,0x1F,0xE0,0x0E,0xF1,0x0E,0xF1,
|
||||
0xE0,0x1F,0xE0,0x1F,0xF1,0x0E,0xF1,0x0E,
|
||||
0x01,0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,
|
||||
0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,0x01,
|
||||
0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,0xFE,
|
||||
0xFE,0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,
|
||||
0x01,0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,
|
||||
0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,0x01,
|
||||
0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE,
|
||||
0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1};
|
||||
|
||||
int des_is_weak_key(key)
|
||||
des_cblock *key;
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<NUM_WEAK_KEY; i++)
|
||||
/* Added == 0 to comparision, I obviously don't run
|
||||
* this section very often :-(, thanks to
|
||||
* engineering@MorningStar.Com for the fix
|
||||
* eay 93/06/29 */
|
||||
if (memcmp(weak_keys[i],key,sizeof(key)) == 0) return(1);
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* NOW DEFINED IN des_local.h
|
||||
* See ecb_encrypt.c for a pseudo description of these macros.
|
||||
* #define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
|
||||
* (b)^=(t),\
|
||||
* (a)=((a)^((t)<<(n))))
|
||||
*/
|
||||
|
||||
#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
|
||||
(a)=(a)^(t)^(t>>(16-(n))))
|
||||
|
||||
static char shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
|
||||
|
||||
/* return 0 if key parity is odd (correct),
|
||||
* return -1 if key parity error,
|
||||
* return -2 if illegal weak key.
|
||||
*/
|
||||
int des_set__key(key,schedule)
|
||||
des_cblock *key;
|
||||
des_key_schedule schedule;
|
||||
{
|
||||
register unsigned long c,d,t,s;
|
||||
register unsigned char *in;
|
||||
register unsigned long *k;
|
||||
register int i;
|
||||
|
||||
if (des_check_key)
|
||||
{
|
||||
if (!check_parity(key))
|
||||
return(-1);
|
||||
|
||||
if (des_is_weak_key(key))
|
||||
return(-2);
|
||||
}
|
||||
|
||||
k=(unsigned long *)schedule;
|
||||
in=(unsigned char *)key;
|
||||
|
||||
c2l(in,c);
|
||||
c2l(in,d);
|
||||
|
||||
/* do PC1 in 60 simple operations */
|
||||
/* PERM_OP(d,c,t,4,0x0f0f0f0f);
|
||||
HPERM_OP(c,t,-2, 0xcccc0000);
|
||||
HPERM_OP(c,t,-1, 0xaaaa0000);
|
||||
HPERM_OP(c,t, 8, 0x00ff0000);
|
||||
HPERM_OP(c,t,-1, 0xaaaa0000);
|
||||
HPERM_OP(d,t,-8, 0xff000000);
|
||||
HPERM_OP(d,t, 8, 0x00ff0000);
|
||||
HPERM_OP(d,t, 2, 0x33330000);
|
||||
d=((d&0x00aa00aa)<<7)|((d&0x55005500)>>7)|(d&0xaa55aa55);
|
||||
d=(d>>8)|((c&0xf0000000)>>4);
|
||||
c&=0x0fffffff; */
|
||||
|
||||
/* I now do it in 47 simple operations :-)
|
||||
* Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
|
||||
* for the inspiration. :-) */
|
||||
PERM_OP (d,c,t,4,0x0f0f0f0f);
|
||||
HPERM_OP(c,t,-2,0xcccc0000);
|
||||
HPERM_OP(d,t,-2,0xcccc0000);
|
||||
PERM_OP (d,c,t,1,0x55555555);
|
||||
PERM_OP (c,d,t,8,0x00ff00ff);
|
||||
PERM_OP (d,c,t,1,0x55555555);
|
||||
d= (((d&0x000000ff)<<16)| (d&0x0000ff00) |
|
||||
((d&0x00ff0000)>>16)|((c&0xf0000000)>>4));
|
||||
c&=0x0fffffff;
|
||||
|
||||
for (i=0; i<ITERATIONS; i++)
|
||||
{
|
||||
if (shifts2[i])
|
||||
{ c=((c>>2)|(c<<26)); d=((d>>2)|(d<<26)); }
|
||||
else
|
||||
{ c=((c>>1)|(c<<27)); d=((d>>1)|(d<<27)); }
|
||||
c&=0x0fffffff;
|
||||
d&=0x0fffffff;
|
||||
/* could be a few less shifts but I am to lazy at this
|
||||
* point in time to investigate */
|
||||
s= des_skb[0][ (c )&0x3f ]|
|
||||
des_skb[1][((c>> 6)&0x03)|((c>> 7)&0x3c)]|
|
||||
des_skb[2][((c>>13)&0x0f)|((c>>14)&0x30)]|
|
||||
des_skb[3][((c>>20)&0x01)|((c>>21)&0x06) |
|
||||
((c>>22)&0x38)];
|
||||
t= des_skb[4][ (d )&0x3f ]|
|
||||
des_skb[5][((d>> 7)&0x03)|((d>> 8)&0x3c)]|
|
||||
des_skb[6][ (d>>15)&0x3f ]|
|
||||
des_skb[7][((d>>21)&0x0f)|((d>>22)&0x30)];
|
||||
|
||||
/* table contained 0213 4657 */
|
||||
*(k++)=((t<<16)|(s&0x0000ffff))&0xffffffff;
|
||||
s= ((s>>16)|(t&0xffff0000));
|
||||
|
||||
s=(s<<4)|(s>>28);
|
||||
*(k++)=s&0xffffffff;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
int des_key_sched(key,schedule)
|
||||
des_cblock *key;
|
||||
des_key_schedule schedule;
|
||||
{
|
||||
return(des_set__key(key,schedule));
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
/* str2key.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
|
||||
/*-
|
||||
* $Id: str2key.c,v 1.2 1994/07/19 19:22:08 g89r4222 Exp $
|
||||
*/
|
||||
|
||||
#include "des_locl.h"
|
||||
|
||||
extern int des_check_key;
|
||||
|
||||
int des_string_to_key(str,key)
|
||||
char *str;
|
||||
des_cblock *key;
|
||||
{
|
||||
des_key_schedule ks;
|
||||
int i,length;
|
||||
register unsigned char j;
|
||||
|
||||
bzero(key,8);
|
||||
length=strlen(str);
|
||||
#ifdef OLD_STR_TO_KEY
|
||||
for (i=0; i<length; i++)
|
||||
(*key)[i%8]^=(str[i]<<1);
|
||||
#else /* MIT COMPATIBLE */
|
||||
for (i=0; i<length; i++)
|
||||
{
|
||||
j=str[i];
|
||||
if ((i%16) < 8)
|
||||
(*key)[i%8]^=(j<<1);
|
||||
else
|
||||
{
|
||||
/* Reverse the bit order 05/05/92 eay */
|
||||
j=((j<<4)&0xf0)|((j>>4)&0x0f);
|
||||
j=((j<<2)&0xcc)|((j>>2)&0x33);
|
||||
j=((j<<1)&0xaa)|((j>>1)&0x55);
|
||||
(*key)[7-(i%8)]^=j;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
des_set_odd_parity((des_cblock *)key);
|
||||
i=des_check_key;
|
||||
des_check_key=0;
|
||||
des_set__key((des_cblock *)key,ks);
|
||||
des_check_key=i;
|
||||
des_cbc_cksum((des_cblock *)str,(des_cblock *)key,(long)length,ks,
|
||||
(des_cblock *)key);
|
||||
bzero(ks,sizeof(ks));
|
||||
des_set_odd_parity((des_cblock *)key);
|
||||
return(0);
|
||||
}
|
||||
|
||||
int des_string_to_2keys(str,key1,key2)
|
||||
char *str;
|
||||
des_cblock *key1,*key2;
|
||||
{
|
||||
des_key_schedule ks;
|
||||
int i,length;
|
||||
register unsigned char j;
|
||||
|
||||
bzero(key1,8);
|
||||
bzero(key2,8);
|
||||
length=strlen(str);
|
||||
#ifdef OLD_STR_TO_KEY
|
||||
if (length <= 8)
|
||||
{
|
||||
for (i=0; i<length; i++)
|
||||
{
|
||||
(*key2)[i]=(*key1)[i]=(str[i]<<1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i=0; i<length; i++)
|
||||
{
|
||||
if ((i/8)&1)
|
||||
(*key2)[i%8]^=(str[i]<<1);
|
||||
else
|
||||
(*key1)[i%8]^=(str[i]<<1);
|
||||
}
|
||||
}
|
||||
#else /* MIT COMPATIBLE */
|
||||
for (i=0; i<length; i++)
|
||||
{
|
||||
j=str[i];
|
||||
if ((i%32) < 16)
|
||||
{
|
||||
if ((i%16) < 8)
|
||||
(*key1)[i%8]^=(j<<1);
|
||||
else
|
||||
(*key2)[i%8]^=(j<<1);
|
||||
}
|
||||
else
|
||||
{
|
||||
j=((j<<4)&0xf0)|((j>>4)&0x0f);
|
||||
j=((j<<2)&0xcc)|((j>>2)&0x33);
|
||||
j=((j<<1)&0xaa)|((j>>1)&0x55);
|
||||
if ((i%16) < 8)
|
||||
(*key1)[7-(i%8)]^=j;
|
||||
else
|
||||
(*key2)[7-(i%8)]^=j;
|
||||
}
|
||||
}
|
||||
if (length <= 8) bcopy(key1,key2,8);
|
||||
#endif
|
||||
des_set_odd_parity((des_cblock *)key1);
|
||||
des_set_odd_parity((des_cblock *)key2);
|
||||
i=des_check_key;
|
||||
des_check_key=0;
|
||||
des_set__key((des_cblock *)key1,ks);
|
||||
des_cbc_cksum((des_cblock *)str,(des_cblock *)key1,(long)length,ks,
|
||||
(des_cblock *)key1);
|
||||
des_set__key((des_cblock *)key2,ks);
|
||||
des_cbc_cksum((des_cblock *)str,(des_cblock *)key2,(long)length,ks,
|
||||
(des_cblock *)key2);
|
||||
des_check_key=i;
|
||||
bzero(ks,sizeof(ks));
|
||||
des_set_odd_parity(key1);
|
||||
des_set_odd_parity(key2);
|
||||
return(0);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# from: @(#)Makefile 5.4 (Berkeley) 5/11/90
|
||||
# $Id: Makefile,v 1.2 1994/07/19 19:22:28 g89r4222 Exp $
|
||||
|
||||
PROG= destest
|
||||
CFLAGS+= -I${.CURDIR}/../include
|
||||
DPADD= ${LIBDES}
|
||||
LDADD= -ldes
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
@@ -1,365 +0,0 @@
|
||||
/* destest.c */
|
||||
/* Copyright (C) 1993 Eric Young - see README for more details */
|
||||
#include <stdio.h>
|
||||
#include "des_locl.h" /* for des.h and bcopy macros */
|
||||
/* tisk tisk - the test keys don't all have odd parity :-( */
|
||||
|
||||
/* test data */
|
||||
#define NUM_TESTS 34
|
||||
static unsigned char key_data[NUM_TESTS][8]={
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,
|
||||
0x7C,0xA1,0x10,0x45,0x4A,0x1A,0x6E,0x57,
|
||||
0x01,0x31,0xD9,0x61,0x9D,0xC1,0x37,0x6E,
|
||||
0x07,0xA1,0x13,0x3E,0x4A,0x0B,0x26,0x86,
|
||||
0x38,0x49,0x67,0x4C,0x26,0x02,0x31,0x9E,
|
||||
0x04,0xB9,0x15,0xBA,0x43,0xFE,0xB5,0xB6,
|
||||
0x01,0x13,0xB9,0x70,0xFD,0x34,0xF2,0xCE,
|
||||
0x01,0x70,0xF1,0x75,0x46,0x8F,0xB5,0xE6,
|
||||
0x43,0x29,0x7F,0xAD,0x38,0xE3,0x73,0xFE,
|
||||
0x07,0xA7,0x13,0x70,0x45,0xDA,0x2A,0x16,
|
||||
0x04,0x68,0x91,0x04,0xC2,0xFD,0x3B,0x2F,
|
||||
0x37,0xD0,0x6B,0xB5,0x16,0xCB,0x75,0x46,
|
||||
0x1F,0x08,0x26,0x0D,0x1A,0xC2,0x46,0x5E,
|
||||
0x58,0x40,0x23,0x64,0x1A,0xBA,0x61,0x76,
|
||||
0x02,0x58,0x16,0x16,0x46,0x29,0xB0,0x07,
|
||||
0x49,0x79,0x3E,0xBC,0x79,0xB3,0x25,0x8F,
|
||||
0x4F,0xB0,0x5E,0x15,0x15,0xAB,0x73,0xA7,
|
||||
0x49,0xE9,0x5D,0x6D,0x4C,0xA2,0x29,0xBF,
|
||||
0x01,0x83,0x10,0xDC,0x40,0x9B,0x26,0xD6,
|
||||
0x1C,0x58,0x7F,0x1C,0x13,0x92,0x4F,0xEF,
|
||||
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
|
||||
0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E,
|
||||
0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10};
|
||||
|
||||
static unsigned char plain_data[NUM_TESTS][8]={
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
|
||||
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
|
||||
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0x01,0xA1,0xD6,0xD0,0x39,0x77,0x67,0x42,
|
||||
0x5C,0xD5,0x4C,0xA8,0x3D,0xEF,0x57,0xDA,
|
||||
0x02,0x48,0xD4,0x38,0x06,0xF6,0x71,0x72,
|
||||
0x51,0x45,0x4B,0x58,0x2D,0xDF,0x44,0x0A,
|
||||
0x42,0xFD,0x44,0x30,0x59,0x57,0x7F,0xA2,
|
||||
0x05,0x9B,0x5E,0x08,0x51,0xCF,0x14,0x3A,
|
||||
0x07,0x56,0xD8,0xE0,0x77,0x47,0x61,0xD2,
|
||||
0x76,0x25,0x14,0xB8,0x29,0xBF,0x48,0x6A,
|
||||
0x3B,0xDD,0x11,0x90,0x49,0x37,0x28,0x02,
|
||||
0x26,0x95,0x5F,0x68,0x35,0xAF,0x60,0x9A,
|
||||
0x16,0x4D,0x5E,0x40,0x4F,0x27,0x52,0x32,
|
||||
0x6B,0x05,0x6E,0x18,0x75,0x9F,0x5C,0xCA,
|
||||
0x00,0x4B,0xD6,0xEF,0x09,0x17,0x60,0x62,
|
||||
0x48,0x0D,0x39,0x00,0x6E,0xE7,0x62,0xF2,
|
||||
0x43,0x75,0x40,0xC8,0x69,0x8F,0x3C,0xFA,
|
||||
0x07,0x2D,0x43,0xA0,0x77,0x07,0x52,0x92,
|
||||
0x02,0xFE,0x55,0x77,0x81,0x17,0xF1,0x2A,
|
||||
0x1D,0x9D,0x5C,0x50,0x18,0xF7,0x28,0xC2,
|
||||
0x30,0x55,0x32,0x28,0x6D,0x6F,0x29,0x5A,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
|
||||
|
||||
static unsigned char cipher_data[NUM_TESTS][8]={
|
||||
0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7,
|
||||
0x73,0x59,0xB2,0x16,0x3E,0x4E,0xDC,0x58,
|
||||
0x95,0x8E,0x6E,0x62,0x7A,0x05,0x55,0x7B,
|
||||
0xF4,0x03,0x79,0xAB,0x9E,0x0E,0xC5,0x33,
|
||||
0x17,0x66,0x8D,0xFC,0x72,0x92,0x53,0x2D,
|
||||
0x8A,0x5A,0xE1,0xF8,0x1A,0xB8,0xF2,0xDD,
|
||||
0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7,
|
||||
0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4,
|
||||
0x69,0x0F,0x5B,0x0D,0x9A,0x26,0x93,0x9B,
|
||||
0x7A,0x38,0x9D,0x10,0x35,0x4B,0xD2,0x71,
|
||||
0x86,0x8E,0xBB,0x51,0xCA,0xB4,0x59,0x9A,
|
||||
0x71,0x78,0x87,0x6E,0x01,0xF1,0x9B,0x2A,
|
||||
0xAF,0x37,0xFB,0x42,0x1F,0x8C,0x40,0x95,
|
||||
0x86,0xA5,0x60,0xF1,0x0E,0xC6,0xD8,0x5B,
|
||||
0x0C,0xD3,0xDA,0x02,0x00,0x21,0xDC,0x09,
|
||||
0xEA,0x67,0x6B,0x2C,0xB7,0xDB,0x2B,0x7A,
|
||||
0xDF,0xD6,0x4A,0x81,0x5C,0xAF,0x1A,0x0F,
|
||||
0x5C,0x51,0x3C,0x9C,0x48,0x86,0xC0,0x88,
|
||||
0x0A,0x2A,0xEE,0xAE,0x3F,0xF4,0xAB,0x77,
|
||||
0xEF,0x1B,0xF0,0x3E,0x5D,0xFA,0x57,0x5A,
|
||||
0x88,0xBF,0x0D,0xB6,0xD7,0x0D,0xEE,0x56,
|
||||
0xA1,0xF9,0x91,0x55,0x41,0x02,0x0B,0x56,
|
||||
0x6F,0xBF,0x1C,0xAF,0xCF,0xFD,0x05,0x56,
|
||||
0x2F,0x22,0xE4,0x9B,0xAB,0x7C,0xA1,0xAC,
|
||||
0x5A,0x6B,0x61,0x2C,0xC2,0x6C,0xCE,0x4A,
|
||||
0x5F,0x4C,0x03,0x8E,0xD1,0x2B,0x2E,0x41,
|
||||
0x63,0xFA,0xC0,0xD0,0x34,0xD9,0xF7,0x93,
|
||||
0x61,0x7B,0x3A,0x0C,0xE8,0xF0,0x71,0x00,
|
||||
0xDB,0x95,0x86,0x05,0xF8,0xC8,0xC6,0x06,
|
||||
0xED,0xBF,0xD1,0xC6,0x6C,0x29,0xCC,0xC7,
|
||||
0x35,0x55,0x50,0xB2,0x15,0x0E,0x24,0x51,
|
||||
0xCA,0xAA,0xAF,0x4D,0xEA,0xF1,0xDB,0xAE,
|
||||
0xD5,0xD4,0x4F,0xF7,0x20,0x68,0x3D,0x0D,
|
||||
0x2A,0x2B,0xB0,0x08,0xDF,0x97,0xC2,0xF2};
|
||||
|
||||
static unsigned char cbc_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
|
||||
static unsigned char cbc_iv[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
|
||||
static unsigned char cbc_data[40]="7654321 Now is the time for ";
|
||||
|
||||
static unsigned char cbc_ok[32]={
|
||||
0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
|
||||
0xac,0xd8,0xae,0xfd,0xdf,0xd8,0xa1,0xeb,
|
||||
0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68,
|
||||
0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
|
||||
|
||||
static unsigned char pcbc_ok[32]={
|
||||
0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
|
||||
0x6d,0xec,0xb4,0x70,0xa0,0xe5,0x6b,0x15,
|
||||
0xae,0xa6,0xbf,0x61,0xed,0x7d,0x9c,0x9f,
|
||||
0xf7,0x17,0x46,0x3b,0x8a,0xb3,0xcc,0x88};
|
||||
|
||||
static unsigned char cksum_ok[8]={
|
||||
0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
|
||||
|
||||
static unsigned char cfb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
|
||||
static unsigned char cfb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
|
||||
static unsigned char cfb_buf1[24],cfb_buf2[24],cfb_tmp[8];
|
||||
static unsigned char cfb_plain[24]=
|
||||
{
|
||||
0x4e,0x6f,0x77,0x20,0x69,0x73,
|
||||
0x20,0x74,0x68,0x65,0x20,0x74,
|
||||
0x69,0x6d,0x65,0x20,0x66,0x6f,
|
||||
0x72,0x20,0x61,0x6c,0x6c,0x20
|
||||
};
|
||||
static unsigned char cfb_cipher[24]=
|
||||
{
|
||||
0xf3,0x1f,0xda,0x07,0x01,0x14,
|
||||
0x62,0xee,0x18,0x7f,0x43,0xd8,
|
||||
0x0a,0x7c,0xd9,0xb5,0xb0,0xd2,
|
||||
0x90,0xda,0x6e,0x5b,0x9a,0x87
|
||||
};
|
||||
|
||||
static unsigned char ofb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
|
||||
static unsigned char ofb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
|
||||
static unsigned char ofb_plain[24]=
|
||||
{
|
||||
0x4e,0x6f,0x77,0x20,0x69,0x73,
|
||||
0x20,0x74,0x68,0x65,0x20,0x74,
|
||||
0x69,0x6d,0x65,0x20,0x66,0x6f,
|
||||
0x72,0x20,0x61,0x6c,0x6c,0x20
|
||||
};
|
||||
static unsigned char ofb_buf1[24],ofb_buf2[24],ofb_tmp[8];
|
||||
static unsigned char ofb_cipher[24]=
|
||||
{
|
||||
0xf3,0x09,0x62,0x49,0xc7,0xf4,0x6e,0x51,
|
||||
0x35,0xf2,0x4a,0x24,0x2e,0xeb,0x3d,0x3f,
|
||||
0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3
|
||||
};
|
||||
|
||||
char *malloc();
|
||||
char *pt();
|
||||
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
des_cblock in,out,outin;
|
||||
des_key_schedule ks;
|
||||
unsigned char cbc_in[40],cbc_out[40];
|
||||
unsigned long cs;
|
||||
unsigned char qret[4][4];
|
||||
unsigned long lqret[4];
|
||||
char *str;
|
||||
|
||||
printf("Doing ecb\n");
|
||||
for (i=0; i<NUM_TESTS; i++)
|
||||
{
|
||||
if ((j=key_sched((C_Block *)(key_data[i]),ks)) != 0)
|
||||
printf("Key error %2d:%d\n",i+1,j);
|
||||
bcopy(plain_data[i],in,8);
|
||||
bzero(out,8);
|
||||
bzero(outin,8);
|
||||
des_ecb_encrypt((C_Block *)in,(C_Block *)out,ks,DES_ENCRYPT);
|
||||
des_ecb_encrypt((C_Block *)out,(C_Block *)outin,ks,DES_DECRYPT);
|
||||
|
||||
if (bcmp(out,cipher_data[i],8) != 0)
|
||||
{
|
||||
printf("Encryption error %2d\nk=%s p=%s o=%s act=%s\n",
|
||||
i+1,pt(key_data[i]),pt(in),pt(cipher_data[i]),
|
||||
pt(out));
|
||||
}
|
||||
if (bcmp(in,outin,8) != 0)
|
||||
{
|
||||
printf("Decryption error %2d\nk=%s p=%s o=%s act=%s\n",
|
||||
i+1,pt(key_data[i]),pt(out),pt(in),pt(outin));
|
||||
}
|
||||
}
|
||||
|
||||
printf("Doing cbc\n");
|
||||
if ((j=key_sched((C_Block *)cbc_key,ks)) != 0)
|
||||
printf("Key error %2d:%d\n",i+1,j);
|
||||
bzero(cbc_out,40);
|
||||
bzero(cbc_in,40);
|
||||
des_cbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_ENCRYPT);
|
||||
if (bcmp(cbc_out,cbc_ok,32) != 0)
|
||||
printf("cbc_encrypt encrypt error\n");
|
||||
des_cbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_DECRYPT);
|
||||
if (bcmp(cbc_in,cbc_data,32) != 0)
|
||||
printf("cbc_encrypt decrypt error\n");
|
||||
|
||||
printf("Doing pcbc\n");
|
||||
if ((j=key_sched((C_Block *)cbc_key,ks)) != 0)
|
||||
printf("Key error %2d:%d\n",i+1,j);
|
||||
bzero(cbc_out,40);
|
||||
bzero(cbc_in,40);
|
||||
des_pcbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_ENCRYPT);
|
||||
if (bcmp(cbc_out,pcbc_ok,32) != 0)
|
||||
printf("pcbc_encrypt encrypt error\n");
|
||||
des_pcbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_DECRYPT);
|
||||
if (bcmp(cbc_in,cbc_data,32) != 0)
|
||||
printf("pcbc_encrypt decrypt error\n");
|
||||
|
||||
printf("Doing cfb\n");
|
||||
key_sched((C_Block *)cfb_key,ks);
|
||||
bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
|
||||
des_cfb_encrypt(cfb_plain,cfb_buf1,8,(long)sizeof(cfb_plain),ks,
|
||||
(C_Block *)cfb_tmp,DES_ENCRYPT);
|
||||
if (bcmp(cfb_cipher,cfb_buf1,sizeof(cfb_buf1)) != 0)
|
||||
printf("cfb_encrypt encrypt error\n");
|
||||
bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
|
||||
des_cfb_encrypt(cfb_buf1,cfb_buf2,8,(long)sizeof(cfb_buf1),ks,
|
||||
(C_Block *)cfb_tmp,DES_DECRYPT);
|
||||
if (bcmp(cfb_plain,cfb_buf2,sizeof(cfb_buf2)) != 0)
|
||||
printf("cfb_encrypt decrypt error\n");
|
||||
|
||||
bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
|
||||
for (i=0; i<sizeof(cfb_plain); i++)
|
||||
des_cfb_encrypt(&(cfb_plain[i]),&(cfb_buf1[i]),
|
||||
8,(long)1,ks,(C_Block *)cfb_tmp,DES_ENCRYPT);
|
||||
if (bcmp(cfb_cipher,cfb_buf1,sizeof(cfb_buf1)) != 0)
|
||||
printf("cfb_encrypt small encrypt error\n");
|
||||
|
||||
bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
|
||||
for (i=0; i<sizeof(cfb_plain); i++)
|
||||
des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
|
||||
8,(long)1,ks,(C_Block *)cfb_tmp,DES_DECRYPT);
|
||||
if (bcmp(cfb_plain,cfb_buf2,sizeof(cfb_buf2)) != 0)
|
||||
printf("cfb_encrypt small decrypt error\n");
|
||||
|
||||
printf("Doing ofb\n");
|
||||
key_sched((C_Block *)ofb_key,ks);
|
||||
bcopy(ofb_iv,ofb_tmp,sizeof(ofb_iv));
|
||||
des_ofb_encrypt(ofb_plain,ofb_buf1,64,(long)sizeof(cfb_plain)/8,ks,
|
||||
(C_Block *)ofb_tmp);
|
||||
if (bcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
|
||||
printf("ofb_encrypt encrypt error\n");
|
||||
bcopy(ofb_iv,ofb_tmp,sizeof(ofb_iv));
|
||||
des_ofb_encrypt(ofb_buf1,ofb_buf2,64,(long)sizeof(ofb_buf1)/8,ks,
|
||||
(C_Block *)ofb_tmp);
|
||||
if (bcmp(ofb_plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
|
||||
printf("ofb_encrypt decrypt error\n");
|
||||
|
||||
printf("Doing cbc_cksum\n");
|
||||
des_cbc_cksum((C_Block *)cbc_data,(C_Block *)cbc_out,
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv);
|
||||
if (bcmp(cbc_out,cksum_ok,8) != 0)
|
||||
printf("cbc_cksum error\n");
|
||||
|
||||
printf("Doing quad_cksum\n");
|
||||
cs=quad_cksum((C_Block *)cbc_data,(C_Block *)qret,
|
||||
(long)strlen(cbc_data),2,(C_Block *)cbc_iv);
|
||||
for (i=0; i<4; i++)
|
||||
{
|
||||
lqret[i]=0;
|
||||
bcopy(&(qret[i][0]),&(lqret[i]),4);
|
||||
}
|
||||
{ /* Big-endian fix */
|
||||
static unsigned long l=1;
|
||||
static unsigned char *c=(unsigned char *)&l;
|
||||
unsigned long ll;
|
||||
|
||||
if (!c[0])
|
||||
{
|
||||
ll=lqret[0]^lqret[3];
|
||||
lqret[0]^=ll;
|
||||
lqret[3]^=ll;
|
||||
ll=lqret[1]^lqret[2];
|
||||
lqret[1]^=ll;
|
||||
lqret[2]^=ll;
|
||||
}
|
||||
}
|
||||
if (cs != 0x70d7a63a)
|
||||
printf("quad_cksum error, ret %08x should be 70d7a63a\n",cs);
|
||||
if (lqret[0] != 0x327eba8d)
|
||||
printf("quad_cksum error, out[0] %08x is not %08x\n",
|
||||
lqret[0],0x327eba8d);
|
||||
if (lqret[1] != 0x201a49cc)
|
||||
printf("quad_cksum error, out[1] %08x is not %08x\n",
|
||||
lqret[1],0x201a49cc);
|
||||
if (lqret[2] != 0x70d7a63a)
|
||||
printf("quad_cksum error, out[2] %08x is not %08x\n",
|
||||
lqret[2],0x70d7a63a);
|
||||
if (lqret[3] != 0x501c2c26)
|
||||
printf("quad_cksum error, out[3] %08x is not %08x\n",
|
||||
lqret[3],0x501c2c26);
|
||||
|
||||
printf("input word alignment test");
|
||||
for (i=0; i<4; i++)
|
||||
{
|
||||
printf(" %d",i);
|
||||
des_cbc_encrypt((C_Block *)&(cbc_out[i]),(C_Block *)cbc_in,
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv,
|
||||
DES_ENCRYPT);
|
||||
}
|
||||
printf("\noutput word alignment test");
|
||||
for (i=0; i<4; i++)
|
||||
{
|
||||
printf(" %d",i);
|
||||
des_cbc_encrypt((C_Block *)cbc_out,(C_Block *)&(cbc_in[i]),
|
||||
(long)strlen(cbc_data),ks,(C_Block *)cbc_iv,
|
||||
DES_ENCRYPT);
|
||||
}
|
||||
printf("\n");
|
||||
printf("fast crypt test ");
|
||||
str=crypt("testing","ef");
|
||||
if (strcmp("efGnQx2725bI2",str) != 0)
|
||||
printf("fast crypt error, %x should be efGnQx2725bI2\n",str);
|
||||
str=crypt("bca76;23","yA");
|
||||
if (strcmp("yA1Rp/1hZXIJk",str) != 0)
|
||||
printf("fast crypt error, %x should be yA1Rp/1hZXIJk\n",str);
|
||||
printf("\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
char *pt(p)
|
||||
unsigned char *p;
|
||||
{
|
||||
char *ret;
|
||||
int i;
|
||||
static char *f="0123456789ABCDEF";
|
||||
|
||||
ret=(char *)malloc(17);
|
||||
for (i=0; i<8; i++)
|
||||
{
|
||||
ret[i*2]=f[(p[i]>>4)&0xf];
|
||||
ret[i*2+1]=f[p[i]&0xf];
|
||||
}
|
||||
ret[16]='\0';
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# from: @(#)Makefile 5.1 (Berkeley) 6/25/90
|
||||
# $Id: Makefile,v 1.4 1995/09/13 17:23:44 markm Exp $
|
||||
# $Id$
|
||||
|
||||
FILES= kparse.h krb.h krb_db.h des.h
|
||||
|
||||
# mit-copyright.h kadm_err.h krb_err.h
|
||||
FILES= kparse.h krb.h krb_db.h
|
||||
|
||||
NOOBJ= noobj
|
||||
NOMAN= noman
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
/* des.h */
|
||||
/* Copyright (C) 1995 Eric Young ([email protected]).
|
||||
* All rights reserved.
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* See the COPYRIGHT file in the libdes distribution for more details.
|
||||
*/
|
||||
|
||||
#ifndef HEADER_DES_H
|
||||
#define HEADER_DES_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
typedef unsigned char des_cblock[8];
|
||||
typedef struct des_ks_struct { des_cblock _; } des_key_schedule[16];
|
||||
|
||||
#define DES_KEY_SZ (sizeof(des_cblock))
|
||||
#define DES_SCHEDULE_SZ (sizeof(des_key_schedule))
|
||||
|
||||
#define DES_ENCRYPT 1
|
||||
#define DES_DECRYPT 0
|
||||
|
||||
#define DES_CBC_MODE 0
|
||||
#define DES_PCBC_MODE 1
|
||||
|
||||
#define C_Block des_cblock
|
||||
#define Key_schedule des_key_schedule
|
||||
#define ENCRYPT DES_ENCRYPT
|
||||
#define DECRYPT DES_DECRYPT
|
||||
#define KEY_SZ DES_KEY_SZ
|
||||
#define string_to_key des_string_to_key
|
||||
#define read_pw_string des_read_pw_string
|
||||
#define random_key des_random_key
|
||||
#define pcbc_encrypt des_pcbc_encrypt
|
||||
#define set_key des_set_key
|
||||
#define key_sched des_key_sched
|
||||
#define ecb_encrypt des_ecb_encrypt
|
||||
#define cbc_encrypt des_cbc_encrypt
|
||||
#define ncbc_encrypt des_ncbc_encrypt
|
||||
#define cbc_cksum des_cbc_cksum
|
||||
#define quad_cksum des_quad_cksum
|
||||
|
||||
/* For compatibility with the MIT lib - eay 20/05/92 */
|
||||
typedef struct des_ks_struct bit_64;
|
||||
#define des_fixup_key_parity des_set_odd_parity
|
||||
#define des_check_key_parity check_parity
|
||||
|
||||
extern int des_check_key; /* defaults to false */
|
||||
extern int des_rw_mode; /* defaults to DES_PCBC_MODE */
|
||||
|
||||
/* The next line is used to disable full ANSI prototypes, if your
|
||||
* compiler has problems with the prototypes, make sure this line always
|
||||
* evaluates to true :-) */
|
||||
#if defined(MSDOS) && defined(__STDC__)
|
||||
#undef PROTO
|
||||
#define PROTO
|
||||
#endif
|
||||
|
||||
/* markm - dirty hack */
|
||||
#define PROTO
|
||||
|
||||
#ifdef PROTO
|
||||
int des_2ecb_encrypt(des_cblock *input,des_cblock *output,
|
||||
des_key_schedule ks1,des_key_schedule ks2,int enc);
|
||||
int des_3ecb_encrypt(des_cblock *input,des_cblock *output,
|
||||
des_key_schedule ks1,des_key_schedule ks2, int enc);
|
||||
unsigned long des_cbc_cksum(des_cblock *input,des_cblock *output,
|
||||
long length,des_key_schedule schedule,des_cblock *ivec);
|
||||
int des_cbc_encrypt(des_cblock *input,des_cblock *output,long length,
|
||||
des_key_schedule schedule,des_cblock *ivec,int enc);
|
||||
int des_ncbc_encrypt(des_cblock *input,des_cblock *output,long length,
|
||||
des_key_schedule schedule,des_cblock *ivec,int enc);
|
||||
int des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length,
|
||||
des_key_schedule sk1,des_key_schedule sk2,
|
||||
des_cblock *ivec1,des_cblock *ivec2,int enc);
|
||||
int des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits,
|
||||
long length,des_key_schedule schedule,des_cblock *ivec,int enc);
|
||||
int des_ecb_encrypt(des_cblock *input,des_cblock *output,
|
||||
des_key_schedule ks,int enc);
|
||||
int des_encrypt(unsigned long *input,unsigned long *output,
|
||||
des_key_schedule ks, int enc);
|
||||
int des_encrypt2(unsigned long *input,unsigned long *output,
|
||||
des_key_schedule ks, int enc);
|
||||
int des_ede3_cbc_encrypt(des_cblock *input, des_cblock *output,
|
||||
long length, des_key_schedule ks1, des_key_schedule ks2,
|
||||
des_key_schedule ks3, des_cblock *ivec, int enc);
|
||||
int des_ede2_cbc_encrypt(des_cblock *input, des_cblock *output,
|
||||
long length, des_key_schedule ks1, des_key_schedule ks2,
|
||||
des_cblock *ivec, int enc);
|
||||
int des_enc_read(int fd,char *buf,int len,des_key_schedule sched,
|
||||
des_cblock *iv);
|
||||
int des_enc_write(int fd,char *buf,int len,des_key_schedule sched,
|
||||
des_cblock *iv);
|
||||
#if 0
|
||||
#ifdef PERL5
|
||||
char *des_crypt(const char *buf,const char *salt);
|
||||
#else
|
||||
/* some stupid compilers complain because I have declared char instead
|
||||
* of const char */
|
||||
#ifdef HEADER_DES_LOCL_H
|
||||
char *crypt(const char *buf,const char *salt);
|
||||
#else
|
||||
char *crypt();
|
||||
#endif /* HEADER_DES_LOCL_H */
|
||||
#endif /* PERL5 */
|
||||
#endif /* 0 */
|
||||
|
||||
int des_ofb_encrypt(unsigned char *in,unsigned char *out,
|
||||
int numbits,long length,des_key_schedule schedule,des_cblock *ivec);
|
||||
int des_pcbc_encrypt(des_cblock *input,des_cblock *output,long length,
|
||||
des_key_schedule schedule,des_cblock *ivec,int enc);
|
||||
unsigned long des_quad_cksum(des_cblock *input,des_cblock *output,
|
||||
long length,int out_count,des_cblock *seed);
|
||||
void des_random_seed(des_cblock key);
|
||||
int des_random_key(des_cblock ret);
|
||||
int des_read_password(des_cblock *key,char *prompt,int verify);
|
||||
int des_read_2passwords(des_cblock *key1,des_cblock *key2,
|
||||
char *prompt,int verify);
|
||||
int des_read_pw_string(char *buf,int length,char *prompt,int verify);
|
||||
void des_set_odd_parity(des_cblock *key);
|
||||
int des_is_weak_key(des_cblock *key);
|
||||
int des_set_key(des_cblock *key,des_key_schedule schedule);
|
||||
int des_key_sched(des_cblock *key,des_key_schedule schedule);
|
||||
int des_string_to_key(char *str,des_cblock *key);
|
||||
int des_string_to_2keys(char *str,des_cblock *key1,des_cblock *key2);
|
||||
int des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length,
|
||||
des_key_schedule schedule, des_cblock *ivec, int *num, int enc);
|
||||
int des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length,
|
||||
des_key_schedule schedule, des_cblock *ivec, int *num);
|
||||
void des_cblock_print_file(des_cblock *cb, FILE *fp);
|
||||
int des_new_random_key(des_cblock *key);
|
||||
void des_init_random_number_generator(des_cblock *key);
|
||||
void des_set_random_generator_seed(des_cblock *key);
|
||||
void des_set_sequence_number(des_cblock new_sequence_number);
|
||||
void des_generate_random_block(des_cblock *block);
|
||||
|
||||
#else
|
||||
|
||||
int des_2ecb_encrypt();
|
||||
int des_3ecb_encrypt();
|
||||
unsigned long des_cbc_cksum();
|
||||
int des_cbc_encrypt();
|
||||
int des_ncbc_encrypt();
|
||||
int des_3cbc_encrypt();
|
||||
int des_cfb_encrypt();
|
||||
int des_ecb_encrypt();
|
||||
int des_encrypt();
|
||||
int des_encrypt2();
|
||||
int des_ede3_cbc_encrypt();
|
||||
int des_ede2_cbc_encrypt();
|
||||
int des_enc_read();
|
||||
int des_enc_write();
|
||||
#ifdef PERL5
|
||||
char *des_crypt();
|
||||
#else
|
||||
char *crypt();
|
||||
#endif
|
||||
int des_ofb_encrypt();
|
||||
int des_pcbc_encrypt();
|
||||
unsigned long des_quad_cksum();
|
||||
void des_random_seed();
|
||||
int des_random_key();
|
||||
int des_read_password();
|
||||
int des_read_2passwords();
|
||||
int des_read_pw_string();
|
||||
void des_set_odd_parity();
|
||||
int des_is_weak_key();
|
||||
int des_set_key();
|
||||
int des_key_sched();
|
||||
int des_string_to_key();
|
||||
int des_string_to_2keys();
|
||||
int des_cfb64_encrypt();
|
||||
int des_ofb64_encrypt();
|
||||
void des_cblock_print_file();
|
||||
int des_new_random_key();
|
||||
void des_init_random_number_generator();
|
||||
void des_set_random_generator_seed();
|
||||
void des_set_sequence_number();
|
||||
void des_generate_random_block();
|
||||
#endif
|
||||
#endif
|
||||
Loaded 100 of 2844 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user