Compare commits
692 Commits
libssh2-1.
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6d553a7bb9 | ||
![]() |
da6676483b | ||
![]() |
ca5222ea81 | ||
![]() |
d453f4ce3c | ||
![]() |
1fcf849e15 | ||
![]() |
65a4528d17 | ||
![]() |
0ffb3bfafe | ||
![]() |
30221cfe5d | ||
![]() |
fb2840bc9c | ||
![]() |
78043ff25d | ||
![]() |
5eac3edda5 | ||
![]() |
298f056fd6 | ||
![]() |
652ae4d134 | ||
![]() |
996b04ecec | ||
![]() |
8d568d6c3b | ||
![]() |
ae484b426c | ||
![]() |
85dbd4c136 | ||
![]() |
d7e25b4729 | ||
![]() |
e12fe71462 | ||
![]() |
992de2fbfa | ||
![]() |
77c48d4e26 | ||
![]() |
0d60964632 | ||
![]() |
60874670ef | ||
![]() |
77d825ac93 | ||
![]() |
b60fb64b17 | ||
![]() |
0de1cba671 | ||
![]() |
2ddcaf2db8 | ||
![]() |
0f15724e72 | ||
![]() |
57692b6b10 | ||
![]() |
92a3ac4673 | ||
![]() |
72453b7367 | ||
![]() |
8b720f342f | ||
![]() |
e2985f0a67 | ||
![]() |
002db176b7 | ||
![]() |
7a37c33264 | ||
![]() |
914157804f | ||
![]() |
4c4d6a8da4 | ||
![]() |
c367e61294 | ||
![]() |
d900984b0a | ||
![]() |
4bd6d7ebf6 | ||
![]() |
dac4b3bac3 | ||
![]() |
7dcf5ed6fb | ||
![]() |
8ba6bf2aef | ||
![]() |
0fba5cfda6 | ||
![]() |
72bedfe761 | ||
![]() |
f915a31a4d | ||
![]() |
0fbf8f3c7e | ||
![]() |
e64260a117 | ||
![]() |
ed2c3c8d28 | ||
![]() |
73930e6577 | ||
![]() |
cf544d0f4c | ||
![]() |
d0ffeba72e | ||
![]() |
9bf32da607 | ||
![]() |
95dc2a6a52 | ||
![]() |
036196b0b0 | ||
![]() |
51dcded3eb | ||
![]() |
b83c3e056e | ||
![]() |
ad23faaae6 | ||
![]() |
d441da3086 | ||
![]() |
ad26fd92cf | ||
![]() |
4d97ed92b2 | ||
![]() |
fb432f3f78 | ||
![]() |
fc4a969a05 | ||
![]() |
92fff06e27 | ||
![]() |
a49f479b4c | ||
![]() |
6c84a426be | ||
![]() |
4961014033 | ||
![]() |
a53cebba34 | ||
![]() |
3768f8aeef | ||
![]() |
3acca4ad15 | ||
![]() |
026ec0e881 | ||
![]() |
a4d995af0d | ||
![]() |
9af7eb48dc | ||
![]() |
f4b5947d6d | ||
![]() |
36f6d23572 | ||
![]() |
af14462d53 | ||
![]() |
d48d7c3a87 | ||
![]() |
13f8addd1b | ||
![]() |
418be878ad | ||
![]() |
e9536edede | ||
![]() |
d754fee2f2 | ||
![]() |
6c14cc003a | ||
![]() |
cbd5f72339 | ||
![]() |
858930cae5 | ||
![]() |
08fa27b628 | ||
![]() |
4383a39d83 | ||
![]() |
09c5e59933 | ||
![]() |
5a88a86fef | ||
![]() |
0340d4586e | ||
![]() |
2d2744efdd | ||
![]() |
e113202098 | ||
![]() |
983ceafe58 | ||
![]() |
e160ba448e | ||
![]() |
b8289b625e | ||
![]() |
5f4c249e42 | ||
![]() |
6f95c2efd3 | ||
![]() |
31a5986c6d | ||
![]() |
22bd8d81d8 | ||
![]() |
3d3347c062 | ||
![]() |
2d59b41daa | ||
![]() |
1e7988cb0d | ||
![]() |
b99204f289 | ||
![]() |
7ca44fbd94 | ||
![]() |
41b1cb6751 | ||
![]() |
84590bc78f | ||
![]() |
864950cf16 | ||
![]() |
09a559433e | ||
![]() |
57dea4df6d | ||
![]() |
77020c7961 | ||
![]() |
e52f35d9f4 | ||
![]() |
a8d14c5dcf | ||
![]() |
0c90b8bd9b | ||
![]() |
3fc17cd69f | ||
![]() |
aa4e649d94 | ||
![]() |
49ea2be885 | ||
![]() |
247dfce5fb | ||
![]() |
71d45d3df1 | ||
![]() |
daa2dfa2db | ||
![]() |
1429ad749d | ||
![]() |
4078da8d81 | ||
![]() |
0930928810 | ||
![]() |
55d030089b | ||
![]() |
260410edf3 | ||
![]() |
1de36eb5b4 | ||
![]() |
aa7f9a85f7 | ||
![]() |
41d22ccf26 | ||
![]() |
56f7c0e2a4 | ||
![]() |
1329dc5155 | ||
![]() |
a1e744bb5e | ||
![]() |
14d9ee01bc | ||
![]() |
fed47c34e4 | ||
![]() |
18cfec8336 | ||
![]() |
74624c8ddf | ||
![]() |
bbbdf946a7 | ||
![]() |
042993b8eb | ||
![]() |
41ed2b71a2 | ||
![]() |
6bf8983368 | ||
![]() |
523a552258 | ||
![]() |
d73e0ec260 | ||
![]() |
1fa5fe6059 | ||
![]() |
8f00a7471d | ||
![]() |
fe3e23022b | ||
![]() |
33e1013d7b | ||
![]() |
20eb836f4e | ||
![]() |
6ada234c62 | ||
![]() |
e16f638dca | ||
![]() |
7d94b69b80 | ||
![]() |
8bb6cf7f95 | ||
![]() |
5fcbb168b8 | ||
![]() |
d811750645 | ||
![]() |
cfe94c715e | ||
![]() |
a8473c819b | ||
![]() |
c71889017f | ||
![]() |
253d5922f2 | ||
![]() |
79d63df12d | ||
![]() |
86552bf2bb | ||
![]() |
477e609a84 | ||
![]() |
3e47ca8a32 | ||
![]() |
6af0ee567b | ||
![]() |
c6d99bd3a4 | ||
![]() |
d1eccb487a | ||
![]() |
22204c4e2e | ||
![]() |
8670f5da24 | ||
![]() |
3835655f09 | ||
![]() |
dc199ed03a | ||
![]() |
8f799f98d9 | ||
![]() |
637c90959b | ||
![]() |
8a731d6217 | ||
![]() |
d85f9a689f | ||
![]() |
031566f9cc | ||
![]() |
977a3b6a76 | ||
![]() |
34dc1d61b4 | ||
![]() |
be95032e29 | ||
![]() |
c0bface8a7 | ||
![]() |
f31c9fb221 | ||
![]() |
f89bed9571 | ||
![]() |
bc9d735664 | ||
![]() |
06ff22f1a6 | ||
![]() |
e57f29f8f6 | ||
![]() |
1c1699545b | ||
![]() |
abcc0d370f | ||
![]() |
977dbb7511 | ||
![]() |
aedfba25b8 | ||
![]() |
19f1402f1d | ||
![]() |
df5c61dbca | ||
![]() |
1689315fce | ||
![]() |
7f7e65c54b | ||
![]() |
751e0087a8 | ||
![]() |
600f26ce6e | ||
![]() |
3260beb07a | ||
![]() |
01a6210ab7 | ||
![]() |
6a3b5487cb | ||
![]() |
e4ba5fabec | ||
![]() |
46f017e751 | ||
![]() |
12adbc28b8 | ||
![]() |
424a27e007 | ||
![]() |
1e4fb7ee9f | ||
![]() |
7b80a188dd | ||
![]() |
9d50d43a83 | ||
![]() |
c355d31ff9 | ||
![]() |
18fe507324 | ||
![]() |
d63e32dd30 | ||
![]() |
c32e82e97b | ||
![]() |
7d4b5a8e07 | ||
![]() |
200784c4e7 | ||
![]() |
b22b23703c | ||
![]() |
0e4e14109a | ||
![]() |
5bcc2d4629 | ||
![]() |
33df559967 | ||
![]() |
26f6d71885 | ||
![]() |
62c91e2cd4 | ||
![]() |
b9dc6112d7 | ||
![]() |
106bacdebc | ||
![]() |
23dec383f7 | ||
![]() |
fc94046e6e | ||
![]() |
ee547fe90d | ||
![]() |
a58b0dacb4 | ||
![]() |
6e710d7fb6 | ||
![]() |
b20bfeb3e5 | ||
![]() |
aba11380a1 | ||
![]() |
2c46c4bf95 | ||
![]() |
160776d218 | ||
![]() |
ee2d61a48b | ||
![]() |
fcb601da7b | ||
![]() |
55bae8dd07 | ||
![]() |
4440e05d48 | ||
![]() |
378d0a6676 | ||
![]() |
21cb7bfb36 | ||
![]() |
e1a5d1bc77 | ||
![]() |
189cf86df0 | ||
![]() |
30e376773a | ||
![]() |
38e210af0e | ||
![]() |
d145e04443 | ||
![]() |
feab568a7a | ||
![]() |
08973a00a1 | ||
![]() |
c00efa5f93 | ||
![]() |
adc5db29e3 | ||
![]() |
92d686fe19 | ||
![]() |
5559ad8fe1 | ||
![]() |
88366b5ec2 | ||
![]() |
61df22c460 | ||
![]() |
d808080daf | ||
![]() |
f5c1a0d98b | ||
![]() |
85a827d1bc | ||
![]() |
1b3307dda0 | ||
![]() |
85c6627c86 | ||
![]() |
c49cc8411f | ||
![]() |
fa15fded72 | ||
![]() |
c2329aa09e | ||
![]() |
94077f7a58 | ||
![]() |
55a8b10ad9 | ||
![]() |
27f9ac2549 | ||
![]() |
cdeef54967 | ||
![]() |
42aefdba79 | ||
![]() |
d41f5e40aa | ||
![]() |
2df6cd6606 | ||
![]() |
d512b25f69 | ||
![]() |
b4f71fd25a | ||
![]() |
a5bf809b80 | ||
![]() |
2157e178a3 | ||
![]() |
d385230e15 | ||
![]() |
61e40a32ff | ||
![]() |
e6c46cc249 | ||
![]() |
9f1b89e99b | ||
![]() |
8da30ea4d4 | ||
![]() |
ff6c01e959 | ||
![]() |
c910cd382d | ||
![]() |
edd42304a2 | ||
![]() |
1ad20ac7d3 | ||
![]() |
d7f9cd57c5 | ||
![]() |
16ef83dd81 | ||
![]() |
951904418b | ||
![]() |
80e5e20b00 | ||
![]() |
6e0d757f24 | ||
![]() |
a12f3ffab5 | ||
![]() |
486bb37621 | ||
![]() |
fe347a702f | ||
![]() |
07615610ba | ||
![]() |
5aa7b29758 | ||
![]() |
a67ff056e6 | ||
![]() |
f1cfa55b60 | ||
![]() |
437a3b75ec | ||
![]() |
a3ad635db4 | ||
![]() |
e5c5408564 | ||
![]() |
fe8f3deb48 | ||
![]() |
d49b8f303a | ||
![]() |
6f8777505f | ||
![]() |
52b8da7dfa | ||
![]() |
de7b5d3bc0 | ||
![]() |
b31e35aba6 | ||
![]() |
e2bb780d77 | ||
![]() |
a8cfc708c5 | ||
![]() |
9f6fd5af82 | ||
![]() |
5d567faecc | ||
![]() |
bfbb5a4dc7 | ||
![]() |
43b730ce56 | ||
![]() |
6af85b6053 | ||
![]() |
05641218bc | ||
![]() |
42fec44c8a | ||
![]() |
e470738a0c | ||
![]() |
62cc59cd06 | ||
![]() |
1abf2057de | ||
![]() |
6c27922ac1 | ||
![]() |
112845df0b | ||
![]() |
499b22ca36 | ||
![]() |
6403519fcf | ||
![]() |
6f8dd9baff | ||
![]() |
a1c0d97ff9 | ||
![]() |
5c065bf1ff | ||
![]() |
5237177daf | ||
![]() |
bd627d38a1 | ||
![]() |
c55b0b0425 | ||
![]() |
38efbe8243 | ||
![]() |
34ecc09a3c | ||
![]() |
d6cf1c7df0 | ||
![]() |
a40c160cff | ||
![]() |
29e256e817 | ||
![]() |
137342a41d | ||
![]() |
79a7ca3085 | ||
![]() |
50e37bdadc | ||
![]() |
04e79e0c79 | ||
![]() |
9a36065b52 | ||
![]() |
1ac7bd09cc | ||
![]() |
9a7311ba57 | ||
![]() |
e07b11b7df | ||
![]() |
e885300b18 | ||
![]() |
92a9f95279 | ||
![]() |
e91d4c9790 | ||
![]() |
69a3354467 | ||
![]() |
3ede6e280e | ||
![]() |
b583311a93 | ||
![]() |
27ac5aa40d | ||
![]() |
a123051200 | ||
![]() |
62901253a4 | ||
![]() |
7c5ee0fa66 | ||
![]() |
1e15075a8e | ||
![]() |
ad63fc2df6 | ||
![]() |
d46185eaa5 | ||
![]() |
9c4b380dd6 | ||
![]() |
e887a8bd0f | ||
![]() |
04692445d4 | ||
![]() |
a955f8428b | ||
![]() |
ededdfa9c2 | ||
![]() |
11f9dce3d7 | ||
![]() |
6bbebcf36c | ||
![]() |
7a87bba02a | ||
![]() |
c8374cdc10 | ||
![]() |
9b2bed22fc | ||
![]() |
c8cc30c996 | ||
![]() |
acd9bd6104 | ||
![]() |
2ea40e63e8 | ||
![]() |
f4f2298ef3 | ||
![]() |
cc4f9d5679 | ||
![]() |
fed0759720 | ||
![]() |
a46ef85a56 | ||
![]() |
626f91da07 | ||
![]() |
bf097e37b0 | ||
![]() |
a1c996cef1 | ||
![]() |
8fc16beda9 | ||
![]() |
9a42fac055 | ||
![]() |
7194a9bd7b | ||
![]() |
7e53949e66 | ||
![]() |
5672e8f4cf | ||
![]() |
4449905ea5 | ||
![]() |
8e0cddd01f | ||
![]() |
796a5195d3 | ||
![]() |
15aadb930d | ||
![]() |
f28264c6a3 | ||
![]() |
179d2197dd | ||
![]() |
aa8f2cbf33 | ||
![]() |
e07342443f | ||
![]() |
4774d500e7 | ||
![]() |
1403847429 | ||
![]() |
0d824e5702 | ||
![]() |
9836b0889f | ||
![]() |
e394987911 | ||
![]() |
e95c7de453 | ||
![]() |
effbb72192 | ||
![]() |
0ebe6f44bd | ||
![]() |
b3ade9a63e | ||
![]() |
388920cf3c | ||
![]() |
6bd584d293 | ||
![]() |
e68c895fc4 | ||
![]() |
511a972a95 | ||
![]() |
3401b374c9 | ||
![]() |
209de22299 | ||
![]() |
b8dd697796 | ||
![]() |
09139ef065 | ||
![]() |
d903b81c64 | ||
![]() |
4f61824908 | ||
![]() |
fed94fa85d | ||
![]() |
378311fe5b | ||
![]() |
139278b79f | ||
![]() |
a0e13cc828 | ||
![]() |
f4e5ca2f14 | ||
![]() |
c0974e5ca3 | ||
![]() |
c292378327 | ||
![]() |
ee07785a1e | ||
![]() |
24afd0fc72 | ||
![]() |
abd00727ef | ||
![]() |
4b77724b3b | ||
![]() |
33865b8936 | ||
![]() |
16dd675f4d | ||
![]() |
30e28817f2 | ||
![]() |
03ca902075 | ||
![]() |
7d58994571 | ||
![]() |
6d9d44a550 | ||
![]() |
d343e3405a | ||
![]() |
8d3709f57a | ||
![]() |
d2dc600be7 | ||
![]() |
0f9e81c6f3 | ||
![]() |
46792a9fca | ||
![]() |
b5cd8fe120 | ||
![]() |
8faefc0a8a | ||
![]() |
f9afe854d3 | ||
![]() |
26a9aca598 | ||
![]() |
bff91fe2a0 | ||
![]() |
e0e8d3b0b7 | ||
![]() |
52d24bc9d2 | ||
![]() |
e399a852b9 | ||
![]() |
3fb3ba571b | ||
![]() |
1f2c1f9e09 | ||
![]() |
c75ae587c0 | ||
![]() |
2e12cfaa23 | ||
![]() |
7ed53e21fd | ||
![]() |
7229d989e7 | ||
![]() |
f2c21f6f84 | ||
![]() |
a6ebc6f9fd | ||
![]() |
87f79f177f | ||
![]() |
30ac056cb0 | ||
![]() |
c45de9176b | ||
![]() |
ff40c58743 | ||
![]() |
10b66cef08 | ||
![]() |
81bdcf61f3 | ||
![]() |
50d451e307 | ||
![]() |
3f2b1dea5e | ||
![]() |
7c9b84d1d1 | ||
![]() |
1ba42ea847 | ||
![]() |
507d5f96cf | ||
![]() |
84d8728835 | ||
![]() |
296d57bb2c | ||
![]() |
9e79031ad7 | ||
![]() |
689fc5c596 | ||
![]() |
31a9e8860d | ||
![]() |
b26c3e7cce | ||
![]() |
e4eeb85f01 | ||
![]() |
7de77e94bf | ||
![]() |
8c0294db66 | ||
![]() |
900c90ccbe | ||
![]() |
d5eec4aad9 | ||
![]() |
19864f0f64 | ||
![]() |
420f0b7793 | ||
![]() |
7aa4bfc671 | ||
![]() |
462996b064 | ||
![]() |
07d7a85bdb | ||
![]() |
95d69d3a81 | ||
![]() |
2fe1770d9f | ||
![]() |
3c71ad4fce | ||
![]() |
79f48e4881 | ||
![]() |
49453c9ae2 | ||
![]() |
b232eeb598 | ||
![]() |
f922df9e1b | ||
![]() |
7e47bd6640 | ||
![]() |
4ae907cdef | ||
![]() |
01d199180a | ||
![]() |
7e18862eae | ||
![]() |
45ffdcfe3c | ||
![]() |
dadc05fdfd | ||
![]() |
733bf877f8 | ||
![]() |
2db7d9c655 | ||
![]() |
9a24b03402 | ||
![]() |
81d53de4dc | ||
![]() |
5b004a4b67 | ||
![]() |
da64618c9a | ||
![]() |
566894494b | ||
![]() |
0723dab4d7 | ||
![]() |
67ba8713a6 | ||
![]() |
dade304c47 | ||
![]() |
6e8229a221 | ||
![]() |
821fb6ca71 | ||
![]() |
59673a111e | ||
![]() |
5b66a5f38d | ||
![]() |
ce8f0b29a4 | ||
![]() |
26dad4590b | ||
![]() |
4ed1e9d96b | ||
![]() |
c5ec167881 | ||
![]() |
e652b4c7b8 | ||
![]() |
cc84d875eb | ||
![]() |
c01737e679 | ||
![]() |
4825171919 | ||
![]() |
d881e7e8ef | ||
![]() |
5dc5c80a39 | ||
![]() |
9f477073bc | ||
![]() |
78498e0588 | ||
![]() |
0b0aa209f6 | ||
![]() |
aa07cdee9a | ||
![]() |
274fb2169c | ||
![]() |
f0a37bdadc | ||
![]() |
1249dd2272 | ||
![]() |
5633bb4a3b | ||
![]() |
fabf1a45ee | ||
![]() |
2e352d3085 | ||
![]() |
8c9571b7ba | ||
![]() |
527c1b2def | ||
![]() |
ec934f6dab | ||
![]() |
516fa7fdd9 | ||
![]() |
3ce2628140 | ||
![]() |
ad88325b3f | ||
![]() |
2db4863e6e | ||
![]() |
691cabc048 | ||
![]() |
90b4b4073f | ||
![]() |
8ce9a66ccf | ||
![]() |
7015488150 | ||
![]() |
164838c7dd | ||
![]() |
f9b1b95059 | ||
![]() |
59207291fc | ||
![]() |
0da37e0924 | ||
![]() |
4552c73cd5 | ||
![]() |
306929ee80 | ||
![]() |
326f741a52 | ||
![]() |
aa4f861643 | ||
![]() |
fd691deb17 | ||
![]() |
20da09932e | ||
![]() |
3ab7af095a | ||
![]() |
5b1a7ec2f1 | ||
![]() |
5ee38702a0 | ||
![]() |
2165ceacd3 | ||
![]() |
121237ce2f | ||
![]() |
b3e832172b | ||
![]() |
3faa8bc940 | ||
![]() |
2f0c0cef76 | ||
![]() |
75909e05a9 | ||
![]() |
47b4e62780 | ||
![]() |
1b1ff333e4 | ||
![]() |
c1683ae92c | ||
![]() |
1b65c6ae26 | ||
![]() |
92ea3bda60 | ||
![]() |
811cce09b5 | ||
![]() |
6875285b71 | ||
![]() |
0cc14be09d | ||
![]() |
499b989d46 | ||
![]() |
fa07d9fefc | ||
![]() |
b0c32a85fc | ||
![]() |
7ed7dad3b4 | ||
![]() |
b215ec0af5 | ||
![]() |
ac6d0fb706 | ||
![]() |
e87293d480 | ||
![]() |
a3ce1073c4 | ||
![]() |
97a1881749 | ||
![]() |
80f7508d55 | ||
![]() |
e8c44e789f | ||
![]() |
ca2e81eb1f | ||
![]() |
aff9c825c8 | ||
![]() |
7899d28ecb | ||
![]() |
2f5a2ff8e6 | ||
![]() |
160453cee4 | ||
![]() |
82fa5d2167 | ||
![]() |
1c3e1c4d25 | ||
![]() |
1d2a5b8456 | ||
![]() |
1d11d02aa9 | ||
![]() |
f4ad3e0120 | ||
![]() |
772564650d | ||
![]() |
05ba8db8aa | ||
![]() |
1964ccb557 | ||
![]() |
bef0ce5392 | ||
![]() |
fb6afd01a1 | ||
![]() |
a302428335 | ||
![]() |
7ad152a6b2 | ||
![]() |
075ff19574 | ||
![]() |
16f46c1cfc | ||
![]() |
aa2fdb3e7e | ||
![]() |
8f10da89c5 | ||
![]() |
2dfa5d38cb | ||
![]() |
095e9e7b3e | ||
![]() |
588c8946fc | ||
![]() |
a6fc9aeec9 | ||
![]() |
7603c0f854 | ||
![]() |
8974dc05ae | ||
![]() |
6395a738fd | ||
![]() |
73be9fab04 | ||
![]() |
753e55ef23 | ||
![]() |
4760e4d051 | ||
![]() |
57af0da9f7 | ||
![]() |
024b5d29f5 | ||
![]() |
a0dd0c5992 | ||
![]() |
92d308c157 | ||
![]() |
4ae71b4838 | ||
![]() |
ba190d34c6 | ||
![]() |
b84f69c960 | ||
![]() |
a7aee34522 | ||
![]() |
1dc366109d | ||
![]() |
e1ea2eb7c2 | ||
![]() |
610a8ab919 | ||
![]() |
8ec21e0afe | ||
![]() |
8e0983347b | ||
![]() |
95db6cc62c | ||
![]() |
727043074a | ||
![]() |
5b4ed2717b | ||
![]() |
59f74de157 | ||
![]() |
d87562976a | ||
![]() |
a94886f157 | ||
![]() |
dec0ea9e70 | ||
![]() |
030b2d9b60 | ||
![]() |
c48840ba88 | ||
![]() |
d9cdd8c0a7 | ||
![]() |
c49061e708 | ||
![]() |
d674b1a09a | ||
![]() |
5ede32a826 | ||
![]() |
3a391f6cf2 | ||
![]() |
64063d5f0b | ||
![]() |
784db8e987 | ||
![]() |
84efbf788f | ||
![]() |
f805c2db2a | ||
![]() |
08ce6425f6 | ||
![]() |
fac9412a74 | ||
![]() |
4d15e0c9d1 | ||
![]() |
6140ec2de3 | ||
![]() |
70d6bd6c6f | ||
![]() |
98e38c4f3a | ||
![]() |
cd6d41b806 | ||
![]() |
c36f379b88 | ||
![]() |
77a9335515 | ||
![]() |
59636cc11e | ||
![]() |
0d58af6aec | ||
![]() |
c34e1d8735 | ||
![]() |
861fc75fa3 | ||
![]() |
f4d302fdfe | ||
![]() |
4faf67d3e9 | ||
![]() |
76a30f2c6f | ||
![]() |
bcd7eee1d2 | ||
![]() |
046ad88d88 | ||
![]() |
9887c01103 | ||
![]() |
822f9e8689 | ||
![]() |
3ee2aabd7a | ||
![]() |
7c49c8be58 | ||
![]() |
665d9ee885 | ||
![]() |
b3d6c6567d | ||
![]() |
7dd574c353 | ||
![]() |
018602cb34 | ||
![]() |
eec7f2fb63 | ||
![]() |
c32b0d164e | ||
![]() |
835c03e076 | ||
![]() |
6c6c43f92c | ||
![]() |
5af87e8c80 | ||
![]() |
10a65fda01 | ||
![]() |
8d9d3e0d7a | ||
![]() |
c46abb2663 | ||
![]() |
0a34fa79f0 | ||
![]() |
43001570d6 | ||
![]() |
4b878e7cf8 | ||
![]() |
ac709e0d4f | ||
![]() |
56d0877f07 | ||
![]() |
51a8335486 | ||
![]() |
2bd9418ac7 | ||
![]() |
4b8013a8a7 | ||
![]() |
697b4e8ed7 | ||
![]() |
2afa5b2dc2 | ||
![]() |
992aff7aca | ||
![]() |
ef4c8718c2 | ||
![]() |
c375e5e5ad | ||
![]() |
46be03f92b | ||
![]() |
1d83b520b4 | ||
![]() |
f9c0a4a95a | ||
![]() |
7861ae8e4e | ||
![]() |
0f0652a309 | ||
![]() |
2cc4a629ac | ||
![]() |
04f90b2265 | ||
![]() |
7dc2bfac94 | ||
![]() |
35cf08e130 | ||
![]() |
32bd0df992 | ||
![]() |
38940f45d2 | ||
![]() |
537a00ee4b | ||
![]() |
6ddcc493e8 | ||
![]() |
3496e1c2a2 | ||
![]() |
49ddf447ff | ||
![]() |
04d4bbb66b | ||
![]() |
897f8463d8 | ||
![]() |
2fd044fdf5 | ||
![]() |
20e969d2e0 | ||
![]() |
33e2bc8785 | ||
![]() |
d7e6f9cf27 | ||
![]() |
be7cee1b3e | ||
![]() |
518d25eba1 | ||
![]() |
1785d0d6f3 | ||
![]() |
31d71a94f2 | ||
![]() |
22a2de7347 | ||
![]() |
4cf935abab | ||
![]() |
cce6ebbee7 | ||
![]() |
18605cb81f | ||
![]() |
3490b3fe10 | ||
![]() |
c87a48ae4c | ||
![]() |
ab8ee8abf3 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -24,7 +24,6 @@ ltmain.sh
|
|||||||
missing
|
missing
|
||||||
ssh2_sample
|
ssh2_sample
|
||||||
libssh2-*.tar.gz
|
libssh2-*.tar.gz
|
||||||
INSTALL
|
|
||||||
install-sh
|
install-sh
|
||||||
*.o
|
*.o
|
||||||
*.lo
|
*.lo
|
||||||
@ -33,3 +32,4 @@ mkinstalldirs
|
|||||||
tags
|
tags
|
||||||
libssh2.pc
|
libssh2.pc
|
||||||
TAGS
|
TAGS
|
||||||
|
*~
|
||||||
|
75
.travis.yml
Normal file
75
.travis.yml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
language: c
|
||||||
|
|
||||||
|
compiler:
|
||||||
|
- gcc
|
||||||
|
- clang
|
||||||
|
|
||||||
|
env:
|
||||||
|
matrix:
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=64 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=OpenSSL BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=OFF
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=OFF ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
- ADDRESS_SIZE=32 CRYPTO_BACKEND=Libgcrypt BUILD_SHARED_LIBS=ON ENABLE_ZLIB_COMPRESSION=ON
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- sudo add-apt-repository --yes ppa:kalakris/cmake
|
||||||
|
- sudo apt-get update
|
||||||
|
- sudo apt-get -y install cmake
|
||||||
|
- if [ $ADDRESS_SIZE = '64' ]; then sudo apt-get install -y libgcrypt11-dev libssl-dev zlib1g-dev; fi
|
||||||
|
- if [ $ADDRESS_SIZE = '32' ]; then sudo apt-get install -y linux-libc-dev linux-libc-dev:i386; fi
|
||||||
|
- if [ $ADDRESS_SIZE = '32' ]; then sudo apt-get install -y gcc-multilib libgcrypt11-dev:i386 libssl-dev:i386 zlib1g-dev:i386; fi
|
||||||
|
- if [ $ADDRESS_SIZE = '32' ]; then export TOOLCHAIN_OPTION="-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-Linux-32.cmake"; fi
|
||||||
|
|
||||||
|
install:
|
||||||
|
- mkdir bin
|
||||||
|
- cd bin
|
||||||
|
|
||||||
|
script:
|
||||||
|
- cmake $TOOLCHAIN_OPTION -DCRYPTO_BACKEND=$CRYPTO_BACKEND -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DENABLE_ZLIB_COMPRESSION=$ENABLE_ZLIB_COMPRESSION .. && cmake --build . && CTEST_OUTPUT_ON_FAILURE=1 cmake --build . --target test && cmake --build . --target package
|
101
CMakeLists.txt
Normal file
101
CMakeLists.txt
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# Copyright (c) 2014, 2015 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 2.8.11)
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
|
project(libssh2 C)
|
||||||
|
set(PROJECT_URL "https://www.libssh2.org/")
|
||||||
|
set(PROJECT_DESCRIPTION "The SSH library")
|
||||||
|
|
||||||
|
option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
|
||||||
|
|
||||||
|
# Parse version
|
||||||
|
|
||||||
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/include/libssh2.h _HEADER_CONTENTS)
|
||||||
|
string(
|
||||||
|
REGEX REPLACE ".*#define LIBSSH2_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
|
||||||
|
LIBSSH2_VERSION "${_HEADER_CONTENTS}")
|
||||||
|
string(
|
||||||
|
REGEX REPLACE ".*#define LIBSSH2_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1"
|
||||||
|
LIBSSH2_VERSION_MAJOR "${_HEADER_CONTENTS}")
|
||||||
|
string(
|
||||||
|
REGEX REPLACE ".*#define LIBSSH2_VERSION_MINOR[ \t]+([0-9]+).*" "\\1"
|
||||||
|
LIBSSH2_VERSION_MINOR "${_HEADER_CONTENTS}")
|
||||||
|
string(
|
||||||
|
REGEX REPLACE ".*#define LIBSSH2_VERSION_PATCH[ \t]+([0-9]+).*" "\\1"
|
||||||
|
LIBSSH2_VERSION_PATCH "${_HEADER_CONTENTS}")
|
||||||
|
|
||||||
|
if(NOT LIBSSH2_VERSION OR
|
||||||
|
NOT LIBSSH2_VERSION_MAJOR MATCHES "^[0-9]+$" OR
|
||||||
|
NOT LIBSSH2_VERSION_MINOR MATCHES "^[0-9]+$" OR
|
||||||
|
NOT LIBSSH2_VERSION_PATCH MATCHES "^[0-9]+$")
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Unable to parse version from"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/libssh2.h")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
install(
|
||||||
|
FILES docs/AUTHORS COPYING docs/HACKING README RELEASE-NOTES NEWS
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
|
|
||||||
|
include(max_warnings)
|
||||||
|
include(FeatureSummary)
|
||||||
|
|
||||||
|
add_subdirectory(src)
|
||||||
|
|
||||||
|
option(BUILD_EXAMPLES "Build libssh2 examples" ON)
|
||||||
|
if(BUILD_EXAMPLES)
|
||||||
|
add_subdirectory(example)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_TESTING "Build libssh2 test suite" ON)
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(tests)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(docs)
|
||||||
|
|
||||||
|
feature_summary(WHAT ALL)
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_VERSION_MAJOR ${LIBSSH2_VERSION_MAJOR})
|
||||||
|
set(CPACK_PACKAGE_VERSION_MINOR ${LIBSSH2_VERSION_MINOR})
|
||||||
|
set(CPACK_PACKAGE_VERSION_PATCH ${LIBSSH2_VERSION_PATCH})
|
||||||
|
set(CPACK_PACKAGE_VERSION ${LIBSSH2_VERSION})
|
||||||
|
include(CPack)
|
2
COPYING
2
COPYING
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) 2005,2006 Mikhail Gusarov <dottedmag@dottedmag.net>
|
* Copyright (c) 2005,2006 Mikhail Gusarov <dottedmag@dottedmag.net>
|
||||||
* Copyright (c) 2006-2007 The Written Word, Inc.
|
* Copyright (c) 2006-2007 The Written Word, Inc.
|
||||||
* Copyright (c) 2007 Eli Fant <elifantu@mail.ru>
|
* Copyright (c) 2007 Eli Fant <elifantu@mail.ru>
|
||||||
* Copyright (c) 2009 Daniel Stenberg
|
* Copyright (c) 2009-2014 Daniel Stenberg
|
||||||
* Copyright (C) 2008, 2009 Simon Josefsson
|
* Copyright (C) 2008, 2009 Simon Josefsson
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
2
Makefile.OpenSSL.inc
Normal file
2
Makefile.OpenSSL.inc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
CRYPTO_CSOURCES = openssl.c
|
||||||
|
CRYPTO_HHEADERS = openssl.h
|
2
Makefile.WinCNG.inc
Normal file
2
Makefile.WinCNG.inc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
CRYPTO_CSOURCES = wincng.c
|
||||||
|
CRYPTO_HHEADERS = wincng.h
|
38
Makefile.am
38
Makefile.am
@ -1,6 +1,9 @@
|
|||||||
AUTOMAKE_OPTIONS = foreign nostdinc
|
AUTOMAKE_OPTIONS = foreign nostdinc
|
||||||
|
|
||||||
SUBDIRS = src example tests docs
|
SUBDIRS = src tests docs
|
||||||
|
if BUILD_EXAMPLES
|
||||||
|
SUBDIRS += example
|
||||||
|
endif
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = libssh2.pc
|
pkgconfig_DATA = libssh2.pc
|
||||||
@ -11,10 +14,9 @@ include_HEADERS = \
|
|||||||
include/libssh2_sftp.h
|
include/libssh2_sftp.h
|
||||||
|
|
||||||
NETWAREFILES = nw/keepscreen.c \
|
NETWAREFILES = nw/keepscreen.c \
|
||||||
nw/Makefile \
|
nw/nwlib.c \
|
||||||
nw/Makefile.netware \
|
nw/GNUmakefile \
|
||||||
nw/nwlib.c \
|
nw/test/GNUmakefile
|
||||||
nw/test/Makefile.netware
|
|
||||||
|
|
||||||
DSP = win32/libssh2.dsp
|
DSP = win32/libssh2.dsp
|
||||||
VCPROJ = win32/libssh2.vcproj
|
VCPROJ = win32/libssh2.vcproj
|
||||||
@ -25,14 +27,25 @@ VMSFILES = vms/libssh2_make_example.dcl vms/libssh2_make_help.dcl \
|
|||||||
vms/libssh2_make_kit.dcl vms/libssh2_make_lib.dcl vms/man2help.c \
|
vms/libssh2_make_kit.dcl vms/libssh2_make_lib.dcl vms/man2help.c \
|
||||||
vms/readme.vms vms/libssh2_config.h
|
vms/readme.vms vms/libssh2_config.h
|
||||||
|
|
||||||
|
WIN32FILES = win32/GNUmakefile win32/test/GNUmakefile \
|
||||||
|
win32/libssh2_config.h win32/config.mk win32/rules.mk \
|
||||||
|
win32/Makefile.Watcom win32/libssh2.dsw win32/tests.dsp $(DSP) \
|
||||||
|
win32/msvcproj.head win32/msvcproj.foot win32/libssh2.rc
|
||||||
|
|
||||||
WIN32FILES = win32/Makefile.win32 win32/libssh2.dsw \
|
OS400FILES = os400/README400 os400/initscript.sh os400/make.sh \
|
||||||
win32/config.mk win32/Makefile win32/test/Makefile.win32 \
|
os400/make-src.sh os400/make-rpg.sh os400/make-include.sh \
|
||||||
win32/libssh2_config.h win32/tests.dsp win32/rules.mk $(DSP) \
|
os400/os400sys.c os400/ccsid.c \
|
||||||
win32/msvcproj.head win32/msvcproj.foot
|
os400/libssh2_config.h os400/macros.h os400/libssh2_ccsid.h \
|
||||||
|
os400/include/alloca.h os400/include/sys/socket.h os400/include/stdio.h \
|
||||||
|
os400/libssh2rpg/libssh2.rpgle.in \
|
||||||
|
os400/libssh2rpg/libssh2_ccsid.rpgle.in \
|
||||||
|
os400/libssh2rpg/libssh2_publickey.rpgle \
|
||||||
|
os400/libssh2rpg/libssh2_sftp.rpgle \
|
||||||
|
Makefile.os400qc3.inc
|
||||||
|
|
||||||
EXTRA_DIST = $(WIN32FILES) buildconf $(NETWAREFILES) get_ver.awk HACKING \
|
EXTRA_DIST = $(WIN32FILES) buildconf $(NETWAREFILES) get_ver.awk \
|
||||||
maketgz NMakefile TODO RELEASE-NOTES libssh2.pc.in $(VMSFILES)
|
maketgz NMakefile RELEASE-NOTES libssh2.pc.in $(VMSFILES) config.rpath \
|
||||||
|
CMakeLists.txt cmake $(OS400FILES)
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
@ -74,6 +87,9 @@ gen-coverage:
|
|||||||
coverage: init-coverage build-coverage gen-coverage
|
coverage: init-coverage build-coverage gen-coverage
|
||||||
|
|
||||||
# DSP/VCPROJ generation adapted from libcurl
|
# DSP/VCPROJ generation adapted from libcurl
|
||||||
|
# only OpenSSL and WinCNG are supported with this build system
|
||||||
|
CRYPTO_CSOURCES = openssl.c wincng.c
|
||||||
|
CRYPTO_HHEADERS = openssl.h wincng.h
|
||||||
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
||||||
include Makefile.inc
|
include Makefile.inc
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
CSOURCES = channel.c comp.c crypt.c hostkey.c kex.c mac.c misc.c \
|
CSOURCES = channel.c comp.c crypt.c hostkey.c kex.c mac.c misc.c \
|
||||||
packet.c publickey.c scp.c session.c sftp.c userauth.c transport.c \
|
packet.c publickey.c scp.c session.c sftp.c userauth.c transport.c \
|
||||||
version.c knownhost.c agent.c openssl.c libgcrypt.c pem.c keepalive.c \
|
version.c knownhost.c agent.c $(CRYPTO_CSOURCES) pem.c keepalive.c global.c
|
||||||
global.c
|
|
||||||
|
|
||||||
HHEADERS = libssh2_priv.h openssl.h libgcrypt.h transport.h channel.h \
|
HHEADERS = libssh2_priv.h $(CRYPTO_HHEADERS) transport.h channel.h comp.h \
|
||||||
comp.h mac.h misc.h packet.h userauth.h session.h
|
mac.h misc.h packet.h userauth.h session.h sftp.h crypto.h
|
||||||
|
2
Makefile.libgcrypt.inc
Normal file
2
Makefile.libgcrypt.inc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
CRYPTO_CSOURCES = libgcrypt.c
|
||||||
|
CRYPTO_HHEADERS = libgcrypt.h
|
2
Makefile.os400qc3.inc
Normal file
2
Makefile.os400qc3.inc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
CRYPTO_CSOURCES = os400qc3.c
|
||||||
|
CRYPTO_HHEADERS = os400qc3.h
|
760
NEWS
760
NEWS
@ -1,759 +1,3 @@
|
|||||||
libssh2 1.2.6 (June 10, 2010)
|
The old NEWS file.
|
||||||
|
|
||||||
This release includes the following changes:
|
NEWS is now generated from git and put into the release tarballs.
|
||||||
|
|
||||||
o Added libssh2_sftp_statvfs() and libssh2_sftp_fstatvfs()
|
|
||||||
o Added libssh2_knownhost_checkp()
|
|
||||||
o Added libssh2_scp_send64()
|
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
|
||||||
|
|
||||||
o wait_socket: make c89 compliant and use two fd_sets for select()
|
|
||||||
o OpenSSL AES-128-CTR detection
|
|
||||||
o proper keyboard-interactive user dialog in the sftp.c example
|
|
||||||
o build procedure for VMS
|
|
||||||
o fixed libssh2.dsw to use the generated libssh2.dsp
|
|
||||||
o several Windows-related build fixes
|
|
||||||
o fail to init SFTP if session isn't already authenticated
|
|
||||||
o many tiny fixes that address clang-analyzer warnings
|
|
||||||
o sftp_open: deal with short channel_write calls
|
|
||||||
o libssh2_publickey_init: fixed to work better non-blocking
|
|
||||||
o sftp_close_handle: add precation to not access NULL pointer
|
|
||||||
o sftp_readdir: simplified and bugfixed
|
|
||||||
o channel_write: if data has been sent, don't return EAGAIN
|
|
||||||
|
|
||||||
Version 1.2.5 (April 13, 2010)
|
|
||||||
|
|
||||||
This release includes the following changes:
|
|
||||||
|
|
||||||
o Added Add keep-alive support: libssh2_keepalive_config() and
|
|
||||||
libssh2_keepalive_send()
|
|
||||||
o Added libssh2_knownhost_addc(), libssh2_init() and libssh2_exit()
|
|
||||||
o Added LIBSSH2_SFTP_S_IS***() macros
|
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
|
||||||
|
|
||||||
o fix memory leak in libssh2_session_startup()
|
|
||||||
o added missing error codes - shown as hangs in blocking mode
|
|
||||||
o fix memory leak in userauth_keyboard_interactive()
|
|
||||||
o libssh2_knownhost_del: fix write to freed memory
|
|
||||||
o Send and receive channel EOF before sending SSH_MSG_CHANNEL_CLOSE
|
|
||||||
o Use AES-CTR from OpenSSL when available
|
|
||||||
o Fixed gettimeofday to compile with Visual C++ 6
|
|
||||||
o NULL dereference when window adjusting a non-existing channel
|
|
||||||
o avoid using poll on interix and mac os x systems
|
|
||||||
o fix scp memory leak
|
|
||||||
o Correctly clear blocking flag after sending multipart packet
|
|
||||||
o Reduce used window sizes by factor 10
|
|
||||||
o libssh2_userauth_publickey_fromfile_ex() handles a NULL password
|
|
||||||
o sftp_init() deal with _libssh2_channel_write() short returns
|
|
||||||
|
|
||||||
o Use poll instead of select when available. By Paul Querna.
|
|
||||||
|
|
||||||
o Add APIs to have libssh2 automatically send keep-alive requests.
|
|
||||||
The APIs are libssh2_keepalive_config, and libssh2_keepalive_send.
|
|
||||||
By Simon Josefsson.
|
|
||||||
|
|
||||||
o Add global init/exit points, to do crypto initialization in one place.
|
|
||||||
The APIs are libssh2_init and libssh2_exit. By Lars Nordin.
|
|
||||||
|
|
||||||
* (February 15 2010) Daniel Stenberg:
|
|
||||||
- Added 46 new man pages for public convenience macros. The man pages are
|
|
||||||
just short redirects to the actual underlying function. The were all
|
|
||||||
initially created by a script.
|
|
||||||
|
|
||||||
- Committed the patch by Yoichi Iwaki in bug #2929647, which fixed a memory
|
|
||||||
leak when an 'outbuf' was still allocated when a session was freed.
|
|
||||||
|
|
||||||
Version 1.2.4 (February 13, 2010)
|
|
||||||
|
|
||||||
o Resolve compile issues on Solaris x64 and UltraSPARC
|
|
||||||
o Allow compiling with OpenSSL when AES isn't available
|
|
||||||
o Fix Tru64 socklen_t compile issue with example/direct_tcpip.c
|
|
||||||
|
|
||||||
Version 1.2.3 (February 3, 2010)
|
|
||||||
|
|
||||||
o Added libssh2_trace_sethandler()
|
|
||||||
o Added the direct_tcpip.c example
|
|
||||||
o Fixed memory leak in userauth_publickey
|
|
||||||
o Added support for authentication via SSH-Agent. By Daiki Ueno.
|
|
||||||
|
|
||||||
o Respond to unknown SSH_MSG_GLOBAL_REQUEST/SSH_MSG_CHANNEL_REQUEST
|
|
||||||
with SSH_MSG_REQUEST_FAILURE/SSH_MSG_CHANNEL_FAILURE in order to
|
|
||||||
make (at least) OpenSSH server keepalive work. Before OpenSSH
|
|
||||||
servers (configured with a positive ClientAliveInterval) would
|
|
||||||
terminate connections against libssh2 clients because libssh2 did
|
|
||||||
not respond properly to the request. By Simon Josefsson.
|
|
||||||
|
|
||||||
Version 1.2.2 (November 16, 2009)
|
|
||||||
|
|
||||||
* This release includes the following changes:
|
|
||||||
|
|
||||||
o Fix crash when server sends an invalid SSH_MSG_IGNORE message.
|
|
||||||
Reported by Bob Alexander <balexander@expressor-software.com> in
|
|
||||||
<http://thread.gmane.org/gmane.network.ssh.libssh2.devel/2530>.
|
|
||||||
By Simon Josefsson.
|
|
||||||
|
|
||||||
o Support for the "aes128-ctr", "aes192-ctr", "aes256-ctr" ciphers
|
|
||||||
as per RFC 4344 for libgcrypt and OpenSSL. They are now the
|
|
||||||
preferred ciphers. By Simon Josefsson.
|
|
||||||
|
|
||||||
o Support for the "arcfour128" cipher as per RFC 4345 for libgcrypt
|
|
||||||
and OpenSSL. It is preferred over the normal "arcfour" cipher
|
|
||||||
which is somewhat broken. By Simon Josefsson.
|
|
||||||
|
|
||||||
o Add support for GCC visibility features. By Cristian Rodríguez.
|
|
||||||
|
|
||||||
o Fix libssh2_channel_forward_accept. By Juzna.
|
|
||||||
|
|
||||||
o Generate Win32 files correctly. By Peter Stuge.
|
|
||||||
|
|
||||||
o Fix permission issue in ssh2 self test. By Dan Fandrich.
|
|
||||||
|
|
||||||
o Use memmove instead of memcpy in one place which copies
|
|
||||||
overlapping memory areas.
|
|
||||||
|
|
||||||
o Cleanup hard coding of cipher modes in libgcrypt backend. By Simon.
|
|
||||||
|
|
||||||
o Added man page for libssh2_knownhost_free. By Daniel.
|
|
||||||
|
|
||||||
Version 1.2.1 (September 28, 2009)
|
|
||||||
|
|
||||||
* This release includes the following changes:
|
|
||||||
|
|
||||||
o generate and install libssh2.pc
|
|
||||||
|
|
||||||
... and the following bugfixes:
|
|
||||||
|
|
||||||
o proper return codes returned from several functions
|
|
||||||
o return EAGAIN internal cleanup
|
|
||||||
o added knownhost.c to windows makefiles
|
|
||||||
o pass private-key to OpenSSL as a filename with BIO_new_file().
|
|
||||||
o make libssh2_scp_send/recv do blocking mode correctly
|
|
||||||
o libssh2_channel_wait_closed() could hang
|
|
||||||
o libssh2_channel_read_ex() must return 0 when closed
|
|
||||||
o added gettimeofday() function for win32 for the debug trace outputs
|
|
||||||
o transport layer bug causing invalid -39 (LIBSSH2_ERROR_BAD_USE) errors
|
|
||||||
o scp examples now loop correctly over libssh2_channel_write()
|
|
||||||
|
|
||||||
* (August 29 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
- I fixed all code to use the recently added dedicated linked list functions
|
|
||||||
instead of doing the same stuff spread out all over.
|
|
||||||
|
|
||||||
- I also fixed a few cases where local variables where used to keep memory
|
|
||||||
but was used to keep state for re-invokes due to non-blocking situations
|
|
||||||
which would lead to segfaults.
|
|
||||||
|
|
||||||
Version 1.2 (August 10, 2009)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
* (August 02 2009) Alexander Lamaison:
|
|
||||||
|
|
||||||
- changed _libssh2_rsa_new_private and _libssh2_rsa_new_private so that they
|
|
||||||
no longer use the OpenSSL functions that take a FILE* argument. Passing
|
|
||||||
CRT-created objects across a DLL boundary causes crashes on Windows of the
|
|
||||||
DLL and the client aren't linked to the exact same verison of the CRT. Now
|
|
||||||
we pass the keys as strings to avoid this issue.
|
|
||||||
|
|
||||||
* (May 29 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
- Updated the knownhost API and there are now 9 functions, and all of them
|
|
||||||
have man pages. The libssh2.h now defines HAVE_LIBSSH2_KNOWNHOST_API to
|
|
||||||
ease things for applications to check for the correct release before trying
|
|
||||||
to use it.
|
|
||||||
|
|
||||||
* (May 23 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
- Anonymous bug report #2795816 revealed that doing subsequent
|
|
||||||
libssh2_sftp_init() calls on the same session failed.
|
|
||||||
|
|
||||||
* (May 20 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
- made libssh2_sftp_write() properly deal with huge/any sized input buffers.
|
|
||||||
|
|
||||||
- fixed libssh2_channel_write_ex() to return the correct return code, and
|
|
||||||
deal with sending off huge buffers better
|
|
||||||
|
|
||||||
* (May 7 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
- linked list code. I got a bit tired of the fact that we don't have any
|
|
||||||
generic linked-list functions within libssh2 so I wrote up the first embryo
|
|
||||||
for one that I use for this new functionality. The plan would then be to
|
|
||||||
move all existing code that uses linked lists to use this new set.
|
|
||||||
|
|
||||||
- base64 encode. I had to add a base64 encoding function which was missing
|
|
||||||
in the code base so it helps to "bloat" my patch.
|
|
||||||
|
|
||||||
- The knownhost API is currently:
|
|
||||||
|
|
||||||
_init() - init a bundle of known hosts
|
|
||||||
_add() - add a known host
|
|
||||||
_del() - delete a known host
|
|
||||||
_free() - free an entire bundle of known hosts
|
|
||||||
_check() - check if a host+key is present in the bundle
|
|
||||||
|
|
||||||
The convenience function:
|
|
||||||
|
|
||||||
_parsefile() - reads a ~/.ssh/known_hosts file and add all entries to the
|
|
||||||
given bundle
|
|
||||||
|
|
||||||
- there's no docs other than some comments in the code/headers yet
|
|
||||||
|
|
||||||
- the patch includes changes to example/simple/ssh2_exec.c that makes use of
|
|
||||||
a few of these functions. Using that I've verified that the functions in
|
|
||||||
fact can verify my localhost's key agains my ~/.ssh/known_hosts file
|
|
||||||
|
|
||||||
* (Apr 30 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
Markus posted a bug report about a bad 0-return from libssh2_channel_read:
|
|
||||||
http://libssh2.haxx.se/mail/libssh2-devel-archive-2009-04/0076.shtml
|
|
||||||
|
|
||||||
And it was indeed a bad loop that terminated too early due to a receveived
|
|
||||||
close packet.
|
|
||||||
|
|
||||||
* (Apr 14 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
libssh2_poll() and libssh2_poll_channel_read() are now considered and
|
|
||||||
documented deprecated and they will be removed at next soname bump. It also
|
|
||||||
saves us from fixing some rather quirky bugs in libssh2_poll()...
|
|
||||||
|
|
||||||
|
|
||||||
Version 1.1 (April 2, 2009)
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
- (Mar 28 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
Jean-Louis Charton found a memory leak in
|
|
||||||
libssh2_userauth_hostbased_fromfile_ex()
|
|
||||||
|
|
||||||
- (Mar 25 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
* Renamed the functions in src/transport.c to be _libssh2_transport_ prefixed
|
|
||||||
and introduced a transport.h header.
|
|
||||||
|
|
||||||
* Fixed the blocking mode to only change behavior not the actual underlying
|
|
||||||
socket mode so we now always work with non-blocking sockets. This also
|
|
||||||
introduces a new rule of thumb in libssh2 code: we don't call the
|
|
||||||
external function calls internally. We use the internal (non-blocking)
|
|
||||||
ones!
|
|
||||||
|
|
||||||
* libssh2_channel_receive_window_adjust2 was added and
|
|
||||||
libssh2_channel_receive_window_adjust is now deprecated
|
|
||||||
|
|
||||||
* Introduced "local" header files with prototypes etc for different parts
|
|
||||||
instead of cramming everything into libssh2_priv.h. channel.h is the
|
|
||||||
first.
|
|
||||||
|
|
||||||
- (Mar 19 2009) Daniel Stenberg: based on a patch by "E L" we now use errno
|
|
||||||
properly after recv() and send() calls (that internally are now known as
|
|
||||||
_libssh2_recv() and _libssh2_send()) so that the API and more works fine on
|
|
||||||
windows too!
|
|
||||||
|
|
||||||
- (Mar 17 2009) Simon Josefsson:
|
|
||||||
|
|
||||||
Added a Libtool -export-symbols-regex flag to reduce the number of
|
|
||||||
exported symbols in shared libraries. Reported by Mikhail Gusarov.
|
|
||||||
|
|
||||||
- (Mar 16 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
I renamed a few man pages to match the exact name of the functions they
|
|
||||||
describe. I also added template versions for the 13 functions that
|
|
||||||
previously lacked man pages. While these don't contain any docs just yet, it
|
|
||||||
will now be easier to add the info as the foundation is there!
|
|
||||||
|
|
||||||
- (Mar 15 2009) Daniel Stenberg:
|
|
||||||
|
|
||||||
* libssh2_channel_read_ex() was simplified and enhanced. It now adjusts the
|
|
||||||
window less frequent and uses much larger window that now allows MUCH
|
|
||||||
faster transfers.
|
|
||||||
|
|
||||||
* SCP send/recv now allow file names with whitespaces etc, thanks to a patch
|
|
||||||
by Heiner Steven
|
|
||||||
|
|
||||||
- (Mar 13 2009) Daniel Stenberg: Cleanups, that do seem to have boosted SFTP
|
|
||||||
download performance up to 300% in some tests:
|
|
||||||
|
|
||||||
* cut off "_ex" from several internal function names
|
|
||||||
|
|
||||||
* corrected some log outputs
|
|
||||||
|
|
||||||
* simplified libssh2_channel_read_ex() and made it much faster in the process
|
|
||||||
|
|
||||||
* cut out {{{ and }}} comments that were incorrect anyway
|
|
||||||
|
|
||||||
* fixed sftp_packet_ask() to return the correct packet by using memcmp() and
|
|
||||||
not strncmp()
|
|
||||||
|
|
||||||
* fixed mkdir()'s wait for packet to use the correct request_id - it
|
|
||||||
semi-worked previously because strncmp() in sftp_packet_ask() made it
|
|
||||||
match far too easily.
|
|
||||||
|
|
||||||
* took away the polling functionality from sftp_packet_ask() since it wasn't
|
|
||||||
used
|
|
||||||
|
|
||||||
- (Mar 7 2009) Olivier Hervieu pointed out a flaw in the
|
|
||||||
libssh2_channel_x11_req_ex() function that made it produce a crappy random
|
|
||||||
chunk of data. Peter Stuge improved the fix to not do out-of-boundary
|
|
||||||
writes. I (Daniel Stenberg) replaced the snprintf() with a plain sprintf()
|
|
||||||
since the size argument wasn't adding anything anyway.
|
|
||||||
|
|
||||||
- (Feb 23 2009) Added libssh2_version()
|
|
||||||
|
|
||||||
- (Feb 20 2009) libssh2_channel_direct_tcpip_ex() bug #1902169 fixed, which
|
|
||||||
caused it to fail when called a second time.
|
|
||||||
|
|
||||||
- (Feb 12 2009) Romain Bondue extended Markus Moeller fix from Feb 8, based on
|
|
||||||
a previous (uncommitted) patch by Erik Brossler. It improves
|
|
||||||
libssh2_channel_write_ex in blocking situations when the socket is set non-
|
|
||||||
blocking.
|
|
||||||
|
|
||||||
- (Feb 8 2009) Markus Moeller fixed a flaw in libssh2_channel_write_ex() that
|
|
||||||
would occur on EAGAIN situations.
|
|
||||||
|
|
||||||
Version 1.0 (December 26 2008)
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
- (Dec 20 2008) Based on Alexander Lamaison's patch, there's now a new
|
|
||||||
function called libssh2_sftp_tell64() that returns the 64 bit file offset,
|
|
||||||
as the existing libssh2_sftp_tell() only returns a size_t.
|
|
||||||
|
|
||||||
- (Dec 18 2008) Markus Moeller fixed the issue also reported by Alexander
|
|
||||||
Lamaison which caused SFTP reads with large buffers to fail.
|
|
||||||
|
|
||||||
- Several flaws were fixed that prevented at least SFTP to work reliably
|
|
||||||
|
|
||||||
- Vlad Grachov brought the new function called
|
|
||||||
libssh2_session_block_directions() which returns a bitmask for what
|
|
||||||
directions the connection blocks. It is to be used applications that use
|
|
||||||
non-blocking sockets and when a libssh2 function returns
|
|
||||||
LIBSSH2_ERROR_EAGAIN this function can be used to figure out in which
|
|
||||||
direction the socket would block and thus it can wait for the socket to
|
|
||||||
again be ready for communication in that direction before it calls libssh2
|
|
||||||
again.
|
|
||||||
|
|
||||||
- Vincent Jaulin brought the new libssh2_channel_request_pty_size_ex()
|
|
||||||
function.
|
|
||||||
|
|
||||||
- Carlo Bramini fixed the build for msys+mingw. Bug #1943976.
|
|
||||||
|
|
||||||
- Neil Gierman provided improved Visual Studio 2008 code in bug #1946268
|
|
||||||
|
|
||||||
- Bug #1862727 fixed libssh2_poll() to work on windows (by defining
|
|
||||||
HAVE_SELECT).
|
|
||||||
|
|
||||||
- Based on bug #1815692, we introduce libssh2_sftp_seek64() that allows
|
|
||||||
seeking beyond the 2GB margin even on 32bit machines.
|
|
||||||
|
|
||||||
- Based on a patch in bug #1878059 by Steven Ayre libssh2 now parses >2GB file
|
|
||||||
sizes when downloading SCP files.
|
|
||||||
|
|
||||||
- Bug #2064371 pointed out that the SSH2 banner may not use dash
|
|
||||||
('-'). Reported by Bjorn Stenborg.
|
|
||||||
|
|
||||||
- Sean Peterson fixed a key re-exchange bug:
|
|
||||||
http://daniel.haxx.se/projects/libssh2/mail/libssh2-devel-archive-2008-06/0002.shtml
|
|
||||||
|
|
||||||
- Mike Protts filed the bug report #1908724 that identified and fixed a problem
|
|
||||||
with SFTP stat on files >4GB in size. Previously it used 32bit math only.
|
|
||||||
|
|
||||||
- Removed a stderr debug message that was accidentally left in (bug #1863153)
|
|
||||||
|
|
||||||
- OpenSSL and libz detection changed to make cross-compiling to Mingw
|
|
||||||
work. See README for parameters to use if the auto-detection does
|
|
||||||
not work for you. From Simon Josefsson.
|
|
||||||
|
|
||||||
- Simon Josefsson added a self-test that uses libssh2 to connect to a
|
|
||||||
local sshd (only enabled if if OpenSSH is installed).
|
|
||||||
|
|
||||||
Version 0.18 (November 11 2007)
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
- Various changes that improve non-blocking operations and prevent stalls.
|
|
||||||
Especially noticable on Windows since libssh2 just didn't work properly
|
|
||||||
non-blocking on Windows before.
|
|
||||||
|
|
||||||
- Peter O'Gorman reported how a SCP transfer would hang for him, and it was
|
|
||||||
fairly easy reproducable. One bug was in the transport layer, ignoring to
|
|
||||||
read more data while there was data left even though it couldn't decrypt the
|
|
||||||
data that was left due to it being too little... The other bug was in the
|
|
||||||
channel layer, where the libssh2_channel_receive_window_adjust() function
|
|
||||||
missed to set the state variables at times and thus this function would
|
|
||||||
misbehave on repeated invokes.
|
|
||||||
|
|
||||||
- Changed the signature of libssh2_channel_setenv_ex to add const to the
|
|
||||||
"varname" parameter (Dan Fandrich)
|
|
||||||
|
|
||||||
- Satish Mittal and David J Sullivan fixed an infinit recv() loop in
|
|
||||||
libssh2_banner_receive()
|
|
||||||
|
|
||||||
Version 0.17 (August 6 2007)
|
|
||||||
----------------------------
|
|
||||||
Changes since previous version include:
|
|
||||||
|
|
||||||
o Re-indented the source code with this GNU indent setup:
|
|
||||||
|
|
||||||
--braces-on-if-line
|
|
||||||
--braces-after-struct-decl-line
|
|
||||||
--space-after-cast
|
|
||||||
--line-length 79
|
|
||||||
--comment-line-length 79
|
|
||||||
--cuddle-else
|
|
||||||
--no-tabs
|
|
||||||
--tab-size 8
|
|
||||||
--indent-level 4
|
|
||||||
--no-space-after-for
|
|
||||||
--space-after-if
|
|
||||||
--space-after-while
|
|
||||||
--no-space-after-function-call-names
|
|
||||||
|
|
||||||
Version 0.16 (August 6 2007)
|
|
||||||
----------------------------
|
|
||||||
Changes since previous version include:
|
|
||||||
|
|
||||||
o CRLF stripping fix for PEM reading
|
|
||||||
o libssh2_scp_recv() error message fix
|
|
||||||
o added HACKING as an initial attempt to describe our source code format
|
|
||||||
o new public defines in include/libssh2.h to allow applictions to figure out
|
|
||||||
version number etc
|
|
||||||
o new script (maketgz) to build releases with
|
|
||||||
o updated files for building with MSVC and mingw
|
|
||||||
o keyboard-interactive would always fail due to claimed memory problem
|
|
||||||
o a few minor memory leaks fixed
|
|
||||||
o libssh2_poll() no longer relies on C99 features
|
|
||||||
o AIX 4 and 5 now supports non-blocking sockets
|
|
||||||
o large file magic checks in configure
|
|
||||||
o LIBSSH2_APINO was removed from the public header file
|
|
||||||
|
|
||||||
This release would not have been possible without these friendly contributors:
|
|
||||||
|
|
||||||
James Housley, Simon Josefsson, Dan Fandrich, Guenter Knauf and I too did
|
|
||||||
some poking. (Sorry if I forgot anyone I should've mentioned here.)
|
|
||||||
|
|
||||||
Of course we would have nothing without the great work by Sara Golemon that
|
|
||||||
we're extending and building upon.
|
|
||||||
|
|
||||||
Version 0.15 (June 15 2007)
|
|
||||||
---------------------------
|
|
||||||
Added libssh2_sftp_readdir_ex() and updated LIBSSH2_APINO to
|
|
||||||
200706151200 (James Housley)
|
|
||||||
|
|
||||||
Converted all of the libssh2 code to be able to work in non-blocking
|
|
||||||
mode. This included some public API changes, listed below (James Housley)
|
|
||||||
Changed function return values:
|
|
||||||
int libssh2_session_free()
|
|
||||||
int libssh2_publickey_shutdown()
|
|
||||||
ssize_t libssh2_channel_read_ex()
|
|
||||||
ssize_t libssh2_channel_write_ex()
|
|
||||||
|
|
||||||
Added functions:
|
|
||||||
libssh2_session_last_errno(), libssh2_channel_handle_extended_data2(),
|
|
||||||
libssh2_channel_wait_closed(), libssh2_channel_wait_eof(),
|
|
||||||
libssh2_session_set_blocking()
|
|
||||||
|
|
||||||
Removed functions:
|
|
||||||
libssh2_channel_readnb_ex(), libssh2_channel_writenb_ex(),
|
|
||||||
libssh2_sftp_readnb(), libssh2_sftp_writenb(),
|
|
||||||
libssh2_sftp_mkdirnb_ex()
|
|
||||||
|
|
||||||
Added the following functions for non-blocking operations: (Daniel Stenberg)
|
|
||||||
libssh2_channel_readnb_ex()
|
|
||||||
libssh2_channel_writenb_ex()
|
|
||||||
libssh2_sftp_readnb()
|
|
||||||
libssh2_sftp_writenb()
|
|
||||||
|
|
||||||
Size parameter changed from 'int' to 'unsigned int' in several
|
|
||||||
public APIs.
|
|
||||||
|
|
||||||
Added (a few) man pages in docs/. (Daniel Stenberg)
|
|
||||||
|
|
||||||
Maximum SSH packet size is now some 35000 bytes.
|
|
||||||
|
|
||||||
Private include files are now in src/ and only public headers are in
|
|
||||||
include/. (Daniel Stenberg)
|
|
||||||
|
|
||||||
Automake and libtool are being used (increased portability). (Daniel
|
|
||||||
Stenberg)
|
|
||||||
|
|
||||||
Fixed OpenSSL detection using pkg-config. (Daniel Stenberg)
|
|
||||||
|
|
||||||
Simple self test added to tests/. (Simon Josefsson)
|
|
||||||
|
|
||||||
Libgcrypt can now be used instead of OpenSSL if you specify
|
|
||||||
--with-libgcrypt. (Simon Josefsson)
|
|
||||||
|
|
||||||
Fixed a memory leak in the packet handling, and better handle out of
|
|
||||||
memory situations. (Dan Fandrich)
|
|
||||||
|
|
||||||
Made libssh2 build with OpenSSL 0.9.6. (Dan Fandrich)
|
|
||||||
|
|
||||||
Improved portability to Solaris related to -lsocket and
|
|
||||||
-lnsl. (Simon Josefsson)
|
|
||||||
|
|
||||||
Clean up of README, INSTALL, NEWS, added ChangeLog. (Simon
|
|
||||||
Josefsson)
|
|
||||||
|
|
||||||
Improve debugging code. Avoids many #ifdef's.
|
|
||||||
|
|
||||||
Improved session closing to avoid potentially truncated files on
|
|
||||||
OpenSSH servers (Dan Fandrich)
|
|
||||||
|
|
||||||
Made some function parameters in the API const (Dan Fandrich)
|
|
||||||
|
|
||||||
Version 0.14
|
|
||||||
------------
|
|
||||||
|
|
||||||
Plug leaks in EVP cipher init/shutdown. (Selcuk Gueney)
|
|
||||||
|
|
||||||
Allow socket_fd == 0 in libssh2_session_startup(). (puudeli)
|
|
||||||
|
|
||||||
Swap ordering of packet_add/packet-inspection to avoid inspect after
|
|
||||||
free. (Selcuk)
|
|
||||||
|
|
||||||
Swap KEX_INIT ordering, send our KEX_INIT first.
|
|
||||||
|
|
||||||
Add check for oportunistic KEX_INIT packets. Burn bad guess if necessary.
|
|
||||||
|
|
||||||
Fix OpenSSL detection using pkg-config. (Dan Casey)
|
|
||||||
|
|
||||||
Version 0.13
|
|
||||||
------------
|
|
||||||
|
|
||||||
Fixed channel not being marked closed when CHANNEL_CLOSE package cannot be
|
|
||||||
sent. (David Robins)
|
|
||||||
|
|
||||||
Fixed payload packet allocation bug when invalid packet length
|
|
||||||
received. (David Robins)
|
|
||||||
|
|
||||||
Fixed `make install' target for MacOSX.
|
|
||||||
|
|
||||||
Add terminating NULL character to readlink()/realpath() results.
|
|
||||||
|
|
||||||
BugFix#1436593: Apply build options for HPUX targets.
|
|
||||||
|
|
||||||
Version 0.12
|
|
||||||
------------
|
|
||||||
|
|
||||||
Added support for publickey subsytem (not the same as publickey auth).
|
|
||||||
|
|
||||||
Fix x11_req. Multiple packet_len issues and error handling logic.
|
|
||||||
(Thanks Simon Hart)
|
|
||||||
|
|
||||||
Fix generation of 'e' portion of Diffie-Hellman keyset.
|
|
||||||
|
|
||||||
Use appropriate order for BN_rand() rather than fixed group1-specific value.
|
|
||||||
|
|
||||||
Re-fixed libssh2_sftp_rename_ex()
|
|
||||||
|
|
||||||
Transport had right packet_len, but sftp layer still had extra 4 bytes.
|
|
||||||
|
|
||||||
Fixed build with newer OpenSSL headers.
|
|
||||||
|
|
||||||
Added extern "C" declarations to libssh2_sftp.h for C++ compatability.
|
|
||||||
|
|
||||||
Version 0.11
|
|
||||||
------------
|
|
||||||
|
|
||||||
Added libssh2_chnnale_get_exit_status() -- Mikhail
|
|
||||||
|
|
||||||
Added libssh2_channel_wait_closed() -- Mikhail
|
|
||||||
|
|
||||||
Added libssh2_userauth_keyboard_interactive_ex() -- Mikhail
|
|
||||||
|
|
||||||
Added libssh2_channel_receive_window_adjust() to be able to increase the
|
|
||||||
size of the receive window.
|
|
||||||
|
|
||||||
Added queueing for small window_adjust packets to avoid unnecessary packet
|
|
||||||
conversation.
|
|
||||||
|
|
||||||
Fixed libssh2_sftp_rename_ex() to only send flags parameter if version >= 5
|
|
||||||
negotiated (not currently possible, but will be and might as well keep the
|
|
||||||
API consistent).
|
|
||||||
|
|
||||||
Version 0.10
|
|
||||||
------------
|
|
||||||
|
|
||||||
Added developer debugging hooks. See --enable-debug-* options to ./configure
|
|
||||||
|
|
||||||
Ignore extended data in the SFTP layer. With no other mechanism to deal
|
|
||||||
with that data it'd just fill up and get stuck.
|
|
||||||
|
|
||||||
(Re)Fixed channel_write() to provide an opportunity for window space to
|
|
||||||
become available again.
|
|
||||||
|
|
||||||
(Re)Fixed SFTP INIT to send the correct SFTP packet length.
|
|
||||||
|
|
||||||
Fixed segfault when client and host can't agree on a hostkey/crypt/mac/comp
|
|
||||||
method. (Thanks puudeli)
|
|
||||||
|
|
||||||
Fixed major issue with sftp packet buffering mechanism. Using wrong
|
|
||||||
blocking semantics. (No puudeli, YOU the man)
|
|
||||||
|
|
||||||
Reduced busy-looping of libssh2_sftp_packet_requirev.
|
|
||||||
|
|
||||||
Version 0.9
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Changed blocking_read to only block as much as necessary and not an
|
|
||||||
arbitrary length of time. (Thanks Felix)
|
|
||||||
|
|
||||||
Fixed SFTP INIT/VERSION to exclude request_id and send correct maximum
|
|
||||||
version number.
|
|
||||||
|
|
||||||
Fixed SFTP to be properly BC with version 1 and 2 servers.
|
|
||||||
|
|
||||||
Fixed libssh2_poll() to recognized closed sessions/channels.
|
|
||||||
|
|
||||||
Fixed libssh2_channel_write_ex() to fully block when set to blocking mode.
|
|
||||||
Return actual bytes written as well. (Thanks deadem)
|
|
||||||
|
|
||||||
Added tests for -lm and -lsocket and add them when necessary.
|
|
||||||
|
|
||||||
Added libssh2_channel_window_read_ex() and libssh2_channel_window_write_ex()
|
|
||||||
for examining the ssh transport windowing states.
|
|
||||||
|
|
||||||
Version 0.8
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Fix potential segfault in compression/decompression.
|
|
||||||
|
|
||||||
Fix compatability with older versions of OpenSSL
|
|
||||||
|
|
||||||
Swapped order of none,zlib compression modes to prefer no compression by
|
|
||||||
default.
|
|
||||||
|
|
||||||
Added sys/uio.h for platforms (FBSD) which need it in order to define struct
|
|
||||||
iovec.
|
|
||||||
|
|
||||||
Added libssh2_poll() to check status of sockets/channels/listeners.
|
|
||||||
|
|
||||||
Removed unnecessary inclusion of stdio.h (holdover from debugging)
|
|
||||||
|
|
||||||
Version 0.7
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Added libssh2_userauth_hostbased_fromfile_ex() for authenticating from hostkey.
|
|
||||||
|
|
||||||
Added configure recognition for MacOSX (Darwin) (Thanks Gabe)
|
|
||||||
|
|
||||||
Fixed extended data identification in libssh2_channel_read().
|
|
||||||
|
|
||||||
Fixed window adjust code. Hadn't acknowledged adjustments correctly.
|
|
||||||
|
|
||||||
Removed initial_window_size requirement for sending window adjust packet.
|
|
||||||
|
|
||||||
|
|
||||||
Version 0.6
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Added LIBSSH2_FLAG_SIGPIPE to enable/disable SIGPIPE generated by
|
|
||||||
send()/recv() calls. Default off.
|
|
||||||
|
|
||||||
Added libssh2_session_flag() to set optional session flags.
|
|
||||||
|
|
||||||
Collapsed exchanging_keys/newkeys/authenticated flags into single state
|
|
||||||
attribute.
|
|
||||||
|
|
||||||
Fix zlib compression issue when internal buffer state misses partial sync.
|
|
||||||
|
|
||||||
Fix segfault when libssh2_session_methods() is called prior to
|
|
||||||
session_startup().
|
|
||||||
|
|
||||||
Fixed client to server channel windowing. Pervent send queue overruns.
|
|
||||||
|
|
||||||
Swapped banner send/receive order (send first, then wait for response).
|
|
||||||
|
|
||||||
Version 0.5
|
|
||||||
-----------
|
|
||||||
|
|
||||||
*** BC Break ***
|
|
||||||
Reimplemented libssh2_session_methods() to match
|
|
||||||
libssh2_session_method_pref() style
|
|
||||||
|
|
||||||
Fixed libssh2_attr2bin() (effects any setstat style call).
|
|
||||||
|
|
||||||
Fixed authenticating with encrypted private key.
|
|
||||||
|
|
||||||
Fixed authenticating via ssh-dss public key.
|
|
||||||
|
|
||||||
Fixed KEX_INIT cookie and packet padding to use actual random data
|
|
||||||
|
|
||||||
Added DESTDIR support to makefiles (Adam Go³êbiowski -- I hope that
|
|
||||||
character set translates right)
|
|
||||||
|
|
||||||
Added libssh2_channel_forward_listen_ex(), libssh2_channel_forward_cancel(),
|
|
||||||
and libssh2_channel_forward_accept().
|
|
||||||
|
|
||||||
Added ./configure option '--disable-gex-new' to allow using the older
|
|
||||||
group-exchange format
|
|
||||||
|
|
||||||
Added MAC methods hmac-md5 and hmac-md5-96.
|
|
||||||
|
|
||||||
Version 0.4
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Fixed crash when trying to free sftp_dirhandle data from a filehandle struct.
|
|
||||||
|
|
||||||
Fixed leak in sftp_open_ex(), handle->handle not freed in handle_close().
|
|
||||||
|
|
||||||
Fixed leak in sftp_symlink_ex(), result for READLINK and REALPATH not freed unless there was an error.
|
|
||||||
|
|
||||||
Added libssh2_banner_set(), specify an arbitrary banner to send on introduction.
|
|
||||||
|
|
||||||
Version 0.3
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Fixed libssh2_channel_read_ex(). Packet loop initialized BEFORE transport polled for new packets (should have been after).
|
|
||||||
|
|
||||||
Fixed blocking issues in scp_send()/scp_recv().
|
|
||||||
|
|
||||||
Fixed degree of indirection in macerror callback.
|
|
||||||
|
|
||||||
Changed packet read mechanism to use a fixed buffer and avoid unnecessary alloc/free calls. (especially while non-block looping)
|
|
||||||
|
|
||||||
Added channel close callback.
|
|
||||||
|
|
||||||
Added SFTP support (Using its own header file: libssh2_sftp.h)
|
|
||||||
|
|
||||||
Version 0.2
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Changed extended data ignorance mechanism:
|
|
||||||
libssh2_channel_ignore_extended_data() changed to libssh2_channel_handle_extended_data()
|
|
||||||
Macro introduced for backward compatability during beta phase.
|
|
||||||
*** THE LIBSSH2_CHANNEL_IGNORE_EXTENDED_DATA() MACRO WILL BE REMOVED PRIOR TO 1.0 RELEASE ***
|
|
||||||
libssh2_channel_handle_extended_data() may be passed one of three "ignore_mode" constants
|
|
||||||
LIBSSH2_CHANNEL_EXTENDED_DATA_NONE Default behavior, queue ED packets and return them with read_ex
|
|
||||||
LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE Equivalent to libssh2_channel_ignore_extended_data()
|
|
||||||
IGNORE will implicitly flush the extended data stream(s)
|
|
||||||
LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE Calls to channel_read() will check both the standard data stream
|
|
||||||
and the extended data stream(s) for the first available packet
|
|
||||||
|
|
||||||
Changed libssh2_session_disconnect_ex() to return an error code when alloc fails
|
|
||||||
|
|
||||||
Added libssh2_channel_flush_ex() and basic macros: ..._flush() ..._flush_stderr()
|
|
||||||
flush_ex accepts either the streamid (0 for standard data, 1 for stderr) or one of the two following constants:
|
|
||||||
LIBSSH2_CHANNEL_FLUSH_ALL Flush all streams
|
|
||||||
LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA Flush all streams EXCEPT the standard data stream
|
|
||||||
|
|
||||||
Added libssh2_session_callback_set() for setting ignore/debug/disconnect/macerror callbacks
|
|
||||||
|
|
||||||
Added libssh2_session_method_pref() to selectively set methods and method preferences.
|
|
||||||
|
|
||||||
Added libssh2_session_methods() to determine what methods were negotiated.
|
|
||||||
|
|
||||||
Added libssh2_session_abstract() for retreiving &session->abstract
|
|
||||||
|
|
||||||
Added libssh2_session_last_error() for retreiving error codes/messages
|
|
||||||
|
|
||||||
Version 0.1
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Initial Release:
|
|
||||||
KEX methods: diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1
|
|
||||||
Hostkey methods: ssh-rsa, ssh-dss
|
|
||||||
Cipher methods: aes256-cbc, rijndael-cbc@lysator.liu.se, aes192-cbc, aes128-cbc, blowfish-cbc, arcfour, cast128-cbc, 3des-cbc, none*
|
|
||||||
Compression methods: zlib, none
|
|
||||||
MAC methods: hmac-sha1, hmac-sha1-96, hmac-ripemd160, hmac-ripemd160@openssh.com none*
|
|
||||||
*Cipher/MAC "none" is disabled by default for security purposes,
|
|
||||||
Use --enable-crypt-none and/or --enable-mac-none with ./configure to enable
|
|
||||||
|
30
NMakefile
30
NMakefile
@ -1,19 +1,33 @@
|
|||||||
!include "win32/config.mk"
|
!include "win32/config.mk"
|
||||||
|
|
||||||
|
!if "$(WITH_WINCNG)" == "1"
|
||||||
|
!include "Makefile.WinCNG.inc"
|
||||||
|
!else
|
||||||
|
!include "Makefile.OpenSSL.inc"
|
||||||
|
!endif
|
||||||
|
!include "Makefile.inc"
|
||||||
|
|
||||||
|
OBJECTS=$(CSOURCES:.c=.obj)
|
||||||
|
|
||||||
# SUBDIRS=src example
|
# SUBDIRS=src example
|
||||||
SUBDIRS=src
|
SUBDIRS=src
|
||||||
|
|
||||||
all-sub:
|
all-sub: win32\objects.mk
|
||||||
-for %D in ($(SUBDIRS)) do $(MAKE) /nologo /f %D/NMakefile BUILD=$(BUILD) SUBDIR=%D all-sub
|
-for %D in ($(SUBDIRS)) do $(MAKE) /nologo /f %D/NMakefile BUILD=$(BUILD) SUBDIR=%D all-sub
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rmdir /s/q $(TARGET)
|
-rmdir 2>NUL /s/q $(TARGET)
|
||||||
|
-del 2>NUL win32\objects.mk
|
||||||
|
|
||||||
real-clean: clean
|
real-clean vclean: clean
|
||||||
-del libssh2.dll
|
-del 2>NUL libssh2.dll
|
||||||
-del libssh2.exp
|
-del 2>NUL libssh2.exp
|
||||||
-del libssh2.ilk
|
-del 2>NUL libssh2.ilk
|
||||||
-del libssh2.lib
|
-del 2>NUL libssh2.lib
|
||||||
-del *.pdb
|
-del 2>NUL *.pdb
|
||||||
|
|
||||||
|
win32\objects.mk: Makefile.inc
|
||||||
|
@echo OBJECTS = \>$@
|
||||||
|
@for %O in ($(OBJECTS)) do @echo $$(INTDIR)\%O \>>$@
|
||||||
|
@echo $$(EOL)>>$@
|
||||||
|
|
||||||
|
90
README
90
README
@ -8,90 +8,12 @@ Web site: http://www.libssh2.org/
|
|||||||
|
|
||||||
Mailing list: http://cool.haxx.se/mailman/listinfo/libssh2-devel
|
Mailing list: http://cool.haxx.se/mailman/listinfo/libssh2-devel
|
||||||
|
|
||||||
Generic installation instructions are in INSTALL. Some ./configure
|
License: see COPYING
|
||||||
options deserve additional comments:
|
|
||||||
|
|
||||||
* --enable-crypt-none
|
Source code: https://github.com/libssh2/libssh2
|
||||||
|
|
||||||
The SSH2 Transport allows for unencrypted data
|
Web site source code: https://github.com/libssh2/www
|
||||||
transmission using the "none" cipher. Because this is
|
|
||||||
such a huge security hole, it is typically disabled on
|
|
||||||
SSH2 implementations and is disabled in libssh2 by
|
|
||||||
default as well.
|
|
||||||
|
|
||||||
Enabling this option will allow for "none" as a
|
Installation instructions are in:
|
||||||
negotiable method, however it still requires that the
|
- docs/INSTALL_CMAKE for CMake
|
||||||
method be advertized by the remote end and that no
|
- docs/INSTALL_AUTOTOOLS for Autotools
|
||||||
more-preferable methods are available.
|
|
||||||
|
|
||||||
* --enable-mac-none
|
|
||||||
|
|
||||||
The SSH2 Transport also allows implementations to
|
|
||||||
forego a message authentication code. While this is
|
|
||||||
less of a security risk than using a "none" cipher, it
|
|
||||||
is still not recommended as disabling MAC hashes
|
|
||||||
removes a layer of security.
|
|
||||||
|
|
||||||
Enabling this option will allow for "none" as a
|
|
||||||
negotiable method, however it still requires that the
|
|
||||||
method be advertized by the remote end and that no
|
|
||||||
more-preferable methods are available.
|
|
||||||
|
|
||||||
* --disable-gex-new
|
|
||||||
|
|
||||||
The diffie-hellman-group-exchange-sha1 (dh-gex) key
|
|
||||||
exchange method originally defined an exchange
|
|
||||||
negotiation using packet type 30 to request a
|
|
||||||
generation pair based on a single target value. Later
|
|
||||||
refinement of dh-gex provided for range and target
|
|
||||||
values. By default libssh2 will use the newer range
|
|
||||||
method.
|
|
||||||
|
|
||||||
If you experience trouble connecting to an old SSH
|
|
||||||
server using dh-gex, try this option to fallback on
|
|
||||||
the older more reliable method.
|
|
||||||
|
|
||||||
* --with-libgcrypt
|
|
||||||
* --without-libgcrypt
|
|
||||||
* --with-libgcrypt-prefix=DIR
|
|
||||||
|
|
||||||
libssh2 can use the Libgcrypt library
|
|
||||||
(http://www.gnupg.org/) for cryptographic operations.
|
|
||||||
Either Libgcrypt or OpenSSL is required.
|
|
||||||
|
|
||||||
Configure will attempt to locate Libgcrypt
|
|
||||||
automatically.
|
|
||||||
|
|
||||||
If your installation of Libgcrypt is in another
|
|
||||||
location, specify it using --with-libgcrypt-prefix.
|
|
||||||
|
|
||||||
* --with-openssl
|
|
||||||
* --without-openssl
|
|
||||||
* --with-libssl-prefix=[DIR]
|
|
||||||
|
|
||||||
libssh2 can use the OpenSSL library
|
|
||||||
(http://www.openssl.org) for cryptographic operations.
|
|
||||||
Either Libgcrypt or OpenSSL is required.
|
|
||||||
|
|
||||||
Configure will attempt to locate OpenSSL in the
|
|
||||||
default location.
|
|
||||||
|
|
||||||
If your installation of OpenSSL is in another
|
|
||||||
location, specify it using --with-libssl-prefix.
|
|
||||||
|
|
||||||
* --with-libz
|
|
||||||
* --without-libz
|
|
||||||
* --with-libz-prefix=[DIR]
|
|
||||||
|
|
||||||
If present, libssh2 will attempt to use the zlib
|
|
||||||
(http://www.zlib.org) for payload compression, however
|
|
||||||
zlib is not required.
|
|
||||||
|
|
||||||
If your installation of Libz is in another location,
|
|
||||||
specify it using --with-libz-prefix.
|
|
||||||
|
|
||||||
* --enable-debug
|
|
||||||
|
|
||||||
Will make the build use more pedantic and strict compiler
|
|
||||||
options as well as enable the libssh2_trace() function (for
|
|
||||||
showing debug traces).
|
|
||||||
|
@ -1,32 +1,56 @@
|
|||||||
libssh2 1.2.6
|
libssh2 1.7.0
|
||||||
|
|
||||||
This release includes the following changes:
|
This release includes the following changes:
|
||||||
|
|
||||||
o Added libssh2_sftp_statvfs() and libssh2_sftp_fstatvfs()
|
o libssh2_session_set_last_error: Add function
|
||||||
o Added libssh2_knownhost_checkp()
|
o mac: Add support for HMAC-SHA-256 and HMAC-SHA-512
|
||||||
o Added libssh2_scp_send64()
|
o WinCNG: support for SHA256/512 HMAC
|
||||||
|
o kex: Added diffie-hellman-group-exchange-sha256 support
|
||||||
|
o OS/400 crypto library QC3 support
|
||||||
|
|
||||||
|
This release includes the following security advisory:
|
||||||
|
|
||||||
|
o diffie_hellman_sha256: convert bytes to bits
|
||||||
|
CVE-2016-0787: http://www.libssh2.org/adv_20160223.html
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
o wait_socket: make c89 compliant and use two fd_sets for select()
|
o SFTP: Increase speed and datasize in SFTP read
|
||||||
o OpenSSL AES-128-CTR detection
|
o openssl: make libssh2_sha1 return error code
|
||||||
o proper keyboard-interactive user dialog in the sftp.c example
|
o openssl: fix memleak in _libssh2_dsa_sha1_verify()
|
||||||
o build procedure for VMS
|
o cmake: include CMake files in the release tarballs
|
||||||
o fixed libssh2.dsw to use the generated libssh2.dsp
|
o Fix builds with Visual Studio 2015
|
||||||
o several Windows-related build fixes
|
o hostkey.c: Fix compiling error when OPENSSL_NO_MD5 is defined
|
||||||
o fail to init SFTP if session isn't already authenticated
|
o GNUmakefile: add support for LIBSSH2_LDFLAG_EXTRAS
|
||||||
o many tiny fixes that address clang-analyzer warnings
|
o GNUmakefile: add -m64 CFLAGS when targeting mingw64
|
||||||
o sftp_open: deal with short channel_write calls
|
o kex: free server host key before allocating it (again)
|
||||||
o libssh2_publickey_init: fixed to work better non-blocking
|
o SCP: add libssh2_scp_recv2 to support large (> 2GB) files on windows
|
||||||
o sftp_close_handle: add precation to not access NULL pointer
|
o channel: Detect bad usage of libssh2_channel_process_startup
|
||||||
o sftp_readdir: simplified and bugfixed
|
o userauth: Fix off by one error when reading public key file
|
||||||
o channel_write: if data has been sent, don't return EAGAIN
|
o kex: removed dupe entry from libssh2_kex_methods
|
||||||
|
o _libssh2_error: Support allocating the error message
|
||||||
|
o hostkey: fix invalid memory access if libssh2_dsa_new fails
|
||||||
|
o hostkey: align code path of ssh_rsa_init to ssh_dss_init
|
||||||
|
o libssh2.pc.in: fix the output of pkg-config --libs
|
||||||
|
o wincng: fixed possible memory leak in _libssh2_wincng_hash
|
||||||
|
o wincng: fixed _libssh2_wincng_hash_final return value
|
||||||
|
o add OpenSSL 1.1.0-pre2 compatibility
|
||||||
|
o agent_disconnect_unix: unset the agent fd after closing it
|
||||||
|
o sftp: stop reading when buffer is full
|
||||||
|
o sftp: Send at least one read request before reading
|
||||||
|
o sftp: Don't return EAGAIN if data was written to buffer
|
||||||
|
o sftp: Check read packet file offset
|
||||||
|
o configure: build "silent" if possible
|
||||||
|
o openssl: add OpenSSL 1.1.0-pre3-dev compatibility
|
||||||
|
o GNUmakefile: list system libs after user libs
|
||||||
|
|
||||||
This release would not have looked like this without help, code, reports and
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
Alexander Lamaison, Guenter Knauf, Dan Fandrich, Grubsky Grigory,
|
Alexander Lamaison, Andreas Schneider, brian m. carlson, Daniel Stenberg,
|
||||||
Joey Degges, Jose Baars, Mikhail Gusarov, Peter Stuge, Simon Josefsson,
|
David Byron, Jakob Egger, Kamil Dudka, Marc Hoersken, Mizunashi Mana,
|
||||||
Daniel Stenberg
|
Patrick Monnerat, Paul Howarth, Salvador Fandino, Salvador Fandiño,
|
||||||
|
Salvador Fandiño, Viktor Szakats, Will Cosgrove,
|
||||||
|
(16 contributors)
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
60
TODO
60
TODO
@ -1,60 +0,0 @@
|
|||||||
Things TODO
|
|
||||||
===========
|
|
||||||
|
|
||||||
* make sure the windowing code adapts better to slow situations so that it
|
|
||||||
doesn't then use as much memory as today. Possibly by an app-controllable
|
|
||||||
"Window mode"?
|
|
||||||
|
|
||||||
* Introduce a function that can free data that is returned allocated from the
|
|
||||||
lib, like when libssh2_session_last_error() is asked to return the string
|
|
||||||
with 'want_buf' set to non-zero.
|
|
||||||
|
|
||||||
* Add more info to the man pages.
|
|
||||||
|
|
||||||
* Decrease the number of mallocs. Everywhere.
|
|
||||||
|
|
||||||
* Use SO_NOSIGPIPE for Mac OS/BSD systems where MSG_NOSIGNAL doesn't exist/work
|
|
||||||
|
|
||||||
* Extend the test suite to actually test lots of aspects of libssh2
|
|
||||||
|
|
||||||
* Fix all compiler warnings (some can't be done without API changes)
|
|
||||||
|
|
||||||
* Expose error messages sent by the server
|
|
||||||
|
|
||||||
At next SONAME bump
|
|
||||||
===================
|
|
||||||
|
|
||||||
* stop using #defined macros as part of the official API. The macros should
|
|
||||||
either be turned into real functions or discarded from the API.
|
|
||||||
|
|
||||||
* fix the parts of the API where object pointers and function pointers are
|
|
||||||
mixed like libssh2_session_callback_set()
|
|
||||||
|
|
||||||
* remove the following functions from the API/ABI
|
|
||||||
|
|
||||||
libssh2_base64_decode()
|
|
||||||
libssh2_session_flag()
|
|
||||||
libssh2_channel_handle_extended_data()
|
|
||||||
libssh2_channel_receive_window_adjust()
|
|
||||||
libssh2_poll()
|
|
||||||
libssh2_poll_channel_read()
|
|
||||||
|
|
||||||
* Rename a few function:
|
|
||||||
|
|
||||||
libssh2_hostkey_hash => libssh2_session_hostkey_hash
|
|
||||||
libssh2_banner_set => libssh2_session_banner_set
|
|
||||||
|
|
||||||
* change 'int' to 'libssh2_socket_t' in the public API for sockets.
|
|
||||||
|
|
||||||
* Use 'size_t' for string lengths in all functions.
|
|
||||||
|
|
||||||
* Add a comment field to struct libssh2_knownhost.
|
|
||||||
|
|
||||||
* remove the existing libssh2_knownhost_add() function and rename
|
|
||||||
libssh2_knownhost_addc to become the new libssh2_knownhost_add instead
|
|
||||||
|
|
||||||
* remove the existing libssh2_scp_send_ex() function and rename
|
|
||||||
libssh2_scp_send64 to become the new libssh2_scp_send instead.
|
|
||||||
|
|
||||||
* remove the existing libssh2_knownhost_check() functin and rename
|
|
||||||
libssh2_knownhost_checkp() to become the new libssh2_knownhost_check instead
|
|
84
appveyor.yml
Normal file
84
appveyor.yml
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
# Copyright (c) 2014, Ruslan Baratov
|
||||||
|
# Copyright (c) 2014, 2016 Alexander Lamaison
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright notice, this
|
||||||
|
# list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer in the documentation
|
||||||
|
# and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
os: Visual Studio 2015
|
||||||
|
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- GENERATOR: "Visual Studio 14 2015"
|
||||||
|
BUILD_SHARED_LIBS: ON
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 14 2015"
|
||||||
|
BUILD_SHARED_LIBS: OFF
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 12 2013"
|
||||||
|
BUILD_SHARED_LIBS: ON
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 12 2013"
|
||||||
|
BUILD_SHARED_LIBS: OFF
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 11 2012"
|
||||||
|
BUILD_SHARED_LIBS: ON
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 11 2012"
|
||||||
|
BUILD_SHARED_LIBS: OFF
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 10 2010"
|
||||||
|
BUILD_SHARED_LIBS: ON
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 10 2010"
|
||||||
|
BUILD_SHARED_LIBS: OFF
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 9 2008"
|
||||||
|
BUILD_SHARED_LIBS: ON
|
||||||
|
|
||||||
|
- GENERATOR: "Visual Studio 9 2008"
|
||||||
|
BUILD_SHARED_LIBS: OFF
|
||||||
|
|
||||||
|
platform:
|
||||||
|
- x86
|
||||||
|
- x64
|
||||||
|
|
||||||
|
configuration:
|
||||||
|
# - Debug
|
||||||
|
- Release
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- GENERATOR: "Visual Studio 9 2008"
|
||||||
|
platform: x64
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- ps: if($env:PLATFORM -eq "x64") { $env:CMAKE_GEN_SUFFIX=" Win64" }
|
||||||
|
- cmake "-G%GENERATOR%%CMAKE_GEN_SUFFIX%" -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -H. -B_builds
|
||||||
|
- cmake --build _builds --config "%CONFIGURATION%"
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
- ps: cd _builds
|
||||||
|
- ctest -VV -C "%CONFIGURATION%" -E ssh2 --output-on-failure
|
||||||
|
|
||||||
|
on_failure:
|
||||||
|
- ps: if (Test-Path _builds/CMakeFiles/CMakeOutput.log) { cat _builds/CMakeFiles/CMakeOutput.log }
|
||||||
|
- ps: if (Test-Path _builds/CMakeFiles/CMakeError.log) { cat _builds/CMakeFiles/CMakeError.log }
|
81
cmake/CheckFunctionExistsMayNeedLibrary.cmake
Normal file
81
cmake/CheckFunctionExistsMayNeedLibrary.cmake
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
|
# - check_function_exists_maybe_need_library(<function> <var> [lib1 ... libn])
|
||||||
|
#
|
||||||
|
# Check if function is available for linking, first without extra libraries, and
|
||||||
|
# then, if not found that way, linking in each optional library as well. This
|
||||||
|
# function is similar to autotools AC_SEARCH_LIBS.
|
||||||
|
#
|
||||||
|
# If the function if found, this will define <var>.
|
||||||
|
#
|
||||||
|
# If the function was only found by linking in an additional library, this
|
||||||
|
# will define NEED_LIB_LIBX, where LIBX is the one of lib1 to libn that
|
||||||
|
# makes the function available, in uppercase.
|
||||||
|
#
|
||||||
|
# The following variables may be set before calling this macro to
|
||||||
|
# modify the way the check is run:
|
||||||
|
#
|
||||||
|
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
|
||||||
|
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
|
||||||
|
# CMAKE_REQUIRED_INCLUDES = list of include directories
|
||||||
|
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
|
||||||
|
#
|
||||||
|
|
||||||
|
include(CheckFunctionExists)
|
||||||
|
include(CheckLibraryExists)
|
||||||
|
|
||||||
|
function(check_function_exists_may_need_library function variable)
|
||||||
|
|
||||||
|
check_function_exists(${function} ${variable})
|
||||||
|
|
||||||
|
if(NOT ${variable})
|
||||||
|
foreach(lib ${ARGN})
|
||||||
|
string(TOUPPER ${lib} UP_LIB)
|
||||||
|
# Use new variable to prevent cache from previous step shortcircuiting
|
||||||
|
# new test
|
||||||
|
check_library_exists(${lib} ${function} "" HAVE_${function}_IN_${lib})
|
||||||
|
if(HAVE_${function}_IN_${lib})
|
||||||
|
set(${variable} 1 CACHE INTERNAL
|
||||||
|
"Function ${function} found in library ${lib}")
|
||||||
|
set(NEED_LIB_${UP_LIB} 1 CACHE INTERNAL
|
||||||
|
"Need to link ${lib}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction()
|
119
cmake/CheckNonblockingSocketSupport.cmake
Normal file
119
cmake/CheckNonblockingSocketSupport.cmake
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
include(CheckCSourceCompiles)
|
||||||
|
|
||||||
|
# - check_nonblocking_socket_support()
|
||||||
|
#
|
||||||
|
# Check for how to set a socket to non-blocking state. There seems to exist
|
||||||
|
# four known different ways, with the one used almost everywhere being POSIX
|
||||||
|
# and XPG3, while the other different ways for different systems (old BSD,
|
||||||
|
# Windows and Amiga).
|
||||||
|
#
|
||||||
|
# One of the following variables will be set indicating the supported
|
||||||
|
# method (if any):
|
||||||
|
# HAVE_O_NONBLOCK
|
||||||
|
# HAVE_FIONBIO
|
||||||
|
# HAVE_IOCTLSOCKET
|
||||||
|
# HAVE_IOCTLSOCKET_CASE
|
||||||
|
# HAVE_SO_NONBLOCK
|
||||||
|
# HAVE_DISABLED_NONBLOCKING
|
||||||
|
#
|
||||||
|
# The following variables may be set before calling this macro to
|
||||||
|
# modify the way the check is run:
|
||||||
|
#
|
||||||
|
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
|
||||||
|
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
|
||||||
|
# CMAKE_REQUIRED_INCLUDES = list of include directories
|
||||||
|
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
|
||||||
|
#
|
||||||
|
macro(check_nonblocking_socket_support)
|
||||||
|
# There are two known platforms (AIX 3.x and SunOS 4.1.x) where the
|
||||||
|
# O_NONBLOCK define is found but does not work.
|
||||||
|
check_c_source_compiles("
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#if defined(sun) || defined(__sun__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
|
||||||
|
# if defined(__SVR4) || defined(__srv4__)
|
||||||
|
# define PLATFORM_SOLARIS
|
||||||
|
# else
|
||||||
|
# define PLATFORM_SUNOS4
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41)
|
||||||
|
# define PLATFORM_AIX_V3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)
|
||||||
|
#error \"O_NONBLOCK does not work on this platform\"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int socket;
|
||||||
|
int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK);
|
||||||
|
}"
|
||||||
|
HAVE_O_NONBLOCK)
|
||||||
|
|
||||||
|
if(NOT HAVE_O_NONBLOCK)
|
||||||
|
check_c_source_compiles("/* FIONBIO test (old-style unix) */
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stropts.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int socket;
|
||||||
|
int flags = ioctl(socket, FIONBIO, &flags);
|
||||||
|
}"
|
||||||
|
HAVE_FIONBIO)
|
||||||
|
|
||||||
|
if(NOT HAVE_FIONBIO)
|
||||||
|
check_c_source_compiles("/* ioctlsocket test (Windows) */
|
||||||
|
#undef inline
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <winsock2.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
SOCKET sd;
|
||||||
|
unsigned long flags = 0;
|
||||||
|
sd = socket(0, 0, 0);
|
||||||
|
ioctlsocket(sd, FIONBIO, &flags);
|
||||||
|
}"
|
||||||
|
HAVE_IOCTLSOCKET)
|
||||||
|
|
||||||
|
if(NOT HAVE_IOCTLSOCKET)
|
||||||
|
check_c_source_compiles("/* IoctlSocket test (Amiga?) */
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int socket;
|
||||||
|
int flags = IoctlSocket(socket, FIONBIO, (long)1);
|
||||||
|
}"
|
||||||
|
HAVE_IOCTLSOCKET_CASE)
|
||||||
|
|
||||||
|
if(NOT HAVE_IOCTLSOCKET_CASE)
|
||||||
|
check_c_source_compiles("/* SO_NONBLOCK test (BeOS) */
|
||||||
|
#include <socket.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
long b = 1;
|
||||||
|
int socket;
|
||||||
|
int flags = setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
|
||||||
|
}"
|
||||||
|
HAVE_SO_NONBLOCK)
|
||||||
|
|
||||||
|
if(NOT HAVE_SO_NONBLOCK)
|
||||||
|
# No non-blocking socket method found
|
||||||
|
set(HAVE_DISABLED_NONBLOCKING 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
72
cmake/CopyRuntimeDependencies.cmake
Normal file
72
cmake/CopyRuntimeDependencies.cmake
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
|
||||||
|
function(ADD_TARGET_TO_COPY_DEPENDENCIES)
|
||||||
|
set(options)
|
||||||
|
set(oneValueArgs TARGET)
|
||||||
|
set(multiValueArgs DEPENDENCIES BEFORE_TARGETS)
|
||||||
|
cmake_parse_arguments(COPY
|
||||||
|
"${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
|
if(NOT COPY_DEPENDENCIES)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Using a custom target to drive custom commands stops multiple
|
||||||
|
# parallel builds trying to kick off the commands at the same time
|
||||||
|
add_custom_target(${COPY_TARGET})
|
||||||
|
|
||||||
|
foreach(target ${COPY_BEFORE_TARGETS})
|
||||||
|
add_dependencies(${target} ${COPY_TARGET})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
foreach(dependency ${COPY_DEPENDENCIES})
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${COPY_TARGET}
|
||||||
|
DEPENDS ${dependency}
|
||||||
|
# Make directory first otherwise file is copied in place of
|
||||||
|
# directory instead of into it
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
ARGS -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
ARGS -E copy ${dependency} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
endfunction()
|
53
cmake/FindLibgcrypt.cmake
Normal file
53
cmake/FindLibgcrypt.cmake
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
# - Try to find Libgcrypt
|
||||||
|
# This will define all or none of:
|
||||||
|
# LIBGCRYPT_FOUND - if Libgcrypt headers and library was found
|
||||||
|
# LIBGCRYPT_INCLUDE_DIRS - The Libgcrypt include directories
|
||||||
|
# LIBGCRYPT_LIBRARIES - The libraries needed to use Libgcrypt
|
||||||
|
|
||||||
|
find_path(LIBGCRYPT_INCLUDE_DIR gcrypt.h)
|
||||||
|
|
||||||
|
find_library(LIBGCRYPT_LIBRARY NAMES gcrypt libgcrypt)
|
||||||
|
|
||||||
|
set(LIBGCRYPT_LIBRARIES ${LIBGCRYPT_LIBRARY})
|
||||||
|
set(LIBGCRYPT_INCLUDE_DIRS ${LIBGCRYPT_INCLUDE_DIR})
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Libgcrypt DEFAULT_MSG
|
||||||
|
LIBGCRYPT_LIBRARY LIBGCRYPT_INCLUDE_DIR)
|
||||||
|
|
||||||
|
mark_as_advanced(LIBGCRYPT_INCLUDE_DIR LIBGCRYPT_LIBRARY)
|
64
cmake/SocketLibraries.cmake
Normal file
64
cmake/SocketLibraries.cmake
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
# Some systems have their socket functions in a library.
|
||||||
|
# (Solaris -lsocket/-lnsl, Windows -lws2_32). This macro appends those
|
||||||
|
# libraries to the given list
|
||||||
|
macro(append_needed_socket_libraries LIBRARIES_LIST)
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
|
# x86 Windows uses STDCALL for these functions, so their names are mangled,
|
||||||
|
# meaning the platform checks don't work. Hardcoding these until we get
|
||||||
|
# a better solution.
|
||||||
|
set(HAVE_SOCKET 1)
|
||||||
|
set(HAVE_SELECT 1)
|
||||||
|
set(HAVE_INET_ADDR 1)
|
||||||
|
set(NEED_LIB_WS2_32 1)
|
||||||
|
else()
|
||||||
|
check_function_exists_may_need_library(socket HAVE_SOCKET socket ws2_32)
|
||||||
|
check_function_exists_may_need_library(select HAVE_SELECT ws2_32)
|
||||||
|
check_function_exists_may_need_library(inet_addr HAVE_INET_ADDR nsl ws2_32)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NEED_LIB_SOCKET)
|
||||||
|
list(APPEND ${LIBRARIES_LIST} socket)
|
||||||
|
endif()
|
||||||
|
if(NEED_LIB_NSL)
|
||||||
|
list(APPEND ${LIBRARIES_LIST} nsl)
|
||||||
|
endif()
|
||||||
|
if(NEED_LIB_WS2_32)
|
||||||
|
list(APPEND ${LIBRARIES_LIST} ws2_32)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endmacro()
|
42
cmake/Toolchain-Linux-32.cmake
Normal file
42
cmake/Toolchain-Linux-32.cmake
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
# Cross-compile 32-bit binary on 64-bit linux host
|
||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_VERSION 1)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR "i386")
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER_ARG1 "-m32")
|
||||||
|
set(CMAKE_C_COMPILER_ARG1 "-m32")
|
23
cmake/max_warnings.cmake
Normal file
23
cmake/max_warnings.cmake
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
if(MSVC)
|
||||||
|
# Use the highest warning level for visual studio.
|
||||||
|
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
||||||
|
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
|
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Disable broken warnings
|
||||||
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||||
|
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||||
|
endif()
|
||||||
|
if(NOT CMAKE_C_FLAGS MATCHES "-Wall")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||||
|
endif()
|
||||||
|
endif()
|
162
configure.ac
162
configure.ac
@ -2,8 +2,9 @@
|
|||||||
AC_INIT(libssh2, [-], libssh2-devel@cool.haxx.se)
|
AC_INIT(libssh2, [-], libssh2-devel@cool.haxx.se)
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AC_CONFIG_SRCDIR([src])
|
AC_CONFIG_SRCDIR([src])
|
||||||
AM_CONFIG_HEADER([src/libssh2_config.h example/libssh2_config.h])
|
AC_CONFIG_HEADERS([src/libssh2_config.h example/libssh2_config.h])
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
dnl SED is needed by some of the tools
|
dnl SED is needed by some of the tools
|
||||||
AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
|
AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
|
||||||
@ -15,12 +16,14 @@ if test "x$SED" = "xsed-was-not-found-by-configure"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dnl figure out the libssh2 version
|
dnl figure out the libssh2 version
|
||||||
VERSION=`$SED -ne 's/^#define LIBSSH2_VERSION *"\(.*\)"/\1/p' ${srcdir}/include/libssh2.h`
|
LIBSSH2VER=`$SED -ne 's/^#define LIBSSH2_VERSION *"\(.*\)"/\1/p' ${srcdir}/include/libssh2.h`
|
||||||
AM_INIT_AUTOMAKE(libssh2,$VERSION)
|
AM_INIT_AUTOMAKE
|
||||||
AC_MSG_CHECKING([libssh2 version])
|
AC_MSG_CHECKING([libssh2 version])
|
||||||
AC_MSG_RESULT($VERSION)
|
AC_MSG_RESULT($LIBSSH2VER)
|
||||||
|
|
||||||
AB_VERSION=$VERSION
|
AC_SUBST(LIBSSH2VER)
|
||||||
|
|
||||||
|
AB_VERSION=$LIBSSH2VER
|
||||||
|
|
||||||
AB_INIT
|
AB_INIT
|
||||||
|
|
||||||
@ -30,7 +33,7 @@ AB_INIT
|
|||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
case "$host" in
|
case "$host" in
|
||||||
*-mingw*)
|
*-mingw*)
|
||||||
CFLAGS="$CFLAGS -DLIBSSH2_WIN32 -DWINSOCK_VERSION=0x0200"
|
CFLAGS="$CFLAGS -DLIBSSH2_WIN32"
|
||||||
LIBS="$LIBS -lws2_32"
|
LIBS="$LIBS -lws2_32"
|
||||||
;;
|
;;
|
||||||
*-cygwin)
|
*-cygwin)
|
||||||
@ -81,55 +84,111 @@ dnl check for how to do large files
|
|||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
# Configure parameters
|
# Configure parameters
|
||||||
AC_ARG_WITH(libgcrypt,
|
|
||||||
AC_HELP_STRING([--with-libgcrypt],[Use Libgcrypt for crypto]),
|
|
||||||
use_libgcrypt=$withval,use_libgcrypt=auto)
|
|
||||||
AC_ARG_WITH(openssl,
|
AC_ARG_WITH(openssl,
|
||||||
AC_HELP_STRING([--with-openssl],[Use OpenSSL for crypto]),
|
AC_HELP_STRING([--with-openssl],[Use OpenSSL for crypto]),
|
||||||
use_openssl=$withval,use_openssl=auto)
|
use_openssl=$withval,use_openssl=auto)
|
||||||
|
AC_ARG_WITH(libgcrypt,
|
||||||
|
AC_HELP_STRING([--with-libgcrypt],[Use libgcrypt for crypto]),
|
||||||
|
use_libgcrypt=$withval,use_libgcrypt=auto)
|
||||||
|
AC_ARG_WITH(wincng,
|
||||||
|
AC_HELP_STRING([--with-wincng],[Use Windows CNG for crypto]),
|
||||||
|
use_wincng=$withval,use_wincng=auto)
|
||||||
AC_ARG_WITH(libz,
|
AC_ARG_WITH(libz,
|
||||||
AC_HELP_STRING([--with-libz],[Use Libz for compression]),
|
AC_HELP_STRING([--with-libz],[Use zlib for compression]),
|
||||||
use_libz=$withval,use_libz=auto)
|
use_libz=$withval,use_libz=auto)
|
||||||
|
|
||||||
# Look for OpenSSL (default)
|
found_crypto=none
|
||||||
if test "$use_openssl" != "no" && test "$use_libgcrypt" != "yes"; then
|
support_clear_memory=no
|
||||||
|
|
||||||
|
# Look for OpenSSL
|
||||||
|
if test "$found_crypto" = "none" && test "$use_openssl" != "no"; then
|
||||||
AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [#include <openssl/ssl.h>])
|
AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [#include <openssl/ssl.h>])
|
||||||
fi
|
fi
|
||||||
|
if test "$ac_cv_libssl" = "yes"; then
|
||||||
|
AC_DEFINE(LIBSSH2_OPENSSL, 1, [Use OpenSSL])
|
||||||
|
LIBSREQUIRED=libssl,libcrypto
|
||||||
|
|
||||||
|
# Not all OpenSSL have AES-CTR functions.
|
||||||
|
save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $LIBSSL"
|
||||||
|
AC_CHECK_FUNCS(EVP_aes_128_ctr)
|
||||||
|
LIBS="$save_LIBS"
|
||||||
|
|
||||||
|
found_crypto="OpenSSL (AES-CTR: ${ac_cv_func_EVP_aes_128_ctr:-N/A})"
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(OPENSSL, test "$ac_cv_libssl" = "yes")
|
||||||
|
|
||||||
# Look for libgcrypt
|
# Look for libgcrypt
|
||||||
if test "$ac_cv_libssl" != "yes" && test "$use_libgcrypt" != "no"; then
|
if test "$found_crypto" = "none" && test "$use_libgcrypt" != "no"; then
|
||||||
AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [#include <gcrypt.h>])
|
AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [#include <gcrypt.h>])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$ac_cv_libssl" != "yes" && test "$ac_cv_libgcrypt" != "yes"; then
|
|
||||||
AC_MSG_ERROR([cannot find OpenSSL or Libgcrypt,
|
|
||||||
try --with-libssl-prefix=PATH or --with-libgcrypt-prefix=PATH])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$ac_cv_libgcrypt" = "yes"; then
|
if test "$ac_cv_libgcrypt" = "yes"; then
|
||||||
AC_DEFINE(LIBSSH2_LIBGCRYPT, 1, [Use libgcrypt])
|
AC_DEFINE(LIBSSH2_LIBGCRYPT, 1, [Use libgcrypt])
|
||||||
|
LIBSREQUIRED= # libgcrypt doesn't provide a .pc file. sad face.
|
||||||
|
LIBS="$LIBS -lgcrypt"
|
||||||
|
found_crypto=libgcrypt
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(LIBGCRYPT, test "$ac_cv_libgcrypt" = "yes")
|
AM_CONDITIONAL(LIBGCRYPT, test "$ac_cv_libgcrypt" = "yes")
|
||||||
|
|
||||||
# Not all OpenSSL have AES-CTR functions.
|
# Look for Windows Cryptography API: Next Generation
|
||||||
if test "$ac_cv_libssl" = "yes"; then
|
if test "$found_crypto" = "none" && test "$use_wincng" != "no"; then
|
||||||
save_LDFLAGS="$LDFLAGS"
|
AC_LIB_HAVE_LINKFLAGS([bcrypt], [], [
|
||||||
LDFLAGS="$LDFLAGS $LIBSSL"
|
#include <windows.h>
|
||||||
AC_CHECK_FUNCS(EVP_aes_128_ctr)
|
#include <bcrypt.h>
|
||||||
LDFLAGS="$save_LDFLAGS"
|
])
|
||||||
|
AC_LIB_HAVE_LINKFLAGS([crypt32], [], [
|
||||||
|
#include <windows.h>
|
||||||
|
#include <wincrypt.h>
|
||||||
|
])
|
||||||
|
AC_CHECK_HEADERS([ntdef.h ntstatus.h], [], [], [
|
||||||
|
#include <windows.h>
|
||||||
|
])
|
||||||
|
AC_CHECK_DECLS([SecureZeroMemory], [], [], [
|
||||||
|
#include <windows.h>
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
if test "$ac_cv_libbcrypt" = "yes"; then
|
||||||
|
AC_DEFINE(LIBSSH2_WINCNG, 1, [Use Windows CNG])
|
||||||
|
LIBSREQUIRED= # wincng doesn't provide a .pc file. sad face.
|
||||||
|
LIBS="$LIBS -lbcrypt"
|
||||||
|
if test "$ac_cv_libcrypt32" = "yes"; then
|
||||||
|
LIBS="$LIBS -lcrypt32"
|
||||||
|
fi
|
||||||
|
found_crypto="Windows Cryptography API: Next Generation"
|
||||||
|
if test "$ac_cv_have_decl_SecureZeroMemory" = "yes"; then
|
||||||
|
support_clear_memory=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(WINCNG, test "$ac_cv_libbcrypt" = "yes")
|
||||||
|
|
||||||
|
AM_CONDITIONAL(OS400QC3, false)
|
||||||
|
|
||||||
|
# Check if crypto library was found
|
||||||
|
if test "$found_crypto" = "none"; then
|
||||||
|
AC_MSG_ERROR([No crypto library found!
|
||||||
|
Try --with-libssl-prefix=PATH
|
||||||
|
or --with-libgcrypt-prefix=PATH
|
||||||
|
or --with-wincng on Windows\
|
||||||
|
])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Look for Libz
|
# Look for Libz
|
||||||
if test "$use_libz" != "no"; then
|
if test "$use_libz" != "no"; then
|
||||||
AC_LIB_HAVE_LINKFLAGS([z], [], [#include <zlib.h>])
|
AC_LIB_HAVE_LINKFLAGS([z], [], [#include <zlib.h>])
|
||||||
if test "$ac_cv_libz" != yes; then
|
if test "$ac_cv_libz" != yes; then
|
||||||
AC_MSG_NOTICE([Cannot find libz, disabling compression])
|
AC_MSG_NOTICE([Cannot find zlib, disabling compression])
|
||||||
AC_MSG_NOTICE([Try --with-libz-prefix=PATH if you know you have it])
|
AC_MSG_NOTICE([Try --with-libz-prefix=PATH if you know you have it])
|
||||||
else
|
else
|
||||||
AC_DEFINE(LIBSSH2_HAVE_ZLIB, 1, [Compile in zlib support])
|
AC_DEFINE(LIBSSH2_HAVE_ZLIB, 1, [Compile in zlib support])
|
||||||
|
if test "${LIBSREQUIRED}" != ""; then
|
||||||
|
LIBSREQUIRED="${LIBSREQUIRED},"
|
||||||
|
fi
|
||||||
|
LIBSREQUIRED="${LIBSREQUIRED}zlib"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(LIBSREQUIRED)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Optional Settings
|
# Optional Settings
|
||||||
#
|
#
|
||||||
@ -148,6 +207,30 @@ if test "$GEX_NEW" != "no"; then
|
|||||||
AC_DEFINE(LIBSSH2_DH_GEX_NEW, 1, [Enable newer diffie-hellman-group-exchange-sha1 syntax])
|
AC_DEFINE(LIBSSH2_DH_GEX_NEW, 1, [Enable newer diffie-hellman-group-exchange-sha1 syntax])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(clear-memory,
|
||||||
|
AC_HELP_STRING([--disable-clear-memory],[Disable clearing of memory before being freed]),
|
||||||
|
[CLEAR_MEMORY=$enableval])
|
||||||
|
if test "$CLEAR_MEMORY" != "no"; then
|
||||||
|
if test "$support_clear_memory" = "yes"; then
|
||||||
|
AC_DEFINE(LIBSSH2_CLEAR_MEMORY, 1, [Enable clearing of memory before being freed])
|
||||||
|
enable_clear_memory=yes
|
||||||
|
else
|
||||||
|
if test "$CLEAR_MEMORY" = "yes"; then
|
||||||
|
AC_MSG_ERROR([secure clearing/zeroing of memory is not supported by the selected crypto backend])
|
||||||
|
else
|
||||||
|
AC_MSG_WARN([secure clearing/zeroing of memory is not supported by the selected crypto backend])
|
||||||
|
fi
|
||||||
|
enable_clear_memory=unsupported
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test "$support_clear_memory" = "yes"; then
|
||||||
|
enable_clear_memory=no
|
||||||
|
else
|
||||||
|
AC_MSG_WARN([secure clearing/zeroing of memory is not supported by the selected crypto backend])
|
||||||
|
enable_clear_memory=unsupported
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
dnl ************************************************************
|
dnl ************************************************************
|
||||||
dnl option to switch on compiler debug options
|
dnl option to switch on compiler debug options
|
||||||
dnl
|
dnl
|
||||||
@ -213,12 +296,29 @@ AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibi
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Build example applications?
|
||||||
|
AC_MSG_CHECKING([whether to build example applications])
|
||||||
|
AC_ARG_ENABLE([examples-build],
|
||||||
|
AC_HELP_STRING([--enable-examples-build], [Build example applications (this is the default)])
|
||||||
|
AC_HELP_STRING([--disable-examples-build], [Do not build example applications]),
|
||||||
|
[case "$enableval" in
|
||||||
|
no | false)
|
||||||
|
build_examples='no'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
build_examples='yes'
|
||||||
|
;;
|
||||||
|
esac], [build_examples='yes'])
|
||||||
|
AC_MSG_RESULT($build_examples)
|
||||||
|
AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$build_examples" != "xno"])
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
# AC_HEADER_STDC
|
# AC_HEADER_STDC
|
||||||
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h stdlib.h unistd.h sys/uio.h])
|
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h stdlib.h unistd.h sys/uio.h])
|
||||||
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/ioctl.h sys/time.h])
|
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/ioctl.h sys/time.h])
|
||||||
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
|
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
|
||||||
AC_CHECK_HEADERS([sys/un.h])
|
AC_CHECK_HEADERS([sys/un.h], [have_sys_un_h=yes], [have_sys_un_h=no])
|
||||||
|
AM_CONDITIONAL([HAVE_SYS_UN_H], test "x$have_sys_un_h" = xyes)
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-cegcc*)
|
*-*-cygwin* | *-*-cegcc*)
|
||||||
@ -289,14 +389,16 @@ AC_OUTPUT
|
|||||||
|
|
||||||
AC_MSG_NOTICE([summary of build options:
|
AC_MSG_NOTICE([summary of build options:
|
||||||
|
|
||||||
version: ${VERSION}
|
version: ${LIBSSH2VER}
|
||||||
Host type: ${host}
|
Host type: ${host}
|
||||||
Install prefix: ${prefix}
|
Install prefix: ${prefix}
|
||||||
Compiler: ${CC}
|
Compiler: ${CC}
|
||||||
Compiler flags: ${CFLAGS}
|
Compiler flags: ${CFLAGS}
|
||||||
Library types: Shared=${enable_shared}, Static=${enable_static}
|
Library types: Shared=${enable_shared}, Static=${enable_static}
|
||||||
Crypto library: openssl: ${ac_cv_libssl:-no} (AES-CTR: ${ac_cv_func_EVP_aes_128_ctr:-N/A}) libgcrypt: ${ac_cv_libgcrypt:-no}
|
Crypto library: ${found_crypto}
|
||||||
|
Clear memory: $enable_clear_memory
|
||||||
Debug build: $enable_debug
|
Debug build: $enable_debug
|
||||||
|
Build examples: $build_examples
|
||||||
Path to sshd: $ac_cv_path_SSHD (only for self-tests)
|
Path to sshd: $ac_cv_path_SSHD (only for self-tests)
|
||||||
libz compression: $ac_cv_libz
|
zlib compression: $ac_cv_libz
|
||||||
])
|
])
|
||||||
|
@ -6,31 +6,57 @@
|
|||||||
Adam Gobiowski
|
Adam Gobiowski
|
||||||
Alexander Holyapin
|
Alexander Holyapin
|
||||||
Alexander Lamaison
|
Alexander Lamaison
|
||||||
|
Alfred Gebert
|
||||||
Ben Kibbey
|
Ben Kibbey
|
||||||
Bjorn Stenborg
|
Bjorn Stenborg
|
||||||
Carlo Bramini
|
Carlo Bramini
|
||||||
|
Cristian Rodríguez
|
||||||
|
Daiki Ueno
|
||||||
Dan Casey
|
Dan Casey
|
||||||
Dan Fandrich
|
Dan Fandrich
|
||||||
Daniel Stenberg
|
Daniel Stenberg
|
||||||
|
Dave Hayden
|
||||||
|
Dave McCaldon
|
||||||
David J Sullivan
|
David J Sullivan
|
||||||
David Robins
|
David Robins
|
||||||
|
Dmitry Smirnov
|
||||||
|
Douglas Masterson
|
||||||
Edink Kadribasic
|
Edink Kadribasic
|
||||||
Erik Brossler
|
Erik Brossler
|
||||||
Francois Dupoux
|
Francois Dupoux
|
||||||
|
Gellule Xg
|
||||||
|
Grubsky Grigory
|
||||||
Guenter Knauf
|
Guenter Knauf
|
||||||
Heiner Steven
|
Heiner Steven
|
||||||
|
Henrik Nordstrom
|
||||||
James Housleys
|
James Housleys
|
||||||
|
Jasmeet Bagga
|
||||||
Jean-Louis Charton
|
Jean-Louis Charton
|
||||||
|
Jernej Kovacic
|
||||||
|
Joey Degges
|
||||||
|
John Little
|
||||||
|
Jose Baars
|
||||||
Jussi Mononen
|
Jussi Mononen
|
||||||
|
Kamil Dudka
|
||||||
|
Lars Nordin
|
||||||
Mark McPherson
|
Mark McPherson
|
||||||
|
Mark Smith
|
||||||
Markus Moeller
|
Markus Moeller
|
||||||
|
Matt Lilley
|
||||||
|
Matthew Booth
|
||||||
|
Maxime Larocque
|
||||||
Mike Protts
|
Mike Protts
|
||||||
Mikhail Gusarov
|
Mikhail Gusarov
|
||||||
Neil Gierman
|
Neil Gierman
|
||||||
Olivier Hervieu
|
Olivier Hervieu
|
||||||
|
Paul Howarth
|
||||||
|
Paul Querna
|
||||||
Paul Veldkamp
|
Paul Veldkamp
|
||||||
|
Peter Krempa
|
||||||
Peter O'Gorman
|
Peter O'Gorman
|
||||||
Peter Stuge
|
Peter Stuge
|
||||||
|
Pierre Joye
|
||||||
|
Rafael Kitover
|
||||||
Romain Bondue
|
Romain Bondue
|
||||||
Sara Golemon
|
Sara Golemon
|
||||||
Satish Mittal
|
Satish Mittal
|
||||||
@ -38,10 +64,16 @@ Sean Peterson
|
|||||||
Selcuk Gueney
|
Selcuk Gueney
|
||||||
Simon Hart
|
Simon Hart
|
||||||
Simon Josefsson
|
Simon Josefsson
|
||||||
|
Sofian Brabez
|
||||||
Steven Ayre
|
Steven Ayre
|
||||||
|
Steven Dake
|
||||||
Steven Van Ingelgem
|
Steven Van Ingelgem
|
||||||
|
TJ Saunders
|
||||||
|
Tommy Lindgren
|
||||||
Tor Arntsen
|
Tor Arntsen
|
||||||
Vincent Jaulin
|
Vincent Jaulin
|
||||||
|
Vincent Torri
|
||||||
Vlad Grachov
|
Vlad Grachov
|
||||||
Wez Furlong
|
Wez Furlong
|
||||||
Yang Tse
|
Yang Tse
|
||||||
|
Zl Liu
|
29
docs/BINDINGS
Normal file
29
docs/BINDINGS
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
Creative people have written bindings or interfaces for various environments
|
||||||
|
and programming languages. Using one of these bindings allows you to take
|
||||||
|
advantage of libssh2 directly from within your favourite language.
|
||||||
|
|
||||||
|
The bindings listed below are not part of the libssh2 distribution archives,
|
||||||
|
but must be downloaded and installed separately.
|
||||||
|
|
||||||
|
Cocoa/Objective-C
|
||||||
|
https://github.com/karelia/libssh2_sftp-Cocoa-wrapper
|
||||||
|
|
||||||
|
Haskell
|
||||||
|
FFI bindings - http://hackage.haskell.org/package/libssh2
|
||||||
|
|
||||||
|
Perl
|
||||||
|
Net::SSH2 - http://search.cpan.org/~rkitover/Net-SSH2-0.45/lib/Net/SSH2.pm
|
||||||
|
|
||||||
|
PHP
|
||||||
|
ssh2 - http://pecl.php.net/package/ssh2
|
||||||
|
|
||||||
|
Python
|
||||||
|
pylibssh2 - http://www.wallix.org/pylibssh2-project/
|
||||||
|
|
||||||
|
Python-ctypes
|
||||||
|
|
||||||
|
PySsh2 - https://github.com/gellule/PySsh2
|
||||||
|
|
||||||
|
Ruby
|
||||||
|
libssh2-ruby - https://github.com/mitchellh/libssh2-ruby
|
206
docs/CMakeLists.txt
Normal file
206
docs/CMakeLists.txt
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
# Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms,
|
||||||
|
# with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# Redistributions of source code must retain the above
|
||||||
|
# copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
#
|
||||||
|
# Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials
|
||||||
|
# provided with the distribution.
|
||||||
|
#
|
||||||
|
# Neither the name of the copyright holder nor the names
|
||||||
|
# of any other contributors may be used to endorse or
|
||||||
|
# promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(MAN_PAGES
|
||||||
|
libssh2_agent_connect.3
|
||||||
|
libssh2_agent_disconnect.3
|
||||||
|
libssh2_agent_free.3
|
||||||
|
libssh2_agent_get_identity.3
|
||||||
|
libssh2_agent_init.3
|
||||||
|
libssh2_agent_list_identities.3
|
||||||
|
libssh2_agent_userauth.3
|
||||||
|
libssh2_banner_set.3
|
||||||
|
libssh2_base64_decode.3
|
||||||
|
libssh2_channel_close.3
|
||||||
|
libssh2_channel_direct_tcpip.3
|
||||||
|
libssh2_channel_direct_tcpip_ex.3
|
||||||
|
libssh2_channel_eof.3
|
||||||
|
libssh2_channel_exec.3
|
||||||
|
libssh2_channel_flush.3
|
||||||
|
libssh2_channel_flush_ex.3
|
||||||
|
libssh2_channel_flush_stderr.3
|
||||||
|
libssh2_channel_forward_accept.3
|
||||||
|
libssh2_channel_forward_cancel.3
|
||||||
|
libssh2_channel_forward_listen.3
|
||||||
|
libssh2_channel_forward_listen_ex.3
|
||||||
|
libssh2_channel_free.3
|
||||||
|
libssh2_channel_get_exit_signal.3
|
||||||
|
libssh2_channel_get_exit_status.3
|
||||||
|
libssh2_channel_handle_extended_data.3
|
||||||
|
libssh2_channel_handle_extended_data2.3
|
||||||
|
libssh2_channel_ignore_extended_data.3
|
||||||
|
libssh2_channel_open_ex.3
|
||||||
|
libssh2_channel_open_session.3
|
||||||
|
libssh2_channel_process_startup.3
|
||||||
|
libssh2_channel_read.3
|
||||||
|
libssh2_channel_read_ex.3
|
||||||
|
libssh2_channel_read_stderr.3
|
||||||
|
libssh2_channel_receive_window_adjust.3
|
||||||
|
libssh2_channel_receive_window_adjust2.3
|
||||||
|
libssh2_channel_request_pty.3
|
||||||
|
libssh2_channel_request_pty_ex.3
|
||||||
|
libssh2_channel_request_pty_size.3
|
||||||
|
libssh2_channel_request_pty_size_ex.3
|
||||||
|
libssh2_channel_send_eof.3
|
||||||
|
libssh2_channel_set_blocking.3
|
||||||
|
libssh2_channel_setenv.3
|
||||||
|
libssh2_channel_setenv_ex.3
|
||||||
|
libssh2_channel_shell.3
|
||||||
|
libssh2_channel_subsystem.3
|
||||||
|
libssh2_channel_wait_closed.3
|
||||||
|
libssh2_channel_wait_eof.3
|
||||||
|
libssh2_channel_window_read.3
|
||||||
|
libssh2_channel_window_read_ex.3
|
||||||
|
libssh2_channel_window_write.3
|
||||||
|
libssh2_channel_window_write_ex.3
|
||||||
|
libssh2_channel_write.3
|
||||||
|
libssh2_channel_write_ex.3
|
||||||
|
libssh2_channel_write_stderr.3
|
||||||
|
libssh2_channel_x11_req.3
|
||||||
|
libssh2_channel_x11_req_ex.3
|
||||||
|
libssh2_exit.3
|
||||||
|
libssh2_free.3
|
||||||
|
libssh2_hostkey_hash.3
|
||||||
|
libssh2_init.3
|
||||||
|
libssh2_keepalive_config.3
|
||||||
|
libssh2_keepalive_send.3
|
||||||
|
libssh2_knownhost_add.3
|
||||||
|
libssh2_knownhost_addc.3
|
||||||
|
libssh2_knownhost_check.3
|
||||||
|
libssh2_knownhost_checkp.3
|
||||||
|
libssh2_knownhost_del.3
|
||||||
|
libssh2_knownhost_free.3
|
||||||
|
libssh2_knownhost_get.3
|
||||||
|
libssh2_knownhost_init.3
|
||||||
|
libssh2_knownhost_readfile.3
|
||||||
|
libssh2_knownhost_readline.3
|
||||||
|
libssh2_knownhost_writefile.3
|
||||||
|
libssh2_knownhost_writeline.3
|
||||||
|
libssh2_poll.3
|
||||||
|
libssh2_poll_channel_read.3
|
||||||
|
libssh2_publickey_add.3
|
||||||
|
libssh2_publickey_add_ex.3
|
||||||
|
libssh2_publickey_init.3
|
||||||
|
libssh2_publickey_list_fetch.3
|
||||||
|
libssh2_publickey_list_free.3
|
||||||
|
libssh2_publickey_remove.3
|
||||||
|
libssh2_publickey_remove_ex.3
|
||||||
|
libssh2_publickey_shutdown.3
|
||||||
|
libssh2_scp_recv.3
|
||||||
|
libssh2_scp_recv2.3
|
||||||
|
libssh2_scp_send.3
|
||||||
|
libssh2_scp_send64.3
|
||||||
|
libssh2_scp_send_ex.3
|
||||||
|
libssh2_session_abstract.3
|
||||||
|
libssh2_session_banner_get.3
|
||||||
|
libssh2_session_banner_set.3
|
||||||
|
libssh2_session_block_directions.3
|
||||||
|
libssh2_session_callback_set.3
|
||||||
|
libssh2_session_disconnect.3
|
||||||
|
libssh2_session_disconnect_ex.3
|
||||||
|
libssh2_session_flag.3
|
||||||
|
libssh2_session_free.3
|
||||||
|
libssh2_session_get_blocking.3
|
||||||
|
libssh2_session_get_timeout.3
|
||||||
|
libssh2_session_hostkey.3
|
||||||
|
libssh2_session_init.3
|
||||||
|
libssh2_session_init_ex.3
|
||||||
|
libssh2_session_last_errno.3
|
||||||
|
libssh2_session_last_error.3
|
||||||
|
libssh2_session_set_last_error.3
|
||||||
|
libssh2_session_method_pref.3
|
||||||
|
libssh2_session_methods.3
|
||||||
|
libssh2_session_set_blocking.3
|
||||||
|
libssh2_session_set_timeout.3
|
||||||
|
libssh2_session_startup.3
|
||||||
|
libssh2_session_supported_algs.3
|
||||||
|
libssh2_sftp_close.3
|
||||||
|
libssh2_sftp_close_handle.3
|
||||||
|
libssh2_sftp_closedir.3
|
||||||
|
libssh2_sftp_fsetstat.3
|
||||||
|
libssh2_sftp_fstat.3
|
||||||
|
libssh2_sftp_fstat_ex.3
|
||||||
|
libssh2_sftp_fstatvfs.3
|
||||||
|
libssh2_sftp_fsync.3
|
||||||
|
libssh2_sftp_get_channel.3
|
||||||
|
libssh2_sftp_init.3
|
||||||
|
libssh2_sftp_last_error.3
|
||||||
|
libssh2_sftp_lstat.3
|
||||||
|
libssh2_sftp_mkdir.3
|
||||||
|
libssh2_sftp_mkdir_ex.3
|
||||||
|
libssh2_sftp_open.3
|
||||||
|
libssh2_sftp_open_ex.3
|
||||||
|
libssh2_sftp_opendir.3
|
||||||
|
libssh2_sftp_read.3
|
||||||
|
libssh2_sftp_readdir.3
|
||||||
|
libssh2_sftp_readdir_ex.3
|
||||||
|
libssh2_sftp_readlink.3
|
||||||
|
libssh2_sftp_realpath.3
|
||||||
|
libssh2_sftp_rename.3
|
||||||
|
libssh2_sftp_rename_ex.3
|
||||||
|
libssh2_sftp_rewind.3
|
||||||
|
libssh2_sftp_rmdir.3
|
||||||
|
libssh2_sftp_rmdir_ex.3
|
||||||
|
libssh2_sftp_seek.3
|
||||||
|
libssh2_sftp_seek64.3
|
||||||
|
libssh2_sftp_setstat.3
|
||||||
|
libssh2_sftp_shutdown.3
|
||||||
|
libssh2_sftp_stat.3
|
||||||
|
libssh2_sftp_stat_ex.3
|
||||||
|
libssh2_sftp_statvfs.3
|
||||||
|
libssh2_sftp_symlink.3
|
||||||
|
libssh2_sftp_symlink_ex.3
|
||||||
|
libssh2_sftp_tell.3
|
||||||
|
libssh2_sftp_tell64.3
|
||||||
|
libssh2_sftp_unlink.3
|
||||||
|
libssh2_sftp_unlink_ex.3
|
||||||
|
libssh2_sftp_write.3
|
||||||
|
libssh2_trace.3
|
||||||
|
libssh2_trace_sethandler.3
|
||||||
|
libssh2_userauth_authenticated.3
|
||||||
|
libssh2_userauth_hostbased_fromfile.3
|
||||||
|
libssh2_userauth_hostbased_fromfile_ex.3
|
||||||
|
libssh2_userauth_keyboard_interactive.3
|
||||||
|
libssh2_userauth_keyboard_interactive_ex.3
|
||||||
|
libssh2_userauth_list.3
|
||||||
|
libssh2_userauth_password.3
|
||||||
|
libssh2_userauth_password_ex.3
|
||||||
|
libssh2_userauth_publickey.3
|
||||||
|
libssh2_userauth_publickey_fromfile.3
|
||||||
|
libssh2_userauth_publickey_fromfile_ex.3
|
||||||
|
libssh2_version.3)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
install(FILES ${MAN_PAGES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man3)
|
593
docs/HACKING.CRYPTO
Normal file
593
docs/HACKING.CRYPTO
Normal file
@ -0,0 +1,593 @@
|
|||||||
|
Definitions needed to implement a specific crypto library
|
||||||
|
|
||||||
|
This document offers some hints about implementing a new crypto library
|
||||||
|
interface.
|
||||||
|
|
||||||
|
A crypto library interface consists of at least a header file, defining
|
||||||
|
entities referenced from the libssh2 core modules.
|
||||||
|
Real code implementation (if needed), is left at the implementor's choice.
|
||||||
|
|
||||||
|
This document lists the entities that must/may be defined in the header file.
|
||||||
|
|
||||||
|
Procedures listed as "void" may indeed have a result type: the void indication
|
||||||
|
indicates the libssh2 core modules never use the function result.
|
||||||
|
|
||||||
|
|
||||||
|
1) Crypto library initialization/termination.
|
||||||
|
|
||||||
|
void libssh2_crypto_init(void);
|
||||||
|
Initializes the crypto library. May be an empty macro if not needed.
|
||||||
|
|
||||||
|
void libssh2_crypto_exit(void);
|
||||||
|
Terminates the crypto library use. May be an empty macro if not needed.
|
||||||
|
|
||||||
|
|
||||||
|
2) HMAC
|
||||||
|
|
||||||
|
libssh2_hmac_ctx
|
||||||
|
Type of an HMAC computation context. Generally a struct.
|
||||||
|
Used for all hash algorithms.
|
||||||
|
|
||||||
|
void libssh2_hmac_ctx_init(libssh2_hmac_ctx ctx);
|
||||||
|
Initializes the HMAC computation context ctx.
|
||||||
|
Called before setting-up the hash algorithm.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_hmac_update(libssh2_hmac_ctx ctx,
|
||||||
|
const unsigned char *data,
|
||||||
|
int datalen);
|
||||||
|
Continue computation of an HMAC on datalen bytes at data using context ctx.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_hmac_final(libssh2_hmac_ctx ctx,
|
||||||
|
unsigned char output[]);
|
||||||
|
Get the computed HMAC from context ctx into the output buffer. The
|
||||||
|
minimum data buffer size depends on the HMAC hash algorithm.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_hmac_cleanup(libssh2_hmac_ctx *ctx);
|
||||||
|
Releases the HMAC computation context at ctx.
|
||||||
|
|
||||||
|
|
||||||
|
3) Hash algorithms.
|
||||||
|
|
||||||
|
3.1) SHA-1
|
||||||
|
Must always be implemented.
|
||||||
|
|
||||||
|
SHA_DIGEST_LENGTH
|
||||||
|
#define to 20, the SHA-1 digest length.
|
||||||
|
|
||||||
|
libssh2_sha1_ctx
|
||||||
|
Type of an SHA1 computation context. Generally a struct.
|
||||||
|
|
||||||
|
int libssh2_sha1_init(libssh2_sha1_ctx *x);
|
||||||
|
Initializes the SHA-1 computation context at x.
|
||||||
|
Returns 1 for success and 0 for failure
|
||||||
|
|
||||||
|
void libssh2_sha1_update(libssh2_sha1_ctx ctx,
|
||||||
|
const unsigned char *data,
|
||||||
|
size_t len);
|
||||||
|
Continue computation of SHA-1 on len bytes at data using context ctx.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_sha1_final(libssh2_sha1_ctx ctx,
|
||||||
|
unsigned char output[SHA1_DIGEST_LEN]);
|
||||||
|
Get the computed SHA-1 signature from context ctx and store it into the
|
||||||
|
output buffer.
|
||||||
|
Release the context.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_hmac_sha1_init(libssh2_hmac_ctx *ctx,
|
||||||
|
const void *key,
|
||||||
|
int keylen);
|
||||||
|
Setup the HMAC computation context ctx for an HMAC-SHA-1 computation using the
|
||||||
|
keylen-byte key. Is invoked just after libssh2_hmac_ctx_init().
|
||||||
|
|
||||||
|
3.2) SHA-256
|
||||||
|
Must always be implemented.
|
||||||
|
|
||||||
|
SHA256_DIGEST_LENGTH
|
||||||
|
#define to 32, the SHA-256 digest length.
|
||||||
|
|
||||||
|
libssh2_sha256_ctx
|
||||||
|
Type of an SHA-256 computation context. Generally a struct.
|
||||||
|
|
||||||
|
int libssh2_sha256_init(libssh2_sha256_ctx *x);
|
||||||
|
Initializes the SHA-256 computation context at x.
|
||||||
|
Returns 1 for success and 0 for failure
|
||||||
|
|
||||||
|
void libssh2_sha256_update(libssh2_sha256_ctx ctx,
|
||||||
|
const unsigned char *data,
|
||||||
|
size_t len);
|
||||||
|
Continue computation of SHA-256 on len bytes at data using context ctx.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_sha256_final(libssh2_sha256_ctx ctx,
|
||||||
|
unsigned char output[SHA256_DIGEST_LENGTH]);
|
||||||
|
Gets the computed SHA-256 signature from context ctx into the output buffer.
|
||||||
|
Release the context.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
int libssh2_sha256(const unsigned char *message,
|
||||||
|
unsigned long len,
|
||||||
|
unsigned char output[SHA256_DIGEST_LENGTH]);
|
||||||
|
Computes the SHA-256 signature over the given message of length len and
|
||||||
|
store the result into the output buffer.
|
||||||
|
Return 1 if error, else 0.
|
||||||
|
Note: Seems unused in current code, but defined in each crypto library backend.
|
||||||
|
|
||||||
|
LIBSSH2_HMAC_SHA256
|
||||||
|
#define as 1 if the crypto library supports HMAC-SHA-256, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
void libssh2_hmac_sha256_init(libssh2_hmac_ctx *ctx,
|
||||||
|
const void *key,
|
||||||
|
int keylen);
|
||||||
|
Setup the HMAC computation context ctx for an HMAC-256 computation using the
|
||||||
|
keylen-byte key. Is invoked just after libssh2_hmac_ctx_init().
|
||||||
|
|
||||||
|
3.3) SHA-512
|
||||||
|
LIBSSH2_HMAC_SHA512
|
||||||
|
#define as 1 if the crypto library supports HMAC-SHA-512, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
SHA512_DIGEST_LENGTH
|
||||||
|
#define to 64, the SHA-512 digest length.
|
||||||
|
|
||||||
|
void libssh2_hmac_sha512_init(libssh2_hmac_ctx *ctx,
|
||||||
|
const void *key,
|
||||||
|
int keylen);
|
||||||
|
Setup the HMAC computation context ctx for an HMAC-512 computation using the
|
||||||
|
keylen-byte key. Is invoked just after libssh2_hmac_ctx_init().
|
||||||
|
|
||||||
|
3.4) MD5
|
||||||
|
LIBSSH2_MD5
|
||||||
|
#define to 1 if the crypto library supports MD5, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
MD5_DIGEST_LENGTH
|
||||||
|
#define to 16, the MD5 digest length.
|
||||||
|
|
||||||
|
libssh2_md5_ctx
|
||||||
|
Type of an MD5 computation context. Generally a struct.
|
||||||
|
|
||||||
|
int libssh2_md5_init(libssh2_md5_ctx *x);
|
||||||
|
Initializes the MD5 computation context at x.
|
||||||
|
Returns 1 for success and 0 for failure
|
||||||
|
|
||||||
|
void libssh2_md5_update(libssh2_md5_ctx ctx,
|
||||||
|
const unsigned char *data,
|
||||||
|
size_t len);
|
||||||
|
Continues computation of MD5 on len bytes at data using context ctx.
|
||||||
|
Returns 1 for success and 0 for failure.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_md5_final(libssh2_md5_ctx ctx,
|
||||||
|
unsigned char output[MD5_DIGEST_LENGTH]);
|
||||||
|
Gets the computed MD5 signature from context ctx into the output buffer.
|
||||||
|
Release the context.
|
||||||
|
Note: if the ctx parameter is modified by the underlying code,
|
||||||
|
this procedure must be implemented as a macro to map ctx --> &ctx.
|
||||||
|
|
||||||
|
void libssh2_hmac_md5_init(libssh2_hmac_ctx *ctx,
|
||||||
|
const void *key,
|
||||||
|
int keylen);
|
||||||
|
Setup the HMAC computation context ctx for an HMAC-MD5 computation using the
|
||||||
|
keylen-byte key. Is invoked just after libssh2_hmac_ctx_init().
|
||||||
|
|
||||||
|
3.5) RIPEMD-160
|
||||||
|
LIBSSH2_HMAC_RIPEMD
|
||||||
|
#define as 1 if the crypto library supports HMAC-RIPEMD-160, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
void libssh2_hmac_ripemd160_init(libssh2_hmac_ctx *ctx,
|
||||||
|
const void *key,
|
||||||
|
int keylen);
|
||||||
|
Setup the HMAC computation context ctx for an HMAC-RIPEMD-160 computation using
|
||||||
|
the keylen-byte key. Is invoked just after libssh2_hmac_ctx_init().
|
||||||
|
Returns 1 for success and 0 for failure.
|
||||||
|
|
||||||
|
|
||||||
|
4) Bidirectional Key ciphers.
|
||||||
|
|
||||||
|
_libssh2_cipher_ctx
|
||||||
|
Type of a cipher computation context.
|
||||||
|
|
||||||
|
_libssh2_cipher_type(name);
|
||||||
|
Macro defining name as storage identifying a cipher algorithm for
|
||||||
|
the crypto library interface. No trailing semicolon.
|
||||||
|
|
||||||
|
int _libssh2_cipher_init(_libssh2_cipher_ctx *h,
|
||||||
|
_libssh2_cipher_type(algo),
|
||||||
|
unsigned char *iv,
|
||||||
|
unsigned char *secret,
|
||||||
|
int encrypt);
|
||||||
|
Creates a cipher context for the given algorithm with the initialization vector
|
||||||
|
iv and the secret key secret. Prepare for encryption or decryption depending on
|
||||||
|
encrypt.
|
||||||
|
Return 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_cipher_crypt(_libssh2_cipher_ctx *ctx,
|
||||||
|
_libssh2_cipher_type(algo),
|
||||||
|
int encrypt,
|
||||||
|
unsigned char *block,
|
||||||
|
size_t blocksize);
|
||||||
|
Encrypt or decrypt in-place data at (block, blocksize) using the given
|
||||||
|
context and/or algorithm.
|
||||||
|
Return 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
void _libssh2_cipher_dtor(_libssh2_cipher_ctx *ctx);
|
||||||
|
Release cipher context at ctx.
|
||||||
|
|
||||||
|
4.1) AES
|
||||||
|
4.1.1) AES in CBC block mode.
|
||||||
|
LIBSSH2_AES
|
||||||
|
#define as 1 if the crypto library supports AES in CBC mode, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
_libssh2_cipher_aes128
|
||||||
|
AES-128-CBC algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
_libssh2_cipher_aes192
|
||||||
|
AES-192-CBC algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
_libssh2_cipher_aes256
|
||||||
|
AES-256-CBC algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
4.1.2) AES in CTR block mode.
|
||||||
|
LIBSSH2_AES_CTR
|
||||||
|
#define as 1 if the crypto library supports AES in CTR mode, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
void _libssh2_init_aes_ctr(void);
|
||||||
|
Initialize static AES CTR ciphers.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
_libssh2_cipher_aes128ctr
|
||||||
|
AES-128-CTR algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
_libssh2_cipher_aes192ctr
|
||||||
|
AES-192-CTR algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
_libssh2_cipher_aes256ctr
|
||||||
|
AES-256-CTR algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
4.2) Blowfish in CBC block mode.
|
||||||
|
LIBSSH2_BLOWFISH
|
||||||
|
#define as 1 if the crypto library supports blowfish in CBC mode, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
_libssh2_cipher_blowfish
|
||||||
|
Blowfish-CBC algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
4.3) RC4.
|
||||||
|
LIBSSH2_RC4
|
||||||
|
#define as 1 if the crypto library supports RC4 (arcfour), else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
_libssh2_cipher_arcfour
|
||||||
|
RC4 algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
4.4) CAST5 in CBC block mode.
|
||||||
|
LIBSSH2_CAST
|
||||||
|
#define 1 if the crypto library supports cast, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
_libssh2_cipher_cast5
|
||||||
|
CAST5-CBC algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
4.5) Tripple DES in CBC block mode.
|
||||||
|
LIBSSH2_3DES
|
||||||
|
#define as 1 if the crypto library supports TripleDES in CBC mode, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
_libssh2_cipher_3des
|
||||||
|
TripleDES-CBC algorithm identifier initializer.
|
||||||
|
#define with constant value of type _libssh2_cipher_type().
|
||||||
|
|
||||||
|
|
||||||
|
5) Big numbers.
|
||||||
|
Positive multi-byte integers support is sufficient.
|
||||||
|
|
||||||
|
5.1) Computation contexts.
|
||||||
|
This has a real meaning if the big numbers computations need some context
|
||||||
|
storage. If not, use a dummy type and functions (macros).
|
||||||
|
|
||||||
|
_libssh2_bn_ctx
|
||||||
|
Type of multiple precision computation context. May not be empty. if not used,
|
||||||
|
#define as char, for example.
|
||||||
|
|
||||||
|
libssh2_bn_ctx _libssh2_bn_ctx_new(void);
|
||||||
|
Returns a new multiple precision computation context.
|
||||||
|
|
||||||
|
void _libssh2_bn_ctx_free(_libssh2_bn_ctx ctx);
|
||||||
|
Releases a multiple precision computation context.
|
||||||
|
|
||||||
|
5.2) Computation support.
|
||||||
|
_libssh2_bn
|
||||||
|
Type of multiple precision numbers (aka bignumbers or huge integers) for the
|
||||||
|
crypto library.
|
||||||
|
|
||||||
|
_libssh2_bn * _libssh2_bn_init(void);
|
||||||
|
Creates a multiple precision number (preset to zero).
|
||||||
|
|
||||||
|
_libssh2_bn * _libssh2_bn_init_from_bin(void);
|
||||||
|
Create a multiple precision number intended to be set by the
|
||||||
|
_libssh2_bn_from_bin() function (see below). Unlike _libssh2_bn_init(), this
|
||||||
|
code may be a dummy initializer if the _libssh2_bn_from_bin() actually
|
||||||
|
allocates the number. Returns a value of type _libssh2_bn *.
|
||||||
|
|
||||||
|
void _libssh2_bn_free(_libssh2_bn *bn);
|
||||||
|
Destroys the multiple precision number at bn.
|
||||||
|
|
||||||
|
unsigned long _libssh2_bn_bytes(libssh2_bn *bn);
|
||||||
|
Get the number of bytes needed to store the bits of the multiple precision
|
||||||
|
number at bn.
|
||||||
|
|
||||||
|
unsigned long _libssh2_bn_bits(_libssh2_bn *bn);
|
||||||
|
Returns the number of bits of multiple precision number at bn.
|
||||||
|
|
||||||
|
int _libssh2_bn_set_word(_libssh2_bn *bn, unsigned long val);
|
||||||
|
Sets the value of bn to val.
|
||||||
|
Returns 1 on success, 0 otherwise.
|
||||||
|
|
||||||
|
_libssh2_bn * _libssh2_bn_from_bin(_libssh2_bn *bn, int len,
|
||||||
|
const unsigned char *val);
|
||||||
|
Converts the positive integer in big-endian form of length len at val
|
||||||
|
into a _libssh2_bn and place it in bn. If bn is NULL, a new _libssh2_bn is
|
||||||
|
created.
|
||||||
|
Returns a pointer to target _libssh2_bn or NULL if error.
|
||||||
|
|
||||||
|
int _libssh2_bn_to_bin(_libssh2_bn *bn, unsigned char *val);
|
||||||
|
Converts the absolute value of bn into big-endian form and store it at
|
||||||
|
val. val must point to _libssh2_bn_bytes(bn) bytes of memory.
|
||||||
|
Returns the length of the big-endian number.
|
||||||
|
|
||||||
|
void _libssh2_bn_rand(_libssh2_bn *bn, int bits, int top, int bottom);
|
||||||
|
Generates a cryptographically strong pseudo-random number of bits in
|
||||||
|
length and stores it in bn. If top is -1, the most significant bit of the
|
||||||
|
random number can be zero. If top is 0, it is set to 1, and if top is 1, the
|
||||||
|
two most significant bits of the number will be set to 1, so that the product
|
||||||
|
of two such random numbers will always have 2*bits length. If bottom is true,
|
||||||
|
the number will be odd.
|
||||||
|
|
||||||
|
void _libssh2_bn_mod_exp(_libssh2_bn *r, _libssh2_bn *a,
|
||||||
|
_libssh2_bn *p, _libssh2_bn *m,
|
||||||
|
_libssh2_bn_ctx *ctx);
|
||||||
|
Computes a to the p-th power modulo m and stores the result into r (r=a^p % m).
|
||||||
|
May use the given context.
|
||||||
|
|
||||||
|
|
||||||
|
6) Private key algorithms.
|
||||||
|
Format of an RSA public key:
|
||||||
|
a) "ssh-rsa".
|
||||||
|
b) RSA exponent, MSB first, with high order bit = 0.
|
||||||
|
c) RSA modulus, MSB first, with high order bit = 0.
|
||||||
|
Each item is preceded by its 32-bit byte length, MSB first.
|
||||||
|
|
||||||
|
Format of a DSA public key:
|
||||||
|
a) "ssh-dss".
|
||||||
|
b) p, MSB first, with high order bit = 0.
|
||||||
|
c) q, MSB first, with high order bit = 0.
|
||||||
|
d) g, MSB first, with high order bit = 0.
|
||||||
|
e) pub_key, MSB first, with high order bit = 0.
|
||||||
|
Each item is preceded by its 32-bit byte length, MSB first.
|
||||||
|
|
||||||
|
int _libssh2_pub_priv_keyfile(LIBSSH2_SESSION *session,
|
||||||
|
unsigned char **method,
|
||||||
|
size_t *method_len,
|
||||||
|
unsigned char **pubkeydata,
|
||||||
|
size_t *pubkeydata_len,
|
||||||
|
const char *privatekey,
|
||||||
|
const char *passphrase);
|
||||||
|
Reads a private key from file privatekey and extract the public key -->
|
||||||
|
(pubkeydata, pubkeydata_len). Store the associated method (ssh-rsa or ssh-dss)
|
||||||
|
into (method, method_len).
|
||||||
|
Both buffers have to be allocated using LIBSSH2_ALLOC().
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_pub_priv_keyfilememory(LIBSSH2_SESSION *session,
|
||||||
|
unsigned char **method,
|
||||||
|
size_t *method_len,
|
||||||
|
unsigned char **pubkeydata,
|
||||||
|
size_t *pubkeydata_len,
|
||||||
|
const char *privatekeydata,
|
||||||
|
size_t privatekeydata_len,
|
||||||
|
const char *passphrase);
|
||||||
|
Gets a private key from bytes at (privatekeydata, privatekeydata_len) and
|
||||||
|
extract the public key --> (pubkeydata, pubkeydata_len). Store the associated
|
||||||
|
method (ssh-rsa or ssh-dss) into (method, method_len).
|
||||||
|
Both buffers have to be allocated using LIBSSH2_ALLOC().
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
6.1) RSA
|
||||||
|
LIBSSH2_RSA
|
||||||
|
#define as 1 if the crypto library supports RSA, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
libssh2_rsa_ctx
|
||||||
|
Type of an RSA computation context. Generally a struct.
|
||||||
|
|
||||||
|
int _libssh2_rsa_new(libssh2_rsa_ctx **rsa,
|
||||||
|
const unsigned char *edata,
|
||||||
|
unsigned long elen,
|
||||||
|
const unsigned char *ndata,
|
||||||
|
unsigned long nlen,
|
||||||
|
const unsigned char *ddata,
|
||||||
|
unsigned long dlen,
|
||||||
|
const unsigned char *pdata,
|
||||||
|
unsigned long plen,
|
||||||
|
const unsigned char *qdata,
|
||||||
|
unsigned long qlen,
|
||||||
|
const unsigned char *e1data,
|
||||||
|
unsigned long e1len,
|
||||||
|
const unsigned char *e2data,
|
||||||
|
unsigned long e2len,
|
||||||
|
const unsigned char *coeffdata, unsigned long coefflen);
|
||||||
|
Creates a new context for RSA computations from key source values:
|
||||||
|
pdata, plen Prime number p. Only used if private key known (ddata).
|
||||||
|
qdata, qlen Prime number q. Only used if private key known (ddata).
|
||||||
|
ndata, nlen Modulus n.
|
||||||
|
edata, elen Exponent e.
|
||||||
|
ddata, dlen e^-1 % phi(n) = private key. May be NULL if unknown.
|
||||||
|
e1data, e1len dp = d % (p-1). Only used if private key known (dtata).
|
||||||
|
e2data, e2len dq = d % (q-1). Only used if private key known (dtata).
|
||||||
|
coeffdata, coefflen q^-1 % p. Only used if private key known.
|
||||||
|
Returns 0 if OK.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
Note: the current generic code only calls this function with e and n (public
|
||||||
|
key parameters): unless used internally by the backend, it is not needed to
|
||||||
|
support the private key and the other parameters here.
|
||||||
|
|
||||||
|
int _libssh2_rsa_new_private(libssh2_rsa_ctx **rsa,
|
||||||
|
LIBSSH2_SESSION *session,
|
||||||
|
const char *filename,
|
||||||
|
unsigned const char *passphrase);
|
||||||
|
Reads an RSA private key from file filename into a new RSA context.
|
||||||
|
Must call _libssh2_init_if_needed().
|
||||||
|
Return 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_rsa_new_private_frommemory(libssh2_rsa_ctx **rsa,
|
||||||
|
LIBSSH2_SESSION *session,
|
||||||
|
const char *data,
|
||||||
|
size_t data_len,
|
||||||
|
unsigned const char *passphrase);
|
||||||
|
Gets an RSA private key from data into a new RSA context.
|
||||||
|
Must call _libssh2_init_if_needed().
|
||||||
|
Return 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_rsa_sha1_verify(libssh2_rsa_ctx *rsa,
|
||||||
|
const unsigned char *sig,
|
||||||
|
unsigned long sig_len,
|
||||||
|
const unsigned char *m, unsigned long m_len);
|
||||||
|
Verify (sig, siglen) signature of (m, m_len) using an SHA-1 hash and the
|
||||||
|
RSA context.
|
||||||
|
Return 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_rsa_sha1_signv(LIBSSH2_SESSION *session,
|
||||||
|
unsigned char **sig, size_t *siglen,
|
||||||
|
int count, const struct iovec vector[],
|
||||||
|
libssh2_rsa_ctx *ctx);
|
||||||
|
RSA signs the SHA-1 hash computed over the count data chunks in vector.
|
||||||
|
Signature is stored at (sig, siglen).
|
||||||
|
Signature buffer must be allocated from the given session.
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
Note: this procedure is optional: if provided, it MUST be defined as a macro.
|
||||||
|
|
||||||
|
int _libssh2_rsa_sha1_sign(LIBSSH2_SESSION *session,
|
||||||
|
libssh2_rsa_ctx *rsactx,
|
||||||
|
const unsigned char *hash,
|
||||||
|
size_t hash_len,
|
||||||
|
unsigned char **signature,
|
||||||
|
size_t *signature_len);
|
||||||
|
RSA signs the (hash, hashlen) SHA-1 hash bytes and stores the allocated
|
||||||
|
signature at (signature, signature_len).
|
||||||
|
Signature buffer must be allocated from the given session.
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
Note: this procedure is not used if macro _libssh2_rsa_sha1_signv() is defined.
|
||||||
|
|
||||||
|
void _libssh2_rsa_free(libssh2_rsa_ctx *rsactx);
|
||||||
|
Releases the RSA computation context at rsactx.
|
||||||
|
|
||||||
|
|
||||||
|
6.2) DSA
|
||||||
|
LIBSSH2_DSA
|
||||||
|
#define as 1 if the crypto library supports DSA, else 0.
|
||||||
|
If defined as 0, the rest of this section can be omitted.
|
||||||
|
|
||||||
|
|
||||||
|
libssh2_dsa_ctx
|
||||||
|
Type of a DSA computation context. Generally a struct.
|
||||||
|
|
||||||
|
int _libssh2_dsa_new(libssh2_dsa_ctx **dsa,
|
||||||
|
const unsigned char *pdata,
|
||||||
|
unsigned long plen,
|
||||||
|
const unsigned char *qdata,
|
||||||
|
unsigned long qlen,
|
||||||
|
const unsigned char *gdata,
|
||||||
|
unsigned long glen,
|
||||||
|
const unsigned char *ydata,
|
||||||
|
unsigned long ylen,
|
||||||
|
const unsigned char *x, unsigned long x_len);
|
||||||
|
Creates a new context for DSA computations from source key values:
|
||||||
|
pdata, plen Prime number p. Only used if private key known (ddata).
|
||||||
|
qdata, qlen Prime number q. Only used if private key known (ddata).
|
||||||
|
gdata, glen G number.
|
||||||
|
ydata, ylen Public key.
|
||||||
|
xdata, xlen Private key. Only taken if xlen non-zero.
|
||||||
|
Returns 0 if OK.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_dsa_new_private(libssh2_dsa_ctx **dsa,
|
||||||
|
LIBSSH2_SESSION *session,
|
||||||
|
const char *filename,
|
||||||
|
unsigned const char *passphrase);
|
||||||
|
Gets a DSA private key from file filename into a new DSA context.
|
||||||
|
Must call _libssh2_init_if_needed().
|
||||||
|
Return 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_dsa_new_private_frommemory(libssh2_dsa_ctx **dsa,
|
||||||
|
LIBSSH2_SESSION *session,
|
||||||
|
const char *data,
|
||||||
|
size_t data_len,
|
||||||
|
unsigned const char *passphrase);
|
||||||
|
Gets a DSA private key from the data_len-bytes data into a new DSA context.
|
||||||
|
Must call _libssh2_init_if_needed().
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_dsa_sha1_verify(libssh2_dsa_ctx *dsactx,
|
||||||
|
const unsigned char *sig,
|
||||||
|
const unsigned char *m, unsigned long m_len);
|
||||||
|
Verify (sig, siglen) signature of (m, m_len) using an SHA1 hash and the
|
||||||
|
DSA context.
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
int _libssh2_dsa_sha1_sign(libssh2_dsa_ctx *dsactx,
|
||||||
|
const unsigned char *hash,
|
||||||
|
unsigned long hash_len, unsigned char *sig);
|
||||||
|
DSA signs the (hash, hash_len) data using SHA-1 and store the signature at sig.
|
||||||
|
Returns 0 if OK, else -1.
|
||||||
|
This procedure is already prototyped in crypto.h.
|
||||||
|
|
||||||
|
void _libssh2_dsa_free(libssh2_dsa_ctx *dsactx);
|
||||||
|
Releases the DSA computation context at dsactx.
|
||||||
|
|
||||||
|
|
||||||
|
7) Miscellaneous
|
||||||
|
|
||||||
|
void libssh2_prepare_iovec(struct iovec *vector, unsigned int len);
|
||||||
|
Prepare len consecutive iovec slots before using them.
|
||||||
|
In example, this is needed to preset unused structure slacks on platforms
|
||||||
|
requiring it.
|
||||||
|
If this is not needed, it should be defined as an empty macro.
|
||||||
|
|
||||||
|
void _libssh2_random(unsigned char *buf, int len);
|
||||||
|
Store len random bytes at buf.
|
325
docs/INSTALL_AUTOTOOLS
Normal file
325
docs/INSTALL_AUTOTOOLS
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||||
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. (Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.)
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You only need
|
||||||
|
`configure.ac' if you want to change it or regenerate `configure' using
|
||||||
|
a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that the
|
||||||
|
`configure' script does not know about. Run `./configure --help' for
|
||||||
|
details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not support the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a
|
||||||
|
time in the source code directory. After you have installed the
|
||||||
|
package for one architecture, use `make distclean' before reconfiguring
|
||||||
|
for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' installs the package's commands under
|
||||||
|
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||||
|
can specify an installation prefix other than `/usr/local' by giving
|
||||||
|
`configure' the option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||||
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out automatically,
|
||||||
|
but needs to determine by the type of machine the package will run on.
|
||||||
|
Usually, assuming the package is built to be run on the _same_
|
||||||
|
architectures, `configure' can figure that out, but if it prints a
|
||||||
|
message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the option `--target=TYPE' to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share, you
|
||||||
|
can create a site shell script called `config.site' that gives default
|
||||||
|
values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script). Here is a another example:
|
||||||
|
|
||||||
|
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||||
|
configuration-related scripts to be executed by `/bin/bash'.
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
||||||
|
More configure options
|
||||||
|
======================
|
||||||
|
|
||||||
|
Some ./configure options deserve additional comments:
|
||||||
|
|
||||||
|
* --enable-crypt-none
|
||||||
|
|
||||||
|
The SSH2 Transport allows for unencrypted data
|
||||||
|
transmission using the "none" cipher. Because this is
|
||||||
|
such a huge security hole, it is typically disabled on
|
||||||
|
SSH2 implementations and is disabled in libssh2 by
|
||||||
|
default as well.
|
||||||
|
|
||||||
|
Enabling this option will allow for "none" as a
|
||||||
|
negotiable method, however it still requires that the
|
||||||
|
method be advertized by the remote end and that no
|
||||||
|
more-preferable methods are available.
|
||||||
|
|
||||||
|
* --enable-mac-none
|
||||||
|
|
||||||
|
The SSH2 Transport also allows implementations to
|
||||||
|
forego a message authentication code. While this is
|
||||||
|
less of a security risk than using a "none" cipher, it
|
||||||
|
is still not recommended as disabling MAC hashes
|
||||||
|
removes a layer of security.
|
||||||
|
|
||||||
|
Enabling this option will allow for "none" as a
|
||||||
|
negotiable method, however it still requires that the
|
||||||
|
method be advertized by the remote end and that no
|
||||||
|
more-preferable methods are available.
|
||||||
|
|
||||||
|
* --disable-gex-new
|
||||||
|
|
||||||
|
The diffie-hellman-group-exchange-sha1 (dh-gex) key
|
||||||
|
exchange method originally defined an exchange
|
||||||
|
negotiation using packet type 30 to request a
|
||||||
|
generation pair based on a single target value. Later
|
||||||
|
refinement of dh-gex provided for range and target
|
||||||
|
values. By default libssh2 will use the newer range
|
||||||
|
method.
|
||||||
|
|
||||||
|
If you experience trouble connecting to an old SSH
|
||||||
|
server using dh-gex, try this option to fallback on
|
||||||
|
the older more reliable method.
|
||||||
|
|
||||||
|
* --with-libgcrypt
|
||||||
|
* --without-libgcrypt
|
||||||
|
* --with-libgcrypt-prefix=DIR
|
||||||
|
|
||||||
|
libssh2 can use the Libgcrypt library
|
||||||
|
(http://www.gnupg.org/) for cryptographic operations.
|
||||||
|
Either Libgcrypt or OpenSSL is required.
|
||||||
|
|
||||||
|
Configure will attempt to locate Libgcrypt
|
||||||
|
automatically.
|
||||||
|
|
||||||
|
If your installation of Libgcrypt is in another
|
||||||
|
location, specify it using --with-libgcrypt-prefix.
|
||||||
|
|
||||||
|
* --with-openssl
|
||||||
|
* --without-openssl
|
||||||
|
* --with-libssl-prefix=[DIR]
|
||||||
|
|
||||||
|
libssh2 can use the OpenSSL library
|
||||||
|
(http://www.openssl.org) for cryptographic operations.
|
||||||
|
Either Libgcrypt or OpenSSL is required.
|
||||||
|
|
||||||
|
Configure will attempt to locate OpenSSL in the
|
||||||
|
default location.
|
||||||
|
|
||||||
|
If your installation of OpenSSL is in another
|
||||||
|
location, specify it using --with-libssl-prefix.
|
||||||
|
|
||||||
|
* --with-libz
|
||||||
|
* --without-libz
|
||||||
|
* --with-libz-prefix=[DIR]
|
||||||
|
|
||||||
|
If present, libssh2 will attempt to use the zlib
|
||||||
|
(http://www.zlib.org) for payload compression, however
|
||||||
|
zlib is not required.
|
||||||
|
|
||||||
|
If your installation of Libz is in another location,
|
||||||
|
specify it using --with-libz-prefix.
|
||||||
|
|
||||||
|
* --enable-debug
|
||||||
|
|
||||||
|
Will make the build use more pedantic and strict compiler
|
||||||
|
options as well as enable the libssh2_trace() function (for
|
||||||
|
showing debug traces).
|
174
docs/INSTALL_CMAKE
Normal file
174
docs/INSTALL_CMAKE
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
License: see COPYING
|
||||||
|
|
||||||
|
Source code: https://github.com/libssh2/libssh2
|
||||||
|
|
||||||
|
Web site source code: https://github.com/libssh2/www
|
||||||
|
|
||||||
|
Installation instructions are in docs/INSTALL
|
||||||
|
=======
|
||||||
|
To build libssh2 you will need CMake v2.8 or later [1] and one of the
|
||||||
|
following cryptography libraries:
|
||||||
|
|
||||||
|
* OpenSSL
|
||||||
|
* Libgcrypt
|
||||||
|
* WinCNG
|
||||||
|
|
||||||
|
Getting started
|
||||||
|
---------------
|
||||||
|
|
||||||
|
If you are happy with the default options, make a new build directory,
|
||||||
|
change to it, configure the build environment and build the project:
|
||||||
|
|
||||||
|
mkdir bin
|
||||||
|
cd bin
|
||||||
|
cmake ..
|
||||||
|
cmake --build .
|
||||||
|
|
||||||
|
libssh2 will be built as a static library and will use any
|
||||||
|
cryptography library available. The library binary will be put in
|
||||||
|
`bin/src`, with the examples in `bin/example` and the tests in
|
||||||
|
`bin/tests`.
|
||||||
|
|
||||||
|
Customising the build
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Of course, you might want to customise the build options. You can
|
||||||
|
pass the options to CMake on the command line:
|
||||||
|
|
||||||
|
cmake -D<option>=<value> ..
|
||||||
|
|
||||||
|
The following options are available:
|
||||||
|
|
||||||
|
* `BUILD_SHARED_LIBS=OFF`
|
||||||
|
|
||||||
|
Determines whether libssh2 is built as a static library or as a
|
||||||
|
shared library (.dll/.so). Can be `ON` or `OFF`.
|
||||||
|
|
||||||
|
* `CRYPTO_BACKEND=`
|
||||||
|
|
||||||
|
Chooses a specific cryptography library to use for cryptographic
|
||||||
|
operations. Can be `OpenSSL` (http://www.openssl.org),
|
||||||
|
`Libgcrypt` (http://www.gnupg.org/), `WinCNG` (Windows Vista+) or
|
||||||
|
blank to use any library available.
|
||||||
|
|
||||||
|
CMake will attempt to locate the libraries automatically. See [2]
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
* `ENABLE_ZLIB_COMPRESSION=OFF`
|
||||||
|
|
||||||
|
Will use zlib (http://www.zlib.org) for payload compression. Can
|
||||||
|
be `ON` or `OFF`.
|
||||||
|
|
||||||
|
* `ENABLE_CRYPT_NONE=OFF`
|
||||||
|
|
||||||
|
The SSH2 Transport allows for unencrypted data transmission using
|
||||||
|
the "none" cipher. Because this is such a huge security hole, it
|
||||||
|
is typically disabled on SSH2 implementations and is disabled in
|
||||||
|
libssh2 by default as well.
|
||||||
|
|
||||||
|
Enabling this option will allow for "none" as a negotiable method,
|
||||||
|
however it still requires that the method be advertized by the
|
||||||
|
remote end and that no more-preferable methods are available.
|
||||||
|
|
||||||
|
* `ENABLE_MAC_NONE=OFF`
|
||||||
|
|
||||||
|
The SSH2 Transport also allows implementations to forego a message
|
||||||
|
authentication code. While this is less of a security risk than
|
||||||
|
using a "none" cipher, it is still not recommended as disabling
|
||||||
|
MAC hashes removes a layer of security.
|
||||||
|
|
||||||
|
Enabling this option will allow for "none" as a negotiable method,
|
||||||
|
however it still requires that the method be advertized by the
|
||||||
|
remote end and that no more-preferable methods are available.
|
||||||
|
|
||||||
|
* `ENABLE_GEX_NEW=ON`
|
||||||
|
|
||||||
|
The diffie-hellman-group-exchange-sha1 (dh-gex) key exchange
|
||||||
|
method originally defined an exchange negotiation using packet
|
||||||
|
type 30 to request a generation pair based on a single target
|
||||||
|
value. Later refinement of dh-gex provided for range and target
|
||||||
|
values. By default libssh2 will use the newer range method.
|
||||||
|
|
||||||
|
If you experience trouble connecting to an old SSH server using
|
||||||
|
dh-gex, try this option to fallback on the older more reliable
|
||||||
|
method.
|
||||||
|
|
||||||
|
* `ENABLE_DEBUG_LOGGING=ON` in Debug, `=OFF` in Release
|
||||||
|
|
||||||
|
Will enable the libssh2_trace() function for showing debug traces.
|
||||||
|
|
||||||
|
Build tools
|
||||||
|
-----------
|
||||||
|
|
||||||
|
The previous examples used CMake to start the build using:
|
||||||
|
|
||||||
|
cmake --build .
|
||||||
|
|
||||||
|
Alternatively, once CMake has configured your project, you can just
|
||||||
|
use your own build tool, e.g GNU make, Visual Studio, etc., from that
|
||||||
|
point onwards.
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
To test the build, run the appropriate test target for your build
|
||||||
|
system. For example:
|
||||||
|
|
||||||
|
cmake --build . --target test
|
||||||
|
or
|
||||||
|
cmake --build . --target RUN_TESTS
|
||||||
|
|
||||||
|
How do I use libssh2 in my project if my project doesn't use CMake?
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
|
If you are not using CMake for your own project, install libssh2
|
||||||
|
|
||||||
|
cmake <libssh2 source location>
|
||||||
|
cmake --build .
|
||||||
|
cmake --build . --target install
|
||||||
|
or
|
||||||
|
cmake --build . --target INSTALL
|
||||||
|
|
||||||
|
and then specify the install location to your project in the normal
|
||||||
|
way for your build environment. If you don't like the default install
|
||||||
|
location, add `-DCMAKE_INSTALL_PREFIX=<chosen prefix>` when initially
|
||||||
|
configuring the project.
|
||||||
|
|
||||||
|
How can I use libssh2 in my project if it also uses CMake?
|
||||||
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
If your own project also uses CMake, you don't need to worry about
|
||||||
|
setting it up with libssh2's location. Just add just the following
|
||||||
|
lines and CMake will find libssh2 on your system, set up the necessary
|
||||||
|
paths and link the library with your binary.
|
||||||
|
|
||||||
|
find_package(Libssh2 REQUIRED CONFIG)
|
||||||
|
target_link_libraries(my_project_target Libssh2::libssh2)
|
||||||
|
|
||||||
|
Of course, you still have to make libssh2 available on your system
|
||||||
|
first. You can install it in the traditional way shown above, but you
|
||||||
|
don't have to. Instead you can just build it, which will export its
|
||||||
|
location to the user package registry [3] where `find_package` will
|
||||||
|
find it.
|
||||||
|
|
||||||
|
You can even combine the two steps using a so-called 'superbuild'
|
||||||
|
project [4] that downloads, builds and exports libssh2, and then
|
||||||
|
builds your project:
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
Libssh2
|
||||||
|
URL <libssh2 download location>
|
||||||
|
URL_HASH SHA1=<libssh2 archive SHA1>
|
||||||
|
INSTALL_COMMAND "")
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
MyProject DEPENDS Libssh2
|
||||||
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
|
INSTALL_COMMAND "")
|
||||||
|
|
||||||
|
[1] http://www.cmake.org/cmake/resources/software.html
|
||||||
|
[2] http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html
|
||||||
|
[3] http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html#package-registry
|
||||||
|
[4] http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html
|
@ -1,6 +1,7 @@
|
|||||||
# $Id: Makefile.am,v 1.37 2009/03/26 15:41:15 bagder Exp $
|
# $Id: Makefile.am,v 1.37 2009/03/26 15:41:15 bagder Exp $
|
||||||
|
|
||||||
EXTRA_DIST = template.3
|
EXTRA_DIST = template.3 BINDINGS INSTALL_AUTOTOOLS INSTALL_CMAKE HACKING TODO \
|
||||||
|
AUTHORS CMakeLists.txt HACKING.CRYPTO
|
||||||
|
|
||||||
dist_man_MANS = \
|
dist_man_MANS = \
|
||||||
libssh2_agent_connect.3 \
|
libssh2_agent_connect.3 \
|
||||||
@ -25,6 +26,7 @@ dist_man_MANS = \
|
|||||||
libssh2_channel_forward_listen.3 \
|
libssh2_channel_forward_listen.3 \
|
||||||
libssh2_channel_forward_listen_ex.3 \
|
libssh2_channel_forward_listen_ex.3 \
|
||||||
libssh2_channel_free.3 \
|
libssh2_channel_free.3 \
|
||||||
|
libssh2_channel_get_exit_signal.3 \
|
||||||
libssh2_channel_get_exit_status.3 \
|
libssh2_channel_get_exit_status.3 \
|
||||||
libssh2_channel_handle_extended_data.3 \
|
libssh2_channel_handle_extended_data.3 \
|
||||||
libssh2_channel_handle_extended_data2.3 \
|
libssh2_channel_handle_extended_data2.3 \
|
||||||
@ -59,10 +61,11 @@ dist_man_MANS = \
|
|||||||
libssh2_channel_x11_req.3 \
|
libssh2_channel_x11_req.3 \
|
||||||
libssh2_channel_x11_req_ex.3 \
|
libssh2_channel_x11_req_ex.3 \
|
||||||
libssh2_exit.3 \
|
libssh2_exit.3 \
|
||||||
libssh2_free_host_entry.3 \
|
libssh2_free.3 \
|
||||||
libssh2_host_entry_match.3 \
|
|
||||||
libssh2_hostkey_hash.3 \
|
libssh2_hostkey_hash.3 \
|
||||||
libssh2_init.3 \
|
libssh2_init.3 \
|
||||||
|
libssh2_keepalive_config.3 \
|
||||||
|
libssh2_keepalive_send.3 \
|
||||||
libssh2_knownhost_add.3 \
|
libssh2_knownhost_add.3 \
|
||||||
libssh2_knownhost_addc.3 \
|
libssh2_knownhost_addc.3 \
|
||||||
libssh2_knownhost_check.3 \
|
libssh2_knownhost_check.3 \
|
||||||
@ -75,7 +78,6 @@ dist_man_MANS = \
|
|||||||
libssh2_knownhost_readline.3 \
|
libssh2_knownhost_readline.3 \
|
||||||
libssh2_knownhost_writefile.3 \
|
libssh2_knownhost_writefile.3 \
|
||||||
libssh2_knownhost_writeline.3 \
|
libssh2_knownhost_writeline.3 \
|
||||||
libssh2_new_host_entry.3 \
|
|
||||||
libssh2_poll.3 \
|
libssh2_poll.3 \
|
||||||
libssh2_poll_channel_read.3 \
|
libssh2_poll_channel_read.3 \
|
||||||
libssh2_publickey_add.3 \
|
libssh2_publickey_add.3 \
|
||||||
@ -87,10 +89,13 @@ dist_man_MANS = \
|
|||||||
libssh2_publickey_remove_ex.3 \
|
libssh2_publickey_remove_ex.3 \
|
||||||
libssh2_publickey_shutdown.3 \
|
libssh2_publickey_shutdown.3 \
|
||||||
libssh2_scp_recv.3 \
|
libssh2_scp_recv.3 \
|
||||||
|
libssh2_scp_recv2.3 \
|
||||||
libssh2_scp_send.3 \
|
libssh2_scp_send.3 \
|
||||||
libssh2_scp_send_ex.3 \
|
|
||||||
libssh2_scp_send64.3 \
|
libssh2_scp_send64.3 \
|
||||||
|
libssh2_scp_send_ex.3 \
|
||||||
libssh2_session_abstract.3 \
|
libssh2_session_abstract.3 \
|
||||||
|
libssh2_session_banner_get.3 \
|
||||||
|
libssh2_session_banner_set.3 \
|
||||||
libssh2_session_block_directions.3 \
|
libssh2_session_block_directions.3 \
|
||||||
libssh2_session_callback_set.3 \
|
libssh2_session_callback_set.3 \
|
||||||
libssh2_session_disconnect.3 \
|
libssh2_session_disconnect.3 \
|
||||||
@ -98,15 +103,20 @@ dist_man_MANS = \
|
|||||||
libssh2_session_flag.3 \
|
libssh2_session_flag.3 \
|
||||||
libssh2_session_free.3 \
|
libssh2_session_free.3 \
|
||||||
libssh2_session_get_blocking.3 \
|
libssh2_session_get_blocking.3 \
|
||||||
|
libssh2_session_get_timeout.3 \
|
||||||
|
libssh2_session_handshake.3 \
|
||||||
libssh2_session_hostkey.3 \
|
libssh2_session_hostkey.3 \
|
||||||
libssh2_session_init.3 \
|
libssh2_session_init.3 \
|
||||||
libssh2_session_init_ex.3 \
|
libssh2_session_init_ex.3 \
|
||||||
libssh2_session_last_errno.3 \
|
libssh2_session_last_errno.3 \
|
||||||
libssh2_session_last_error.3 \
|
libssh2_session_last_error.3 \
|
||||||
|
libssh2_session_set_last_error.3 \
|
||||||
libssh2_session_method_pref.3 \
|
libssh2_session_method_pref.3 \
|
||||||
libssh2_session_methods.3 \
|
libssh2_session_methods.3 \
|
||||||
libssh2_session_set_blocking.3 \
|
libssh2_session_set_blocking.3 \
|
||||||
|
libssh2_session_set_timeout.3 \
|
||||||
libssh2_session_startup.3 \
|
libssh2_session_startup.3 \
|
||||||
|
libssh2_session_supported_algs.3 \
|
||||||
libssh2_sftp_close.3 \
|
libssh2_sftp_close.3 \
|
||||||
libssh2_sftp_close_handle.3 \
|
libssh2_sftp_close_handle.3 \
|
||||||
libssh2_sftp_closedir.3 \
|
libssh2_sftp_closedir.3 \
|
||||||
@ -114,6 +124,8 @@ dist_man_MANS = \
|
|||||||
libssh2_sftp_fstat.3 \
|
libssh2_sftp_fstat.3 \
|
||||||
libssh2_sftp_fstat_ex.3 \
|
libssh2_sftp_fstat_ex.3 \
|
||||||
libssh2_sftp_fstatvfs.3 \
|
libssh2_sftp_fstatvfs.3 \
|
||||||
|
libssh2_sftp_fsync.3 \
|
||||||
|
libssh2_sftp_get_channel.3 \
|
||||||
libssh2_sftp_init.3 \
|
libssh2_sftp_init.3 \
|
||||||
libssh2_sftp_last_error.3 \
|
libssh2_sftp_last_error.3 \
|
||||||
libssh2_sftp_lstat.3 \
|
libssh2_sftp_lstat.3 \
|
||||||
@ -133,6 +145,7 @@ dist_man_MANS = \
|
|||||||
libssh2_sftp_rmdir.3 \
|
libssh2_sftp_rmdir.3 \
|
||||||
libssh2_sftp_rmdir_ex.3 \
|
libssh2_sftp_rmdir_ex.3 \
|
||||||
libssh2_sftp_seek.3 \
|
libssh2_sftp_seek.3 \
|
||||||
|
libssh2_sftp_seek64.3 \
|
||||||
libssh2_sftp_setstat.3 \
|
libssh2_sftp_setstat.3 \
|
||||||
libssh2_sftp_shutdown.3 \
|
libssh2_sftp_shutdown.3 \
|
||||||
libssh2_sftp_stat.3 \
|
libssh2_sftp_stat.3 \
|
||||||
@ -155,6 +168,8 @@ dist_man_MANS = \
|
|||||||
libssh2_userauth_list.3 \
|
libssh2_userauth_list.3 \
|
||||||
libssh2_userauth_password.3 \
|
libssh2_userauth_password.3 \
|
||||||
libssh2_userauth_password_ex.3 \
|
libssh2_userauth_password_ex.3 \
|
||||||
|
libssh2_userauth_publickey.3 \
|
||||||
libssh2_userauth_publickey_fromfile.3 \
|
libssh2_userauth_publickey_fromfile.3 \
|
||||||
libssh2_userauth_publickey_fromfile_ex.3 \
|
libssh2_userauth_publickey_fromfile_ex.3 \
|
||||||
|
libssh2_userauth_publickey_frommemory.3 \
|
||||||
libssh2_version.3
|
libssh2_version.3
|
||||||
|
174
docs/TODO
Normal file
174
docs/TODO
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
Things TODO
|
||||||
|
===========
|
||||||
|
|
||||||
|
* Fix the numerous malloc+copy operations for sending data, see "Buffering
|
||||||
|
Improvements" below for details
|
||||||
|
|
||||||
|
* make sure the windowing code adapts better to slow situations so that it
|
||||||
|
doesn't then use as much memory as today. Possibly by an app-controllable
|
||||||
|
"Window mode"?
|
||||||
|
|
||||||
|
* Decrease the number of mallocs. Everywhere. Will get easier once the
|
||||||
|
buffering improvements have been done.
|
||||||
|
|
||||||
|
* Use SO_NOSIGPIPE for Mac OS/BSD systems where MSG_NOSIGNAL doesn't
|
||||||
|
exist/work
|
||||||
|
|
||||||
|
* Extend the test suite to actually test lots of aspects of libssh2
|
||||||
|
|
||||||
|
* Fix all compiler warnings (some can't be done without API changes)
|
||||||
|
|
||||||
|
* Expose error messages sent by the server
|
||||||
|
|
||||||
|
* select() is troublesome with libssh2 when using multiple channels over
|
||||||
|
the same session. See "New Transport API" below for more details.
|
||||||
|
|
||||||
|
At next SONAME bump
|
||||||
|
===================
|
||||||
|
|
||||||
|
* stop using #defined macros as part of the official API. The macros should
|
||||||
|
either be turned into real functions or discarded from the API.
|
||||||
|
|
||||||
|
* fix the parts of the API where object pointers and function pointers are
|
||||||
|
mixed like libssh2_session_callback_set()
|
||||||
|
|
||||||
|
* remove the following functions from the API/ABI
|
||||||
|
|
||||||
|
libssh2_base64_decode()
|
||||||
|
libssh2_session_flag()
|
||||||
|
libssh2_channel_handle_extended_data()
|
||||||
|
libssh2_channel_receive_window_adjust()
|
||||||
|
libssh2_poll()
|
||||||
|
libssh2_poll_channel_read()
|
||||||
|
libssh2_session_startup() (libssh2_session_handshake() is the replacement)
|
||||||
|
libssh2_banner_set() (libssh2_session_banner_set() is the repacement)
|
||||||
|
|
||||||
|
* Rename a few function:
|
||||||
|
|
||||||
|
libssh2_hostkey_hash => libssh2_session_hostkey_hash
|
||||||
|
libssh2_banner_set => libssh2_session_banner_set
|
||||||
|
|
||||||
|
* change 'int' to 'libssh2_socket_t' in the public API for sockets.
|
||||||
|
|
||||||
|
* Use 'size_t' for string lengths in all functions.
|
||||||
|
|
||||||
|
* Add a comment field to struct libssh2_knownhost.
|
||||||
|
|
||||||
|
* remove the existing libssh2_knownhost_add() function and rename
|
||||||
|
libssh2_knownhost_addc to become the new libssh2_knownhost_add instead
|
||||||
|
|
||||||
|
* remove the existing libssh2_scp_send_ex() function and rename
|
||||||
|
libssh2_scp_send64 to become the new libssh2_scp_send instead.
|
||||||
|
|
||||||
|
* remove the existing libssh2_knownhost_check() functin and rename
|
||||||
|
libssh2_knownhost_checkp() to become the new libssh2_knownhost_check instead
|
||||||
|
|
||||||
|
Buffering Improvements
|
||||||
|
======================
|
||||||
|
|
||||||
|
transport_write
|
||||||
|
|
||||||
|
- If this function gets called with a total packet size that is larger than
|
||||||
|
32K, it should create more than one SSH packet so that it keeps the largest
|
||||||
|
one below 32K
|
||||||
|
|
||||||
|
sftp_write
|
||||||
|
|
||||||
|
- should not copy/allocate anything for the data, only create a header chunk
|
||||||
|
and pass on the payload data to channel_write "pointed to"
|
||||||
|
|
||||||
|
New Transport API
|
||||||
|
=================
|
||||||
|
|
||||||
|
THE PROBLEM
|
||||||
|
|
||||||
|
The problem in a nutshell is that when an application opens up multiple
|
||||||
|
channels over a single session, those are all using the same socket. If the
|
||||||
|
application is then using select() to wait for traffic (like any sensible app
|
||||||
|
does) and wants to act on the data when select() tells there is something to
|
||||||
|
for example read, what does an application do?
|
||||||
|
|
||||||
|
With our current API, you have to loop over all the channels and read from
|
||||||
|
them to see if they have data. This effectively makes blocking reads
|
||||||
|
impossible. If the app has many channels in a setup like this, it even becomes
|
||||||
|
slow. (The original API had the libssh2_poll_channel_read() and libssh2_poll()
|
||||||
|
to somewhat overcome this hurdle, but they too have pretty much the same
|
||||||
|
problems plus a few others.)
|
||||||
|
|
||||||
|
Traffic in the other direction is similarly limited: the app has to try
|
||||||
|
sending to all channels, even though some of them may very well not accept any
|
||||||
|
data at that point.
|
||||||
|
|
||||||
|
A SOLUTION
|
||||||
|
|
||||||
|
I suggest we introduce two new helper functions:
|
||||||
|
|
||||||
|
libssh2_transport_read()
|
||||||
|
|
||||||
|
- Read "a bunch" of data from the given socket and returns information to the
|
||||||
|
app about what channels that are now readable (ie they will not block when
|
||||||
|
read from). The function can be called over and over and it will repeatedly
|
||||||
|
return info about what channels that are readable at that moment.
|
||||||
|
|
||||||
|
libssh2_transport_write()
|
||||||
|
|
||||||
|
- Returns information about what channels that are writable, in the sense
|
||||||
|
that they have windows set from the remote side that allows data to get
|
||||||
|
sent. Writing to one of those channels will not block. Of course, the
|
||||||
|
underlying socket may only accept a certain amount of data, so at the first
|
||||||
|
short return, nothing more should be attempted to get sent until select()
|
||||||
|
(or equivalent) has been used on the master socket again.
|
||||||
|
|
||||||
|
I haven't yet figured out a sensible API for how these functions should return
|
||||||
|
that info, but if we agree on the general principles I guess we can work that
|
||||||
|
out.
|
||||||
|
|
||||||
|
VOLUNTARY
|
||||||
|
|
||||||
|
I wanted to mention that these two helper functions would not be mandatory
|
||||||
|
in any way. They would just be there for those who want them, and existing
|
||||||
|
programs can remain using the old functions only if they prefer to.
|
||||||
|
|
||||||
|
New SFTP API
|
||||||
|
============
|
||||||
|
|
||||||
|
PURPOSE
|
||||||
|
|
||||||
|
Provide API functions that explicitly tells at once that a (full) SFTP file
|
||||||
|
transfer is wanted, to allow libssh2 to leverage on that knowledge to speed
|
||||||
|
up things internally. It can for example do read ahead, buffer writes (merge
|
||||||
|
small writes into larger chunks), better tune the SSH window and more. This
|
||||||
|
sort of API is already provided for SCP transfers.
|
||||||
|
|
||||||
|
API
|
||||||
|
|
||||||
|
New functions:
|
||||||
|
|
||||||
|
LIBSSH2_SFTP_HANDLE *libssh2_sftp_send(SFTP_SESSION *sftp,
|
||||||
|
uint64_t filesize,
|
||||||
|
char *remote_path,
|
||||||
|
size_t remote_path_len,
|
||||||
|
long mode);
|
||||||
|
|
||||||
|
Tell libssh2 that a local file with a given size is about to get sent to
|
||||||
|
the SFTP server.
|
||||||
|
|
||||||
|
LIBSSH2_SFTP_HANDLE *libssh2_sftp_recv();
|
||||||
|
|
||||||
|
Tell libssh2 that a remote file is requested to get downloaded from the SFTP
|
||||||
|
server.
|
||||||
|
|
||||||
|
Only the setup of the file transfer is different from an application's point
|
||||||
|
of view. Depending on direction of the transfer(s), the following already
|
||||||
|
existing functions should then be used until the transfer is complete:
|
||||||
|
|
||||||
|
libssh2_sftp_read()
|
||||||
|
libssh2_sftp_write()
|
||||||
|
|
||||||
|
HOW TO USE
|
||||||
|
|
||||||
|
1. Setup the transfer using one of the two new functions.
|
||||||
|
|
||||||
|
2. Loop through the reading or writing of data.
|
||||||
|
|
||||||
|
3. Cleanup the transfer
|
@ -1,8 +1,6 @@
|
|||||||
.\" $Id: libssh2_banner_set.3,v 1.3 2009/03/17 10:34:27 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_banner_set 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_banner_set 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_banner_set - set the SSH prococol banner for the local client
|
libssh2_banner_set - set the SSH protocol banner for the local client
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
@ -10,6 +8,9 @@ int
|
|||||||
libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);
|
libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
This function is \fBDEPRECATED\fP. Use \fIlibssh2_session_banner_set(3)\fP
|
||||||
|
instead!
|
||||||
|
|
||||||
\fIsession\fP - Session instance as returned by
|
\fIsession\fP - Session instance as returned by
|
||||||
.BR libssh2_session_init_ex(3)
|
.BR libssh2_session_init_ex(3)
|
||||||
|
|
||||||
@ -17,16 +18,15 @@ libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);
|
|||||||
|
|
||||||
Set the banner that will be sent to the remote host when the SSH session is
|
Set the banner that will be sent to the remote host when the SSH session is
|
||||||
started with
|
started with
|
||||||
.BR libssh2_session_startup(3)
|
.BR libssh2_session_handshake(3)
|
||||||
This is optional; a banner corresponding to the protocol and libssh2 version will be sent by default.
|
This is optional; a banner corresponding to the protocol and libssh2 version will be sent by default.
|
||||||
|
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Return 0 on success or negative on failure. It returns
|
Return 0 on success or negative on failure. It returns
|
||||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||||
LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se.
|
LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se.
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Marked as deprecated since 1.4.0
|
||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR libssh2_session_startup(3)
|
.BR libssh2_session_handshake(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_base64_decode.3,v 1.3 2009/02/17 16:22:51 dottedmag Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_base64_decode 3 "23 Dec 2008" "libssh2 1.0" "libssh2 manual"
|
.TH libssh2_base64_decode 3 "23 Dec 2008" "libssh2 1.0" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_base64_decode - decode a base64 encoded string
|
libssh2_base64_decode - decode a base64 encoded string
|
||||||
@ -21,7 +19,7 @@ The returned buffer is allocated by this function, but it is not clear how to
|
|||||||
free that memory!
|
free that memory!
|
||||||
.SH BUGS
|
.SH BUGS
|
||||||
The memory that *dest points to is allocated by the malloc function libssh2
|
The memory that *dest points to is allocated by the malloc function libssh2
|
||||||
uses, but there's no way for an appliction to free this data in a safe and
|
uses, but there's no way for an application to free this data in a safe and
|
||||||
reliable way!
|
reliable way!
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
0 if successful, \-1 if any error occurred.
|
0 if successful, \-1 if any error occurred.
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_close.3,v 1.3 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_close 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_close 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_close - close a channel
|
libssh2_channel_close - close a channel
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_direct_tcpip 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_direct_tcpip 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_direct_tcpip - convenience macro for \fIlibssh2_channel_direct_tcpip_ex(3)\fP calls
|
libssh2_channel_direct_tcpip - convenience macro for \fIlibssh2_channel_direct_tcpip_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_direct_tcpip(arguments)
|
LIBSSH2_CHANNEL *
|
||||||
|
libssh2_channel_direct_tcpip(LIBSSH2_SESSION *session, const char *host, int port);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +15,4 @@ See \fIlibssh2_channel_direct_tcpip_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_direct_tcpip_ex(3)\fP
|
See \fIlibssh2_channel_direct_tcpip_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_direct_tcpip_ex(3)\fP
|
.BR libssh2_channel_direct_tcpip_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_direct_tcpip_ex.3,v 1.2 2009/03/17 10:34:27 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_direct_tcpip_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_direct_tcpip_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_direct_tcpip_ex - Tunnel a TCP connection through an SSH session
|
libssh2_channel_direct_tcpip_ex - Tunnel a TCP connection through an SSH session
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_eof.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_eof - check a channel's EOF status
|
libssh2_channel_eof - check a channel's EOF status
|
||||||
@ -13,6 +11,7 @@ libssh2_channel_eof(LIBSSH2_CHANNEL *channel);
|
|||||||
|
|
||||||
Check if the remote host has sent an EOF status for the selected stream.
|
Check if the remote host has sent an EOF status for the selected stream.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Returns 1 if the remote host has sent EOF, otherwise 0.
|
Returns 1 if the remote host has sent EOF, otherwise 0. Negative on
|
||||||
|
failure.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR libssh2_channel_close(3)
|
.BR libssh2_channel_close(3)
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_exec 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_exec 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_exec - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
libssh2_channel_exec - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_exec(arguments)
|
int libssh2_channel_exec(LIBSSH2_CHANNEL *channel, const char *command);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_process_startup(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_process_startup(3)\fP
|
See \fIlibssh2_channel_process_startup(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_process_startup(3)\fP
|
.BR libssh2_channel_process_startup(3)
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_flush 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_flush 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_flush - convenience macro for \fIlibssh2_channel_flush_ex(3)\fP calls
|
libssh2_channel_flush - convenience macro for \fIlibssh2_channel_flush_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_flush(arguments)
|
int libssh2_channel_flush(LIBSSH2_CHANNEL *channel);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_flush_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_flush_ex(3)\fP
|
See \fIlibssh2_channel_flush_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_flush_ex(3)\fP
|
.BR libssh2_channel_flush_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_flush_ex.3,v 1.1 2007/06/13 19:53:09 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_flush_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_flush_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_flush_ex - flush a channel
|
libssh2_channel_flush_ex - flush a channel
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_flush_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_flush_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_flush_stderr - convenience macro for \fIlibssh2_channel_flush_ex(3)\fP calls
|
libssh2_channel_flush_stderr - convenience macro for \fIlibssh2_channel_flush_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_flush_stderr(arguments)
|
int libssh2_channel_flush_stderr(LIBSSH2_CHANNEL *channel);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_flush_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_flush_ex(3)\fP
|
See \fIlibssh2_channel_flush_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_flush_ex(3)\fP
|
.BR libssh2_channel_flush_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_forward_accept.3,v 1.6 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_forward_accept 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_forward_accept 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_forward_accept - accept a queued connection
|
libssh2_channel_forward_accept - accept a queued connection
|
||||||
@ -15,7 +13,8 @@ libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
|
|||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
A newly allocated channel instance or NULL on failure.
|
A newly allocated channel instance or NULL on failure.
|
||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
\fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call
|
When this function returns NULL use \fIlibssh2_session_last_errno(3)\fP to
|
||||||
would block.
|
extract the error code. If that code is \fILIBSSH2_ERROR_EAGAIN\fP, the
|
||||||
|
session is set to do non-blocking I/O but the call would block.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR libssh2_channel_forward_listen_ex(3)
|
.BR libssh2_channel_forward_listen_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_forward_cancel.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_forward_cancel 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_forward_cancel 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_forward_cancel - cancel a forwarded TCP port
|
libssh2_channel_forward_cancel - cancel a forwarded TCP port
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_forward_listen 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_forward_listen 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_forward_listen - convenience macro for \fIlibssh2_channel_forward_listen_ex(3)\fP calls
|
libssh2_channel_forward_listen - convenience macro for \fIlibssh2_channel_forward_listen_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_forward_listen(arguments)
|
int libssh2_channel_forward_listen(LIBSSH2_SESSION *session, int port);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_forward_listen_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_forward_listen_ex(3)\fP
|
See \fIlibssh2_channel_forward_listen_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_forward_listen_ex(3)\fP
|
.BR libssh2_channel_forward_listen_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_forward_listen_ex.3,v 1.7 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_forward_listen_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_forward_listen_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_forward_listen_ex - listen to inbound connections
|
libssh2_channel_forward_listen_ex - listen to inbound connections
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_free.3,v 1.1 2007/06/13 20:09:15 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_free 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_free 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_free - free all resources associated with a channel
|
libssh2_channel_free - free all resources associated with a channel
|
||||||
|
34
docs/libssh2_channel_get_exit_signal.3
Normal file
34
docs/libssh2_channel_get_exit_signal.3
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
.TH libssh2_channel_get_exit_signal 3 "4 Oct 2010" "libssh2 1.2.8" "libssh2 manual"
|
||||||
|
.SH NAME
|
||||||
|
libssh2_channel_get_exit_signal - get the remote exit signal
|
||||||
|
.SH SYNOPSIS
|
||||||
|
#include <libssh2.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
libssh2_channel_get_exit_signal(LIBSSH2_CHANNEL *channel, char **exitsignal, size_t *exitsignal_len, char **errmsg, size_t *errmsg_len, char **langtag, size_t *langtag_len);
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fIchannel\fP - Closed channel stream to retrieve exit signal from.
|
||||||
|
|
||||||
|
\fIexitsignal\fP - If not NULL, is populated by reference with the exit signal
|
||||||
|
(without leading "SIG"). Note that the string is stored in a newly allocated
|
||||||
|
buffer. If the remote program exited cleanly, the referenced string pointer
|
||||||
|
will be set to NULL.
|
||||||
|
|
||||||
|
\fIexitsignal_len\fP - If not NULL, is populated by reference with the length
|
||||||
|
of exitsignal.
|
||||||
|
|
||||||
|
\fIerrmsg\fP - If not NULL, is populated by reference with the error message
|
||||||
|
(if provided by remote server, if not it will be set to NULL). Note that the
|
||||||
|
string is stored in a newly allocated buffer.
|
||||||
|
|
||||||
|
\fIerrmsg_len\fP - If not NULL, is populated by reference with the length of errmsg.
|
||||||
|
|
||||||
|
\fIlangtag\fP - If not NULL, is populated by reference with the language tag
|
||||||
|
(if provided by remote server, if not it will be set to NULL). Note that the
|
||||||
|
string is stored in a newly allocated buffer.
|
||||||
|
|
||||||
|
\fIlangtag_len\fP - If not NULL, is populated by reference with the length of langtag.
|
||||||
|
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Numeric error code corresponding to the the Error Code constants.
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_get_exit_status.3,v 1.1 2007/06/15 10:53:04 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_get_exit_status 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_get_exit_status 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_get_exit_status - get the remote exit code
|
libssh2_channel_get_exit_status - get the remote exit code
|
||||||
@ -10,7 +8,7 @@ int
|
|||||||
libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel)
|
libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel)
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fIchannel\fP - Closed channel stream to retreive exit status from.
|
\fIchannel\fP - Closed channel stream to retrieve exit status from.
|
||||||
|
|
||||||
Returns the exit code raised by the process running on the remote host at
|
Returns the exit code raised by the process running on the remote host at
|
||||||
the other end of the named channel. Note that the exit status may not be
|
the other end of the named channel. Note that the exit status may not be
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_handle_extended_data.3,v 1.2 2009/03/26 15:41:16 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_handle_extended_data 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_handle_extended_data 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_handle_extended_data - set extended data handling mode
|
libssh2_channel_handle_extended_data - set extended data handling mode
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_handle_extended_data2.3,v 1.1 2007/06/13 20:09:15 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_handle_extended_data2 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_handle_extended_data2 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_handle_extended_data2 - set extended data handling mode
|
libssh2_channel_handle_extended_data2 - set extended data handling mode
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_ignore_extended_data 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_ignore_extended_data 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_ignore_extended_data - convenience macro for \fIlibssh2_channel_handle_extended_data(3)\fP calls
|
libssh2_channel_ignore_extended_data - convenience macro for \fIlibssh2_channel_handle_extended_data(3)\fP calls
|
||||||
@ -9,6 +7,9 @@ libssh2_channel_ignore_extended_data - convenience macro for \fIlibssh2_channel_
|
|||||||
libssh2_channel_ignore_extended_data(arguments)
|
libssh2_channel_ignore_extended_data(arguments)
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
This function is deprecated. Use the
|
||||||
|
\fIlibssh2_channel_handle_extended_data2(3)\fP function instead!
|
||||||
|
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
underlying function \fIlibssh2_channel_handle_extended_data(3)\fP.
|
underlying function \fIlibssh2_channel_handle_extended_data(3)\fP.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
@ -16,4 +17,4 @@ See \fIlibssh2_channel_handle_extended_data(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_handle_extended_data(3)\fP
|
See \fIlibssh2_channel_handle_extended_data(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_handle_extended_data(3)\fP
|
.BR libssh2_channel_handle_extended_data(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_open_ex.3,v 1.2 2009/03/17 10:34:27 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_open_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_open_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_open_ex - establish a generic session channel
|
libssh2_channel_open_ex - establish a generic session channel
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_open_session 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_open_session 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_open_session - convenience macro for \fIlibssh2_channel_open_ex(3)\fP calls
|
libssh2_channel_open_session - convenience macro for \fIlibssh2_channel_open_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_open_session(arguments)
|
LIBSSH2_CHANNEL *
|
||||||
|
libssh2_channel_open_session(LIBSSH2_SESSION *session);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +15,4 @@ See \fIlibssh2_channel_open_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_open_ex(3)\fP
|
See \fIlibssh2_channel_open_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_open_ex(3)\fP
|
.BR libssh2_channel_open_ex(3)
|
||||||
|
@ -1,23 +1,15 @@
|
|||||||
.\" $Id: libssh2_channel_process_startup.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_process_startup 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_process_startup 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_process_startup - request a shell on a channel
|
libssh2_channel_process_startup - request a shell on a channel
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
int
|
int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel,
|
||||||
libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel, const char *request, unsigned int request_len, const char *message, unsigned int message_len);
|
const char *request,
|
||||||
|
unsigned int request_len,
|
||||||
int
|
const char *message,
|
||||||
libssh2_channel_shell(LIBSSH2_CHANNEL *channel);
|
unsigned int message_len);
|
||||||
|
|
||||||
int
|
|
||||||
libssh2_channel_exec(LIBSSH2_CHANNEL *channel, const char *message);
|
|
||||||
|
|
||||||
int
|
|
||||||
libssh2_channel_subsystem(LIBSSH2_CHANNEL *channel, const char *message);
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fIchannel\fP - Active session channel instance.
|
\fIchannel\fP - Active session channel instance.
|
||||||
|
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_read 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_read 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_read - convenience macro for \fIlibssh2_channel_read_ex(3)\fP calls
|
libssh2_channel_read - convenience macro for \fIlibssh2_channel_read_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_read(arguments)
|
ssize_t libssh2_channel_read(LIBSSH2_CHANNEL *channel, char *buf, size_t buflen);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_read_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_read_ex(3)\fP
|
See \fIlibssh2_channel_read_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_read_ex(3)\fP
|
.BR libssh2_channel_read_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_read_ex.3,v 1.10 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_read_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_read_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_read_ex - read data from a channel stream
|
libssh2_channel_read_ex - read data from a channel stream
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_read_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_read_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_read_stderr - convenience macro for \fIlibssh2_channel_read_ex(3)\fP calls
|
libssh2_channel_read_stderr - convenience macro for \fIlibssh2_channel_read_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_read_stderr(arguments)
|
ssize_t libssh2_channel_read_stderr(LIBSSH2_CHANNEL *channel, char *buf, size_t buflen);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_read_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_read_ex(3)\fP
|
See \fIlibssh2_channel_read_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_read_ex(3)\fP
|
.BR libssh2_channel_read_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_receive_window_adjust.3,v 1.3 2009/03/26 15:41:16 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_receive_window_adjust 3 "15 Mar 2009" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_receive_window_adjust 3 "15 Mar 2009" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_receive_window_adjust - adjust the channel window
|
libssh2_channel_receive_window_adjust - adjust the channel window
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_receive_window_adjust2.3,v 1.1 2009/03/26 15:41:16 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_receive_window_adjust2 3 "26 Mar 2009" "libssh2 1.1" "libssh2 manual"
|
.TH libssh2_channel_receive_window_adjust2 3 "26 Mar 2009" "libssh2 1.1" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_receive_window_adjust2 - adjust the channel window
|
libssh2_channel_receive_window_adjust2 - adjust the channel window
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_request_pty 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_request_pty 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_request_pty - convenience macro for \fIlibssh2_channel_request_pty_ex(3)\fP calls
|
libssh2_channel_request_pty - convenience macro for \fIlibssh2_channel_request_pty_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_request_pty(arguments)
|
int libssh2_channel_request_pty(LIBSSH2_SESSION *session, const char *term);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_request_pty_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_request_pty_ex(3)\fP
|
See \fIlibssh2_channel_request_pty_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_request_pty_ex(3)\fP
|
.BR libssh2_channel_request_pty_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_request_pty_ex.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_request_pty_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_request_pty_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_request_pty_ex - short function description
|
libssh2_channel_request_pty_ex - short function description
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_request_pty_size 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_request_pty_size 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_request_pty_size - convenience macro for \fIlibssh2_channel_request_pty_size_ex(3)\fP calls
|
libssh2_channel_request_pty_size - convenience macro for \fIlibssh2_channel_request_pty_size_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_request_pty_size(arguments)
|
int libssh2_channel_request_pty_size(LIBSSH2_CHANNEL *channel, int width, int height);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_request_pty_size_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_request_pty_size_ex(3)\fP
|
See \fIlibssh2_channel_request_pty_size_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_request_pty_size_ex(3)\fP
|
.BR libssh2_channel_request_pty_size_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_request_pty_size_ex.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_request_pty_size_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_request_pty_size_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_request_pty_size_ex - TODO
|
libssh2_channel_request_pty_size_ex - TODO
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_send_eof.3,v 1.1 2007/06/13 21:07:59 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_send_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_send_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_send_eof - send EOF to remote server
|
libssh2_channel_send_eof - send EOF to remote server
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_set_blocking.3,v 1.6 2009/03/26 15:41:16 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_set_blocking 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_set_blocking 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_set_blocking - set or clear blocking mode on channel
|
libssh2_channel_set_blocking - set or clear blocking mode on channel
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_setenv 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_setenv 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_setenv - convenience macro for \fIlibssh2_channel_setenv_ex(3)\fP calls
|
libssh2_channel_setenv - convenience macro for \fIlibssh2_channel_setenv_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_setenv(arguments)
|
int libssh2_channel_setenv(LIBSSH2_CHANNEL *channel, const char *varname, const char *value);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_setenv_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_setenv_ex(3)\fP
|
See \fIlibssh2_channel_setenv_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_setenv_ex(3)\fP
|
.BR libssh2_channel_setenv_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_setenv_ex.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_setenv_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_setenv_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_setenv_ex - set an environment variable on the channel
|
libssh2_channel_setenv_ex - set an environment variable on the channel
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_shell 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_shell 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_shell - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
libssh2_channel_shell - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_shell(arguments)
|
int libssh2_channel_shell(LIBSSH2_CHANNEL *channel);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_process_startup(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_process_startup(3)\fP
|
See \fIlibssh2_channel_process_startup(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_process_startup(3)\fP
|
.BR libssh2_channel_process_startup(3)
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_subsystem 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_subsystem 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_subsystem - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
libssh2_channel_subsystem - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_subsystem(arguments)
|
int libssh2_channel_subsystem(LIBSSH2_CHANNEL *channel, const char *subsystem);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_process_startup(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_process_startup(3)\fP
|
See \fIlibssh2_channel_process_startup(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_process_startup(3)\fP
|
.BR libssh2_channel_process_startup(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_wait_closed.3,v 1.2 2007/11/29 10:04:16 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_wait_closed 3 "29 Nov 2007" "libssh2 0.19" "libssh2 manual"
|
.TH libssh2_channel_wait_closed 3 "29 Nov 2007" "libssh2 0.19" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_wait_closed - wait for the remote to close the channel
|
libssh2_channel_wait_closed - wait for the remote to close the channel
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_wait_eof.3,v 1.5 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_wait_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_wait_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_wait_eof - wait for the remote to reply to an EOF request
|
libssh2_channel_wait_eof - wait for the remote to reply to an EOF request
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_window_read 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_window_read 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_window_read - convenience macro for \fIlibssh2_channel_window_read_ex(3)\fP calls
|
libssh2_channel_window_read - convenience macro for \fIlibssh2_channel_window_read_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_window_read(arguments)
|
unsigned long libssh2_channel_window_read(LIBSSH2_CHANNEL *channel);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_window_read_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_window_read_ex(3)\fP
|
See \fIlibssh2_channel_window_read_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_window_read_ex(3)\fP
|
.BR libssh2_channel_window_read_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_window_read_ex.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_window_read_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_window_read_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_window_read_ex - Check the status of the read window
|
libssh2_channel_window_read_ex - Check the status of the read window
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_window_write 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_window_write 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_window_write - convenience macro for \fIlibssh2_channel_window_write_ex(3)\fP calls
|
libssh2_channel_window_write - convenience macro for \fIlibssh2_channel_window_write_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_window_write(arguments)
|
unsigned long libssh2_channel_window_write(LIBSSH2_CHANNEL *channel);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_window_write_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_window_write_ex(3)\fP
|
See \fIlibssh2_channel_window_write_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_window_write_ex(3)\fP
|
.BR libssh2_channel_window_write_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_window_write_ex.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_window_write_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_window_write_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_window_write_ex - Check the status of the write window
|
libssh2_channel_window_write_ex - Check the status of the write window
|
||||||
@ -11,11 +9,11 @@ libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel,
|
|||||||
unsigned long *window_size_initial)
|
unsigned long *window_size_initial)
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Check the status of the write window Returns the number of bytes which may be
|
Check the status of the write window Returns the number of bytes which may be
|
||||||
safely writen on the channel without blocking. 'window_size_initial' (if
|
safely written on the channel without blocking. 'window_size_initial' (if
|
||||||
passed) will be populated with the size of the initial window as defined by
|
passed) will be populated with the size of the initial window as defined by
|
||||||
the channel_open request
|
the channel_open request
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Number of bytes which may be safely writen on the channel without blocking.
|
Number of bytes which may be safely written on the channel without blocking.
|
||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_write 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_write 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_write - convenience macro for \fIlibssh2_channel_write_ex(3)\fP calls
|
libssh2_channel_write - convenience macro for \fIlibssh2_channel_write_ex(3)\fP
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_write(arguments)
|
ssize_t libssh2_channel_write(LIBSSH2_CHANNEL *channel, const char *buf, size_t buflen);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +15,4 @@ See \fIlibssh2_channel_write_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_write_ex(3)\fP
|
See \fIlibssh2_channel_write_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_write_ex(3)\fP
|
.BR libssh2_channel_write_ex(3)
|
||||||
|
@ -1,19 +1,13 @@
|
|||||||
.\" $Id: libssh2_channel_write_ex.3,v 1.6 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_write_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_write_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_write_ex - write data to a channel stream blocking
|
libssh2_channel_write_ex - write data to a channel stream blocking
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
ssize_t
|
ssize_t libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel,
|
||||||
libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel, int stream_id, char *buf, size_t buflen);
|
int stream_id, char *buf,
|
||||||
|
size_t buflen);
|
||||||
ssize_t
|
|
||||||
libssh2_channel_write(LIBSSH2_CHANNEL *channel, char *buf, size_t buflen);
|
|
||||||
|
|
||||||
ssize_t
|
|
||||||
libssh2_channel_write_stderr(LIBSSH2_CHANNEL *channel, char *buf, size_t buflen);
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Write data to a channel stream. All channel streams have one standard I/O
|
Write data to a channel stream. All channel streams have one standard I/O
|
||||||
substream (stream_id == 0), and may have up to 2^32 extended data streams as
|
substream (stream_id == 0), and may have up to 2^32 extended data streams as
|
||||||
@ -29,7 +23,12 @@ defines a stream ID of 1 to be the stderr substream.
|
|||||||
\fIbuflen\fP - size of the data to write
|
\fIbuflen\fP - size of the data to write
|
||||||
|
|
||||||
\fIlibssh2_channel_write(3)\fP and \fIlibssh2_channel_write_stderr(3)\fP are
|
\fIlibssh2_channel_write(3)\fP and \fIlibssh2_channel_write_stderr(3)\fP are
|
||||||
macros.
|
convenience macros for this function.
|
||||||
|
|
||||||
|
\fIlibssh2_channel_write_ex(3)\fP will use as much as possible of the buffer
|
||||||
|
and put it into a single SSH protocol packet. This means that to get maximum
|
||||||
|
performance when sending larger files, you should try to always pass in at
|
||||||
|
least 32K of data to this function.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Actual number of bytes written or negative on failure.
|
Actual number of bytes written or negative on failure.
|
||||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_write_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_write_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_write_stderr - convenience macro for \fIlibssh2_channel_write_ex(3)\fP calls
|
libssh2_channel_write_stderr - convenience macro for \fIlibssh2_channel_write_ex(3)\fP
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_write_stderr(arguments)
|
ssize_t libssh2_channel_write_stderr(LIBSSH2_CHANNEL *channel, const char *buf, size_t buflen);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +15,4 @@ See \fIlibssh2_channel_write_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_write_ex(3)\fP
|
See \fIlibssh2_channel_write_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_write_ex(3)\fP
|
.BR libssh2_channel_write_ex(3)
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_x11_req 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_channel_x11_req 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_x11_req - convenience macro for \fIlibssh2_channel_x11_req_ex(3)\fP calls
|
libssh2_channel_x11_req - convenience macro for \fIlibssh2_channel_x11_req_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_channel_x11_req(arguments)
|
int libssh2_channel_x11_req(LIBSSH2_CHANNEL *channel, int screen_number);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +14,4 @@ See \fIlibssh2_channel_x11_req_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_channel_x11_req_ex(3)\fP
|
See \fIlibssh2_channel_x11_req_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_channel_x11_req_ex(3)\fP
|
.BR libssh2_channel_x11_req_ex(3)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_channel_x11_req_ex.3,v 1.2 2009/03/16 23:25:14 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_channel_x11_req_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_channel_x11_req_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_channel_x11_req_ex - request an X11 forwarding channel
|
libssh2_channel_x11_req_ex - request an X11 forwarding channel
|
||||||
|
19
docs/libssh2_free.3
Normal file
19
docs/libssh2_free.3
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.TH libssh2_exit 3 "13 Oct 2010" "libssh2 1.2.8" "libssh2 manual"
|
||||||
|
.SH NAME
|
||||||
|
libssh2_free - deallocate libssh2 memory
|
||||||
|
.SH SYNOPSIS
|
||||||
|
#include <libssh2.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
libssh2_free(LIBSSH2_SESSION *session, void *ptr);
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Deallocate memory allocated by earlier call to libssh2 functions. It
|
||||||
|
uses the memory allocation callbacks provided by the application, if
|
||||||
|
any. Otherwise, this will just call free().
|
||||||
|
|
||||||
|
This function is mostly useful under Windows when libssh2 is linked to
|
||||||
|
one run-time library and the application to another.
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in libssh2 1.2.8
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR libssh2_session_init_ex(3)
|
@ -1,14 +0,0 @@
|
|||||||
.\" $Id: libssh2_free_host_entry.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_free_host_entry 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
|
||||||
.SH NAME
|
|
||||||
libssh2_free_host_entry - TODO
|
|
||||||
.SH SYNOPSIS
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
|
|
||||||
.SH RETURN VALUE
|
|
||||||
|
|
||||||
.SH ERRORS
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
@ -1,14 +0,0 @@
|
|||||||
.\" $Id: libssh2_host_entry_match.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_host_entry_match 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
|
||||||
.SH NAME
|
|
||||||
libssh2_host_entry_match - TODO
|
|
||||||
.SH SYNOPSIS
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
|
|
||||||
.SH RETURN VALUE
|
|
||||||
|
|
||||||
.SH ERRORS
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_hostkey_hash.3,v 1.2 2009/03/17 10:34:27 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_hostkey_hash 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_hostkey_hash 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_hostkey_hash - return a hash of the remote host's key
|
libssh2_hostkey_hash - return a hash of the remote host's key
|
||||||
@ -20,8 +18,9 @@ Returns the computed digest of the remote system's hostkey. The length of
|
|||||||
the returned string is hash_type specific (e.g. 16 bytes for MD5,
|
the returned string is hash_type specific (e.g. 16 bytes for MD5,
|
||||||
20 bytes for SHA1).
|
20 bytes for SHA1).
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Computed hostkey hash value. or NULL if the session has not yet been started
|
Computed hostkey hash value, or NULL if the information is not available
|
||||||
up. (The hash consists of raw binary bytes, not hex digits, so is not
|
(either the session has not yet been started up, or the requested hash
|
||||||
directly printable.)
|
algorithm was not available). The hash consists of raw binary bytes, not hex
|
||||||
|
digits, so it is not directly printable.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR libssh2_session_init_ex(3)
|
.BR libssh2_session_init_ex(3)
|
||||||
|
27
docs/libssh2_keepalive_config.3
Normal file
27
docs/libssh2_keepalive_config.3
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
.TH libssh2_keepalive_config 3 "12 Apr 2011" "libssh2 1.2.5" "libssh2 manual"
|
||||||
|
.SH NAME
|
||||||
|
libssh2_keepalive_config - short function description
|
||||||
|
.SH SYNOPSIS
|
||||||
|
#include <libssh2.h>
|
||||||
|
.nf
|
||||||
|
|
||||||
|
void libssh2_keepalive_config(LIBSSH2_SESSION *session,
|
||||||
|
int want_reply,
|
||||||
|
unsigned interval);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Set how often keepalive messages should be sent. \fBwant_reply\fP indicates
|
||||||
|
whether the keepalive messages should request a response from the server.
|
||||||
|
\fBinterval\fP is number of seconds that can pass without any I/O, use 0 (the
|
||||||
|
default) to disable keepalives. To avoid some busy-loop corner-cases, if you
|
||||||
|
specify an interval of 1 it will be treated as 2.
|
||||||
|
|
||||||
|
Note that non-blocking applications are responsible for sending the keepalive
|
||||||
|
messages using \fBlibssh2_keepalive_send(3)\fP.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Nothing
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in libssh2 1.2.5
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR libssh2_keepalive_send(3)
|
||||||
|
|
18
docs/libssh2_keepalive_send.3
Normal file
18
docs/libssh2_keepalive_send.3
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
.TH libssh2_keepalive_send 3 "13 Apr 2011" "libssh2 1.2.5" "libssh2 manual"
|
||||||
|
.SH NAME
|
||||||
|
libssh2_keepalive_send - short function description
|
||||||
|
.SH SYNOPSIS
|
||||||
|
#include <libssh2.h>
|
||||||
|
.nf
|
||||||
|
|
||||||
|
int libssh2_keepalive_send(LIBSSH2_SESSION *session,
|
||||||
|
int *seconds_to_next);
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Send a keepalive message if needed. \fBseconds_to_next\fP indicates how many
|
||||||
|
seconds you can sleep after this call before you need to call it again.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns 0 on success, or LIBSSH2_ERROR_SOCKET_SEND on I/O errors.
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in libssh2 1.2.5
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR libssh2_keepalive_config(3)
|
@ -36,7 +36,7 @@ The salt has to be provided base64 encoded with a trailing zero byte.
|
|||||||
argument
|
argument
|
||||||
|
|
||||||
\fItypemask\fP is a bitmask that specifies format and info about the data
|
\fItypemask\fP is a bitmask that specifies format and info about the data
|
||||||
passed to this function. Specificly, it details what format the host name is,
|
passed to this function. Specifically, it details what format the host name is,
|
||||||
what format the key is and what key type it is.
|
what format the key is and what key type it is.
|
||||||
|
|
||||||
The host name is given as one of the following types:
|
The host name is given as one of the following types:
|
||||||
|
@ -40,7 +40,7 @@ argument
|
|||||||
\fIcommentlen\fP is the total size in bytes of the comment pointed to by the \fIcomment\fP argument
|
\fIcommentlen\fP is the total size in bytes of the comment pointed to by the \fIcomment\fP argument
|
||||||
|
|
||||||
\fItypemask\fP is a bitmask that specifies format and info about the data
|
\fItypemask\fP is a bitmask that specifies format and info about the data
|
||||||
passed to this function. Specificly, it details what format the host name is,
|
passed to this function. Specifically, it details what format the host name is,
|
||||||
what format the key is and what key type it is.
|
what format the key is and what key type it is.
|
||||||
|
|
||||||
The host name is given as one of the following types:
|
The host name is given as one of the following types:
|
||||||
|
@ -25,7 +25,7 @@ IP numerical address of the host or the full name.
|
|||||||
argument
|
argument
|
||||||
|
|
||||||
\fItypemask\fP is a bitmask that specifies format and info about the data
|
\fItypemask\fP is a bitmask that specifies format and info about the data
|
||||||
passed to this function. Specificly, it details what format the host name is,
|
passed to this function. Specifically, it details what format the host name is,
|
||||||
what format the key is and what key type it is.
|
what format the key is and what key type it is.
|
||||||
|
|
||||||
The host name is given as one of the following types:
|
The host name is given as one of the following types:
|
||||||
|
@ -30,7 +30,7 @@ addition to the plain host name only check.
|
|||||||
argument
|
argument
|
||||||
|
|
||||||
\fItypemask\fP is a bitmask that specifies format and info about the data
|
\fItypemask\fP is a bitmask that specifies format and info about the data
|
||||||
passed to this function. Specificly, it details what format the host name is,
|
passed to this function. Specifically, it details what format the host name is,
|
||||||
what format the key is and what key type it is.
|
what format the key is and what key type it is.
|
||||||
|
|
||||||
The host name is given as one of the following types:
|
The host name is given as one of the following types:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2009 by Daniel Stenberg
|
.\" Copyright (c) 2009-2011 by Daniel Stenberg
|
||||||
.\"
|
.\"
|
||||||
.TH libssh2_knownhost_readfile 3 "28 May 2009" "libssh2 1.2" "libssh2 manual"
|
.TH libssh2_knownhost_readfile 3 "28 May 2009" "libssh2 1.2" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@ -19,8 +19,8 @@ collection of known hosts.
|
|||||||
\fILIBSSH2_KNOWNHOST_FILE_OPENSSH\fP is the only currently supported
|
\fILIBSSH2_KNOWNHOST_FILE_OPENSSH\fP is the only currently supported
|
||||||
format. This file is normally found named ~/.ssh/known_hosts
|
format. This file is normally found named ~/.ssh/known_hosts
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Returns a regular libssh2 error code, where negative values are error codes
|
Returns a negative value, a regular libssh2 error code for errors, or a
|
||||||
and 0 indicates success.
|
positive number as number of parsed known hosts in the file.
|
||||||
.SH AVAILABILITY
|
.SH AVAILABILITY
|
||||||
Added in libssh2 1.2
|
Added in libssh2 1.2
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
.\" $Id: libssh2_new_host_entry.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_new_host_entry 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
|
||||||
.SH NAME
|
|
||||||
libssh2_new_host_entry - TODO
|
|
||||||
.SH SYNOPSIS
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
|
|
||||||
.SH RETURN VALUE
|
|
||||||
|
|
||||||
.SH ERRORS
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_poll.3,v 1.4 2009/04/14 21:38:36 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_poll 3 "14 Dec 2006" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_poll 3 "14 Dec 2006" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_poll - poll for activity on a socket, channel or listener
|
libssh2_poll - poll for activity on a socket, channel or listener
|
||||||
@ -10,7 +8,7 @@ int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds, long timeout);
|
|||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This function is deprecated. Do note use. We encourage users to instead use
|
This function is deprecated. Do note use. We encourage users to instead use
|
||||||
the \fIpoll(3)\fP or \fIselect(3)\fP functions to check for socket activity or
|
the \fIpoll(3)\fP or \fIselect(3)\fP functions to check for socket activity or
|
||||||
when specific sockets are ready to get recevied from or send to.
|
when specific sockets are ready to get received from or send to.
|
||||||
|
|
||||||
Poll for activity on a socket, channel, listener, or any combination of these
|
Poll for activity on a socket, channel, listener, or any combination of these
|
||||||
three types. The calling semantics for this function generally match
|
three types. The calling semantics for this function generally match
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_poll_channel_read.3,v 1.3 2009/04/14 21:38:36 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_poll_channel_read 3 "14 Dec 2006" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_poll_channel_read 3 "14 Dec 2006" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_poll_channel_read - check if data is available
|
libssh2_poll_channel_read - check if data is available
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
.\" $Id: template.3,v 1.4 2007/06/13 16:41:33 jehousley Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_publickey_add 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
.TH libssh2_publickey_add 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_publickey_add - convenience macro for \fIlibssh2_publickey_add_ex(3)\fP calls
|
libssh2_publickey_add - convenience macro for \fIlibssh2_publickey_add_ex(3)\fP calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
libssh2_publickey_add(arguments)
|
int libssh2_publickey_add(LIBSSH2_PUBLICKEY *pkey,
|
||||||
|
const unsigned char *name,
|
||||||
|
const unsigned char *blob, unsigned long blob_len, char overwrite,
|
||||||
|
unsigned long num_attrs, const libssh2_publickey_attribute attrs[]);
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This is a macro defined in a public libssh2 header file that is using the
|
This is a macro defined in a public libssh2 header file that is using the
|
||||||
@ -16,4 +17,4 @@ See \fIlibssh2_publickey_add_ex(3)\fP
|
|||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
See \fIlibssh2_publickey_add_ex(3)\fP
|
See \fIlibssh2_publickey_add_ex(3)\fP
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR \fIlibssh2_publickey_add_ex(3)\fP
|
.BR libssh2_publickey_add_ex(3)
|
||||||
|
@ -1,14 +1,25 @@
|
|||||||
.\" $Id: libssh2_publickey_add_ex.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_publickey_add_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_publickey_add_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_publickey_add_ex - TODO
|
libssh2_publickey_add_ex - Add a public key entry
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
#include <libssh2.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey, const unsigned char *name,
|
||||||
|
unsigned long name_len, const unsigned char *blob,
|
||||||
|
unsigned long blob_len, char overwrite,
|
||||||
|
unsigned long num_attrs,
|
||||||
|
const libssh2_publickey_attribute attrs[])
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
TBD
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
|
Returns 0 on success, negative on failure.
|
||||||
.SH ERRORS
|
.SH ERRORS
|
||||||
|
LIBSSH2_ERROR_BAD_USE
|
||||||
|
LIBSSH2_ERROR_ALLOC,
|
||||||
|
LIBSSH2_ERROR_EAGAIN
|
||||||
|
LIBSSH2_ERROR_SOCKET_SEND,
|
||||||
|
LIBSSH2_ERROR_SOCKET_TIMEOUT,
|
||||||
|
LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_publickey_init.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_publickey_init 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_publickey_init 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_publickey_init - TODO
|
libssh2_publickey_init - TODO
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
.\" $Id: libssh2_publickey_list_fetch.3,v 1.1 2009/03/16 15:00:45 bagder Exp $
|
|
||||||
.\"
|
|
||||||
.TH libssh2_publickey_list_fetch 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
.TH libssh2_publickey_list_fetch 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libssh2_publickey_list_fetch - TODO
|
libssh2_publickey_list_fetch - TODO
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user