初始提交:terminalX 可运行态(M0/M1/M1.5 已真机验证)
- M0: libghostty SSH 终端(渲染/输入/连接)+ 白屏修复(OutputGate) + 会话状态机/自动重连 - M1: tsnet 用户态组网 + SSH-over-tsnet(fd 桥),shell 级真机验证;R5(Go+gvisor+C+++Swift 同进程) retire - M1.5: tmux -CC 原生 tab(MVP) - 结构: packages/(TXCore·TXTransport), apps/TerminalX, vendor/(libghostty-spm/libssh2/mbedtls/tsnet-bridge), artifacts/ - 文档: CLAUDE.md + docs/HANDOFF.md(新会话入口) - 环境: 认证代理→依赖 vendor 本地化;Go 在 ~/.local/go;仅模拟器/未签名 - 待续: M2 mosh, tmux 多 pane, M4 安全(host key/SE) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
9
vendor/libssh2/.editorconfig
vendored
Normal file
9
vendor/libssh2/.editorconfig
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*.{c, h}]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = true
|
||||
max_line_length = 80
|
||||
27
vendor/libssh2/.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
27
vendor/libssh2/.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior.
|
||||
|
||||
A recipe or example code that reproduces the problem? A stack trace from a crash
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Version (please complete the following information):**
|
||||
- OS and version: [e.g. iOS, macOS, Windows, Linux (distro)]
|
||||
- libssh2 version: [e.g. 1.10.0]
|
||||
- crypto backend and version: [OpenSSL, mbedTLS, Libgcrypt, LibreSSL, WinCNG, OS400, wolfSSL, None]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
13
vendor/libssh2/.github/SECURITY.md
vendored
Normal file
13
vendor/libssh2/.github/SECURITY.md
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# Security Policy
|
||||
|
||||
See [SECURITY.md](https://github.com/libssh2/libssh2/blob/master/docs/SECURITY.md) for full details.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you have found or just suspect a security problem somewhere in libssh2,
|
||||
email `libssh2-security@haxx.se` about it.
|
||||
|
||||
**Do not submit suspected security issues in the public bug tracker!**
|
||||
|
||||
We treat security issues with confidentiality until controlled and disclosed
|
||||
responsibly.
|
||||
21
vendor/libssh2/.github/stale.yml
vendored
Normal file
21
vendor/libssh2/.github/stale.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 120
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 30
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
74
vendor/libssh2/.github/workflows/appveyor_docker.yml
vendored
Normal file
74
vendor/libssh2/.github/workflows/appveyor_docker.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
# Copyright (C) Marc Hoersken
|
||||
# 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
name: AppVeyor Docker Bridge
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
ssh_host:
|
||||
required: true
|
||||
ssh_port:
|
||||
required: true
|
||||
ssh_user:
|
||||
required: true
|
||||
ssh_forward:
|
||||
required: true
|
||||
ssh_hostkey:
|
||||
required: true
|
||||
ssh_privkey:
|
||||
required: true
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
daemon:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
steps:
|
||||
- name: Setup SSH client configuration
|
||||
run: |
|
||||
cd ~
|
||||
mkdir -m 0700 .ssh
|
||||
install -m 0600 /dev/null .ssh/config
|
||||
{
|
||||
echo 'ServerAliveInterval 45'
|
||||
echo 'Host ${{ github.event.inputs.ssh_host }}'
|
||||
echo '${{ github.event.inputs.ssh_forward }}' | sed 's/,/\n/g' | sed 's/^/ RemoteForward /g'
|
||||
} | tee -a .ssh/config
|
||||
install -m 0600 /dev/null .ssh/known_hosts
|
||||
echo '${{ github.event.inputs.ssh_host }} ${{ github.event.inputs.ssh_hostkey }}' | sed 's/,/\n${{ github.event.inputs.ssh_host }} /g' | tee -a .ssh/known_hosts
|
||||
install -m 0600 /dev/null .ssh/id_rsa
|
||||
echo '${{ github.event.inputs.ssh_privkey }}' | sed 's/,/\n/g' >> .ssh/id_rsa
|
||||
|
||||
# we sleep explicitly to allow the remote system to kill the sleep process
|
||||
- name: Connect to AppVeyor and sleep
|
||||
run: |
|
||||
ssh -v -p ${{ github.event.inputs.ssh_port }} ${{ github.event.inputs.ssh_user }}@${{ github.event.inputs.ssh_host }} sleep 1h
|
||||
63
vendor/libssh2/.github/workflows/appveyor_status.yml
vendored
Normal file
63
vendor/libssh2/.github/workflows/appveyor_status.yml
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# Copyright (C) Marc Hoersken
|
||||
# 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
name: AppVeyor Status Report
|
||||
|
||||
on:
|
||||
status
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.sha }}-${{ github.event.target_url }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
split:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.sender.login == 'appveyor[bot]' }}
|
||||
permissions:
|
||||
statuses: write
|
||||
steps:
|
||||
- name: Create individual AppVeyor build statuses
|
||||
if: ${{ github.event.sha && github.event.target_url }}
|
||||
env:
|
||||
APPVEYOR_COMMIT_SHA: ${{ github.event.sha }}
|
||||
APPVEYOR_TARGET_URL: ${{ github.event.target_url }}
|
||||
APPVEYOR_REPOSITORY: ${{ github.event.repository.full_name }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
echo ${APPVEYOR_TARGET_URL} | sed 's/\/project\//\/api\/projects\//' | xargs -t -n1 curl -s | \
|
||||
jq -c '.build.jobs[] | {target_url: ($target_url + "/job/" + .jobId),
|
||||
context: (.name | sub("^(Environment: )?"; "AppVeyor / ")),
|
||||
state: (.status | sub("queued"; "pending")
|
||||
| sub("starting"; "pending")
|
||||
| sub("running"; "pending")
|
||||
| sub("failed"; "failure")
|
||||
| sub("cancelled"; "error")),
|
||||
description: .status}' \
|
||||
--arg target_url ${APPVEYOR_TARGET_URL} | tee /dev/stderr | parallel --pipe -j 1 -N 1 \
|
||||
gh api --silent --input - repos/${APPVEYOR_REPOSITORY}/statuses/${APPVEYOR_COMMIT_SHA}
|
||||
747
vendor/libssh2/.github/workflows/ci.yml
vendored
Normal file
747
vendor/libssh2/.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,747 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
check_style:
|
||||
name: 'style-check'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'checksrc'
|
||||
run: ./ci/checksrc.sh
|
||||
|
||||
shellcheck:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'shellcheck'
|
||||
run: ./ci/shellcheck.sh
|
||||
|
||||
spellcheck:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'install tools'
|
||||
run: pip install -U codespell
|
||||
- name: 'spellcheck'
|
||||
run: ./ci/spellcheck.sh
|
||||
|
||||
build_integration:
|
||||
name: 'integration'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
env:
|
||||
CC: clang
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'cmake'
|
||||
run: |
|
||||
sudo apt-get --quiet 2 --option Dpkg::Use-Pty=0 install libssl-dev
|
||||
./tests/cmake/test.sh
|
||||
|
||||
build_linux:
|
||||
name: 'linux'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
compiler: [gcc, clang]
|
||||
arch: [amd64]
|
||||
crypto: [OpenSSL, wolfSSL, Libgcrypt, mbedTLS]
|
||||
build: [cmake]
|
||||
zlib: ['OFF', 'ON']
|
||||
include:
|
||||
- compiler: gcc
|
||||
arch: amd64
|
||||
crypto: OpenSSL
|
||||
build: autotools
|
||||
zlib: 'OFF'
|
||||
- compiler: clang
|
||||
arch: amd64
|
||||
crypto: OpenSSL
|
||||
build: autotools
|
||||
zlib: 'OFF'
|
||||
- compiler: clang
|
||||
arch: amd64
|
||||
crypto: OpenSSL
|
||||
build: autotools
|
||||
zlib: 'ON'
|
||||
target: 'distcheck'
|
||||
- compiler: clang
|
||||
arch: amd64
|
||||
crypto: OpenSSL
|
||||
build: autotools
|
||||
zlib: 'ON'
|
||||
target: 'maketgz'
|
||||
- compiler: gcc
|
||||
arch: i386
|
||||
crypto: mbedTLS
|
||||
build: cmake
|
||||
zlib: 'ON'
|
||||
- compiler: gcc
|
||||
arch: amd64
|
||||
crypto: BoringSSL
|
||||
build: cmake
|
||||
zlib: 'ON'
|
||||
- compiler: clang
|
||||
arch: amd64
|
||||
crypto: wolfSSL-from-source
|
||||
build: cmake
|
||||
zlib: 'ON'
|
||||
- compiler: clang
|
||||
arch: amd64
|
||||
crypto: wolfSSL-from-source-prev
|
||||
build: cmake
|
||||
zlib: 'ON'
|
||||
- compiler: gcc
|
||||
arch: amd64
|
||||
crypto: OpenSSL-3-no-deprecated
|
||||
build: cmake
|
||||
zlib: 'ON'
|
||||
- compiler: clang
|
||||
arch: i386
|
||||
crypto: Libgcrypt
|
||||
build: autotools
|
||||
zlib: 'ON'
|
||||
options: --disable-static
|
||||
env:
|
||||
CC: ${{ matrix.compiler }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'install architecture'
|
||||
if: ${{ matrix.arch != 'amd64' }}
|
||||
run: |
|
||||
sudo dpkg --add-architecture '${{ matrix.arch }}'
|
||||
sudo apt-get --quiet 2 --option Dpkg::Use-Pty=0 update
|
||||
# Workaround for https://github.com/actions/runner-images/issues/7589
|
||||
sudo apt-get --quiet 2 --option Dpkg::Use-Pty=0 install libgcc-s1:${{ matrix.arch }}
|
||||
sudo apt-get --quiet 2 --option Dpkg::Use-Pty=0 install gcc-multilib build-essential zlib1g-dev:${{ matrix.arch }}
|
||||
|
||||
- name: 'install packages'
|
||||
run: |
|
||||
[ '${{ matrix.crypto }}' = 'OpenSSL' ] && pkg='libssl-dev'
|
||||
[ '${{ matrix.crypto }}' = 'wolfSSL' ] && pkg='libwolfssl-dev'
|
||||
[ '${{ matrix.crypto }}' = 'Libgcrypt' ] && pkg='libgcrypt-dev'
|
||||
if [ -n "${pkg}" ]; then
|
||||
sudo apt-get --quiet 2 --option Dpkg::Use-Pty=0 install "${pkg}:${{ matrix.arch }}"
|
||||
fi
|
||||
|
||||
- name: 'install mbedTLS from source'
|
||||
if: ${{ matrix.crypto == 'mbedTLS' }}
|
||||
run: |
|
||||
MBEDTLSVER=mbedtls-3.5.1
|
||||
curl -fsS -L https://github.com/Mbed-TLS/mbedtls/archive/$MBEDTLSVER.tar.gz | tar -xzf -
|
||||
cd mbedtls-$MBEDTLSVER
|
||||
if [ '${{ matrix.arch }}' = 'i386' ]; then
|
||||
crossoptions='-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }}'
|
||||
cflags='-m32 -mpclmul -msse2 -maes'
|
||||
fi
|
||||
cmake . ${crossoptions} \
|
||||
"-DCMAKE_C_FLAGS=${cflags}" \
|
||||
-DENABLE_PROGRAMS=OFF \
|
||||
-DENABLE_TESTING=OFF \
|
||||
-DUSE_STATIC_MBEDTLS_LIBRARY=OFF \
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=ON \
|
||||
"-DCMAKE_INSTALL_PREFIX=$PWD/../usr"
|
||||
make -j5 install
|
||||
cd ..
|
||||
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/usr/lib" >> $GITHUB_ENV
|
||||
echo "TOOLCHAIN_OPTION=$TOOLCHAIN_OPTION -DCMAKE_PREFIX_PATH=$PWD/usr" >> $GITHUB_ENV
|
||||
|
||||
- name: 'install wolfSSL from source'
|
||||
if: ${{ startsWith(matrix.crypto, 'wolfSSL-from-source') }}
|
||||
run: |
|
||||
if [ '${{ matrix.crypto }}' = 'wolfSSL-from-source' ]; then
|
||||
WOLFSSLVER=5.7.0
|
||||
else
|
||||
WOLFSSLVER=5.5.4
|
||||
# Required to include `FIPS_mode()` API:
|
||||
options='-DWOLFSSL_OPENSSLEXTRA=ON'
|
||||
cppflags='-DOPENSSL_ALL'
|
||||
fi
|
||||
curl -fsS -L https://github.com/wolfSSL/wolfssl/archive/refs/tags/v$WOLFSSLVER-stable.tar.gz | tar -xzf -
|
||||
cd wolfssl-$WOLFSSLVER-stable
|
||||
cmake -B bld ${options} \
|
||||
-DWOLFSSL_LIBSSH2=ON \
|
||||
-DBUILD_SELFTEST=OFF \
|
||||
-DWOLFSSL_OPENSSLALL=ON \
|
||||
-DWOLFSSL_EXAMPLES=OFF \
|
||||
-DWOLFSSL_CRYPT_TESTS=OFF \
|
||||
"-DCMAKE_C_FLAGS=-fPIC -DWOLFSSL_AESGCM_STREAM ${cppflags}" \
|
||||
"-DCMAKE_INSTALL_PREFIX=$PWD/../usr"
|
||||
make -j5 -C bld install
|
||||
cd ..
|
||||
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/usr/lib" >> $GITHUB_ENV
|
||||
echo "TOOLCHAIN_OPTION=$TOOLCHAIN_OPTION -DCMAKE_PREFIX_PATH=$PWD/usr" >> $GITHUB_ENV
|
||||
|
||||
- name: 'install BoringSSL from source'
|
||||
if: ${{ matrix.crypto == 'BoringSSL' }}
|
||||
run: |
|
||||
BORINGSSLVER=1b7fdbd9101dedc3e0aa3fcf4ff74eacddb34ecc
|
||||
mkdir boringssl
|
||||
cd boringssl
|
||||
curl -fsS https://boringssl.googlesource.com/boringssl/+archive/$BORINGSSLVER.tar.gz | tar -xzf -
|
||||
cmake . \
|
||||
-DOPENSSL_SMALL=ON \
|
||||
-DCMAKE_C_FLAGS=-fPIC \
|
||||
"-DCMAKE_INSTALL_PREFIX=$PWD/../usr"
|
||||
make -j5 install
|
||||
cd ..
|
||||
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/usr/lib" >> $GITHUB_ENV
|
||||
echo "TOOLCHAIN_OPTION=$TOOLCHAIN_OPTION -DCMAKE_PREFIX_PATH=$PWD/usr" >> $GITHUB_ENV
|
||||
|
||||
- name: 'install OpenSSL from source'
|
||||
if: ${{ matrix.crypto == 'OpenSSL-3-no-deprecated' }}
|
||||
run: |
|
||||
OPENSSLVER=openssl-3.2.0
|
||||
curl -fsS -L https://github.com/openssl/openssl/releases/download/$OPENSSLVER/$OPENSSLVER.tar.gz | tar -xzf -
|
||||
cd $OPENSSLVER
|
||||
./Configure no-deprecated \
|
||||
no-apps no-docs no-tests no-makedepend \
|
||||
no-comp no-quic no-legacy --prefix=/usr
|
||||
make -j5 install "DESTDIR=$PWD/.."
|
||||
cd ..
|
||||
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/usr/lib" >> $GITHUB_ENV
|
||||
echo "TOOLCHAIN_OPTION=$TOOLCHAIN_OPTION -DCMAKE_PREFIX_PATH=$PWD/usr" >> $GITHUB_ENV
|
||||
|
||||
- name: 'autotools autoreconf'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: autoreconf -fi
|
||||
- name: 'autotools configure'
|
||||
if: ${{ matrix.build == 'autotools' && matrix.target != 'maketgz' }}
|
||||
run: |
|
||||
if [ '${{ matrix.arch }}' = 'i386' ]; then
|
||||
crossoptions='--host=i686-pc-linux-gnu'
|
||||
export CFLAGS=-m32
|
||||
fi
|
||||
mkdir bld && cd bld && ../configure --enable-werror --enable-debug \
|
||||
${crossoptions} ${{ matrix.options }} \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
|
||||
- name: 'autotools build'
|
||||
if: ${{ matrix.build == 'autotools' && !matrix.target }}
|
||||
run: make -C bld -j5
|
||||
- name: 'autotools tests'
|
||||
if: ${{ matrix.build == 'autotools' && !matrix.target }}
|
||||
timeout-minutes: 10
|
||||
run: make -C bld check V=1 || { cat bld/tests/*.log; false; }
|
||||
- name: 'autotools distcheck'
|
||||
if: ${{ matrix.target == 'distcheck' }}
|
||||
timeout-minutes: 10
|
||||
run: make -C bld distcheck
|
||||
- name: 'maketgz'
|
||||
if: ${{ matrix.target == 'maketgz' }}
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
export SOURCE_DATE_EPOCH=1711526400
|
||||
./configure --enable-werror --disable-debug \
|
||||
${{ matrix.options }} --disable-dependency-tracking
|
||||
./maketgz 99.98.97
|
||||
# Test reproducibility
|
||||
mkdir run1; mv ./libssh2-99.98.97.* run1/
|
||||
make clean
|
||||
./maketgz 99.98.97
|
||||
mkdir run2; cp -p ./libssh2-99.98.97.* run2/
|
||||
diff run1 run2
|
||||
# Test build from tarball
|
||||
tar -xvf libssh2-99.98.97.tar.gz
|
||||
cd libssh2-99.98.97
|
||||
./configure --enable-werror --enable-debug "--prefix=${HOME}/temp" \
|
||||
${{ matrix.options }} --disable-dependency-tracking
|
||||
make -j5 install
|
||||
cd ..
|
||||
# Verify install
|
||||
diff -u <(find docs -name '*.3' -printf '%f\n' | grep -v template | sort) <(find "${HOME}/temp/share/man/man3" -name '*.3' -printf '%f\n' | sort)
|
||||
diff -u <(find include -name '*.h' -printf '%f\n' | sort) <(find "${HOME}/temp/include" -name '*.h' -printf '%f\n' | sort)
|
||||
rm -rf libssh2-99.98.97
|
||||
|
||||
- name: 'cmake configure'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
run: |
|
||||
if [ '${{ matrix.crypto }}' = 'BoringSSL' ] || \
|
||||
[[ '${{ matrix.crypto }}' = 'OpenSSL-'* ]]; then
|
||||
crypto='OpenSSL'
|
||||
elif [[ '${{ matrix.crypto }}' = 'wolfSSL-'* ]]; then
|
||||
crypto='wolfSSL'
|
||||
else
|
||||
crypto='${{ matrix.crypto }}'
|
||||
fi
|
||||
[ '${{ matrix.arch }}' = 'i386' ] && crossoptions='-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -DCMAKE_C_FLAGS=-m32'
|
||||
cmake -B bld ${crossoptions} $TOOLCHAIN_OPTION \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DCRYPTO_BACKEND=${crypto} \
|
||||
-DENABLE_ZLIB_COMPRESSION=${{ matrix.zlib }} \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
|
||||
- name: 'cmake build'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
run: cmake --build bld --parallel 5 --target package
|
||||
- name: 'cmake tests'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
export OPENSSH_SERVER_IMAGE=ghcr.io/libssh2/ci_tests_openssh_server:$(git rev-parse --short=20 HEAD:tests/openssh_server)
|
||||
cd bld && ctest -VV --output-on-failure
|
||||
|
||||
build_linux_cross_mingw64:
|
||||
name: 'linux -> mingw-w64'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
build: [autotools, cmake]
|
||||
compiler: [gcc]
|
||||
env:
|
||||
TRIPLET: 'x86_64-w64-mingw32'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'install packages'
|
||||
run: sudo apt-get --quiet 2 --option Dpkg::Use-Pty=0 install mingw-w64 ${{ matrix.build == 'cmake' && 'ninja-build' || '' }}
|
||||
- name: 'autotools autoreconf'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: autoreconf -fi
|
||||
- name: 'autotools configure'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: mkdir bld && cd bld && ../configure --enable-werror --enable-debug "--host=${TRIPLET}" --disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
- name: 'autotools build'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: make -C bld -j5
|
||||
- name: 'cmake configure'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
run: |
|
||||
cmake -B bld -G Ninja \
|
||||
-DCMAKE_SYSTEM_NAME=Windows \
|
||||
-DCMAKE_C_COMPILER_TARGET=${TRIPLET} \
|
||||
-DCMAKE_C_COMPILER=${TRIPLET}-gcc \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
|
||||
- name: 'cmake build'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
run: cmake --build bld --parallel 5
|
||||
|
||||
build_cygwin:
|
||||
name: 'cygwin'
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 30
|
||||
env:
|
||||
SHELLOPTS: 'igncr'
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- { build: 'automake', platform: 'x86_64', compiler: 'gcc' }
|
||||
- { build: 'cmake' , platform: 'x86_64', compiler: 'gcc' }
|
||||
fail-fast: false
|
||||
steps:
|
||||
- run: git config --global core.autocrlf input
|
||||
- uses: actions/checkout@v4
|
||||
- uses: cygwin/cygwin-install-action@v4
|
||||
with:
|
||||
platform: ${{ matrix.platform }}
|
||||
packages: ${{ matrix.build == 'automake' && 'autoconf libtool make' || 'ninja' }} ${{ matrix.build }} gcc-core gcc-g++ binutils libssl-devel zlib-devel
|
||||
site: https://mirrors.kernel.org/sourceware/cygwin/
|
||||
|
||||
- name: 'autotools'
|
||||
if: ${{ matrix.build == 'automake' }}
|
||||
timeout-minutes: 10
|
||||
shell: C:\cygwin\bin\bash.exe '{0}'
|
||||
run: |
|
||||
export PATH="/usr/bin:$(cygpath ${SYSTEMROOT})/System32"
|
||||
autoreconf -fi
|
||||
mkdir bld && cd bld && ../configure --enable-werror --enable-debug \
|
||||
--with-crypto=openssl \
|
||||
--disable-docker-tests \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
make -j5
|
||||
make check V=1 || { cat tests/*.log; false; }
|
||||
|
||||
- name: 'cmake'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
timeout-minutes: 10
|
||||
shell: C:\cygwin\bin\bash.exe '{0}'
|
||||
run: |
|
||||
export PATH="/usr/bin:$(cygpath ${SYSTEMROOT})/System32"
|
||||
cmake -B bld -G Ninja \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DENABLE_DEBUG_LOGGING=ON \
|
||||
-DCRYPTO_BACKEND=OpenSSL \
|
||||
-DOPENSSL_ROOT_DIR=/usr/lib \
|
||||
-DENABLE_ZLIB_COMPRESSION=ON \
|
||||
-DRUN_DOCKER_TESTS=OFF \
|
||||
-DRUN_SSHD_TESTS=OFF \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
cmake --build bld --parallel 5
|
||||
cd bld && ctest -VV --output-on-failure
|
||||
|
||||
build_msys2:
|
||||
name: 'msys2'
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- { build: 'autotools', sys: msys , crypto: openssl, env: x86_64 }
|
||||
- { build: 'cmake' , sys: msys , crypto: OpenSSL, env: x86_64 }
|
||||
- { build: 'autotools', sys: mingw64, crypto: wincng , env: x86_64 }
|
||||
- { build: 'autotools', sys: mingw64, crypto: openssl, env: x86_64 }
|
||||
- { build: 'autotools', sys: mingw32, crypto: openssl, env: i686 }
|
||||
- { build: 'autotools', sys: ucrt64 , crypto: openssl, env: ucrt-x86_64 }
|
||||
- { build: 'autotools', sys: clang64, crypto: openssl, env: clang-x86_64 }
|
||||
- { build: 'autotools', sys: clang64, crypto: wincng , env: clang-x86_64 }
|
||||
- { build: 'cmake' , sys: ucrt64 , crypto: OpenSSL, env: ucrt-x86_64 }
|
||||
- { build: 'cmake' , sys: clang64, crypto: OpenSSL, env: clang-x86_64 }
|
||||
- { build: 'cmake' , sys: mingw64, crypto: OpenSSL, env: x86_64, test: 'uwp' }
|
||||
- { build: 'cmake' , sys: mingw64, crypto: OpenSSL, env: x86_64, test: 'no-options' }
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: msys2/setup-msys2@v2
|
||||
if: ${{ matrix.sys == 'msys' }}
|
||||
with:
|
||||
msystem: ${{ matrix.sys }}
|
||||
install: gcc ${{ matrix.build }} ${{ matrix.build == 'autotools' && 'make' || 'ninja' }} openssl-devel zlib-devel
|
||||
- uses: msys2/setup-msys2@v2
|
||||
if: ${{ matrix.sys != 'msys' }}
|
||||
with:
|
||||
msystem: ${{ matrix.sys }}
|
||||
install: >-
|
||||
mingw-w64-${{ matrix.env }}-cc
|
||||
mingw-w64-${{ matrix.env }}-${{ matrix.build }} ${{ matrix.build == 'autotools' && 'make' || '' }}
|
||||
mingw-w64-${{ matrix.env }}-openssl
|
||||
|
||||
- name: 'autotools autoreconf'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
shell: msys2 {0}
|
||||
run: autoreconf -fi
|
||||
- name: 'autotools configure'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
env:
|
||||
SSHD: 'C:/Program Files/Git/usr/bin/sshd.exe'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
if [ '${{ matrix.crypto }}' = 'wincng' ] && [[ '${{ matrix.env }}' = 'clang'* ]]; then
|
||||
options='--enable-ecdsa-wincng'
|
||||
fi
|
||||
# sshd tests sometimes hang
|
||||
mkdir bld && cd bld && ../configure --enable-werror --enable-debug \
|
||||
--with-crypto=${{ matrix.crypto }} \
|
||||
--disable-docker-tests \
|
||||
--disable-sshd-tests \
|
||||
${options} \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
|
||||
- name: 'autotools build'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
shell: msys2 {0}
|
||||
run: make -C bld -j5
|
||||
- name: 'autotools tests'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
timeout-minutes: 10
|
||||
shell: msys2 {0}
|
||||
run: make -C bld check V=1 || { cat bld/tests/*.log; false; }
|
||||
- name: 'cmake configure'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
if [[ '${{ matrix.env }}' = 'clang'* ]]; then
|
||||
options='-DCMAKE_C_COMPILER=clang'
|
||||
else
|
||||
options='-DCMAKE_C_COMPILER=gcc'
|
||||
fi
|
||||
if [ '${{ matrix.test }}' = 'uwp' ]; then
|
||||
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||
pacman --noconfirm --ask 20 --noprogressbar --sync --needed 'mingw-w64-${{ matrix.env }}-winstorecompat-git'
|
||||
specs="$(realpath gcc-specs-uwp)"
|
||||
gcc -dumpspecs | sed -e 's/-lmingwex/-lwindowsapp -lmingwex -lwindowsapp -lwindowsappcompat/' -e 's/-lmsvcrt/-lmsvcr120_app/' > "${specs}"
|
||||
cflags="-specs=$(cygpath -w "${specs}") -DWINSTORECOMPAT -DWINAPI_FAMILY=WINAPI_FAMILY_APP"
|
||||
# CMake (as of v3.26.4) gets confused and applies the MSVC rc.exe command-line
|
||||
# template to windres. Reset it to the windres template manually:
|
||||
rcopts='<CMAKE_RC_COMPILER> -O coff <DEFINES> <INCLUDES> <FLAGS> <SOURCE> <OBJECT>'
|
||||
elif [ '${{ matrix.test }}' = 'no-options' ]; then
|
||||
options+=' -DLIBSSH2_NO_DEPRECATED=ON'
|
||||
cflags='-DLIBSSH2_NO_MD5 -DLIBSSH2_NO_MD5_PEM -DLIBSSH2_NO_HMAC_RIPEMD -DLIBSSH2_DSA_ENABLE -DLIBSSH2_NO_AES_CBC -DLIBSSH2_NO_AES_CTR -DLIBSSH2_NO_BLOWFISH -DLIBSSH2_NO_RC4 -DLIBSSH2_NO_CAST -DLIBSSH2_NO_3DES'
|
||||
else
|
||||
cflags=''
|
||||
rcopts=''
|
||||
fi
|
||||
cmake -B bld -G Ninja ${options} \
|
||||
"-DCMAKE_C_FLAGS=${cflags}" \
|
||||
"-DCMAKE_RC_COMPILE_OBJECT=${rcopts}" \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DENABLE_DEBUG_LOGGING=ON \
|
||||
-DCRYPTO_BACKEND=${{ matrix.crypto }} \
|
||||
-DENABLE_ZLIB_COMPRESSION=ON \
|
||||
-DRUN_DOCKER_TESTS=OFF \
|
||||
-DRUN_SSHD_TESTS=OFF \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
|
||||
- name: 'cmake build'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
shell: msys2 {0}
|
||||
run: cmake --build bld --parallel 5
|
||||
- name: 'cmake tests'
|
||||
# UWP missing 'msvcr120_app.dll', fails with exit code 0xc0000135
|
||||
if: ${{ matrix.build == 'cmake' && matrix.test != 'uwp' }}
|
||||
timeout-minutes: 10
|
||||
shell: msys2 {0}
|
||||
run: cd bld && ctest -VV --output-on-failure
|
||||
|
||||
build_msvc:
|
||||
name: 'msvc'
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- { arch: x64 , plat: windows, crypto: WinCNG , wincng_ecdsa: 'OFF', log: 'OFF', shared: 'OFF', zlib: 'OFF', unity: 'ON' }
|
||||
- { arch: x64 , plat: windows, crypto: WinCNG , wincng_ecdsa: 'ON' , log: 'ON' , shared: 'ON' , zlib: 'OFF', unity: 'ON' }
|
||||
- { arch: x64 , plat: windows, crypto: OpenSSL, wincng_ecdsa: 'OFF', log: 'OFF', shared: 'ON' , zlib: 'OFF', unity: 'ON' }
|
||||
- { arch: x64 , plat: uwp , crypto: WinCNG , wincng_ecdsa: 'OFF', log: 'OFF', shared: 'ON' , zlib: 'OFF', unity: 'ON' }
|
||||
- { arch: arm64, plat: windows, crypto: WinCNG , wincng_ecdsa: 'ON' , log: 'OFF', shared: 'ON' , zlib: 'OFF', unity: 'ON' }
|
||||
- { arch: arm64, plat: uwp , crypto: WinCNG , wincng_ecdsa: 'ON' , log: 'OFF', shared: 'ON' , zlib: 'OFF', unity: 'OFF' }
|
||||
- { arch: x86 , plat: windows, crypto: WinCNG , wincng_ecdsa: 'OFF', log: 'OFF', shared: 'ON' , zlib: 'OFF', unity: 'ON' }
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'cmake configure'
|
||||
shell: bash
|
||||
run: |
|
||||
archgen=${{ matrix.arch }}; [ "${archgen}" = 'x86' ] && archgen='Win32'
|
||||
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
||||
system='WindowsStore'
|
||||
options='-DCMAKE_SYSTEM_VERSION=10.0'
|
||||
else
|
||||
system='Windows'
|
||||
fi
|
||||
cmake -B bld ${options} \
|
||||
-DCMAKE_SYSTEM_NAME=${system} \
|
||||
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake \
|
||||
-DCMAKE_GENERATOR_PLATFORM=${archgen} \
|
||||
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-${{ matrix.plat }} \
|
||||
-DCMAKE_VS_GLOBALS=TrackFileAccess=false \
|
||||
-DCMAKE_UNITY_BUILD=${{ matrix.unity }} \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DENABLE_DEBUG_LOGGING=${{ matrix.log }} \
|
||||
-DBUILD_SHARED_LIBS=${{ matrix.shared }} \
|
||||
-DCRYPTO_BACKEND=${{ matrix.crypto }} \
|
||||
-DENABLE_ECDSA_WINCNG=${{ matrix.wincng_ecdsa }} \
|
||||
-DENABLE_ZLIB_COMPRESSION=${{ matrix.zlib }} \
|
||||
-DRUN_DOCKER_TESTS=OFF \
|
||||
-DRUN_SSHD_TESTS=OFF \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
|
||||
- name: 'cmake build'
|
||||
run: cmake --build bld --parallel 5 --target package --config Release
|
||||
- name: 'cmake tests'
|
||||
# UWP binaries require a CRT DLL that is not found. Static CRT not supported.
|
||||
if: ${{ matrix.arch != 'arm64' && matrix.plat != 'uwp' }}
|
||||
timeout-minutes: 10
|
||||
run: cd bld && ctest -VV -C Release --output-on-failure
|
||||
|
||||
build_macos:
|
||||
name: 'macOS (${{ matrix.build }}, ${{ matrix.crypto.name }})'
|
||||
runs-on: macos-latest
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
build: [autotools, cmake]
|
||||
crypto:
|
||||
- name: 'OpenSSL 3'
|
||||
install: openssl
|
||||
configure: --with-crypto=openssl "--with-libssl-prefix=$(brew --prefix)/opt/openssl"
|
||||
cmake: -DCRYPTO_BACKEND=OpenSSL "-DOPENSSL_ROOT_DIR=$(brew --prefix)/opt/openssl"
|
||||
- name: 'OpenSSL 1.1'
|
||||
install: openssl@1.1
|
||||
configure: --with-crypto=openssl "--with-libssl-prefix=$(brew --prefix)/opt/openssl@1.1"
|
||||
cmake: -DCRYPTO_BACKEND=OpenSSL "-DOPENSSL_ROOT_DIR=$(brew --prefix)/opt/openssl@1.1"
|
||||
- name: 'LibreSSL'
|
||||
install: libressl
|
||||
configure: --with-crypto=openssl "--with-libssl-prefix=$(brew --prefix)/opt/libressl"
|
||||
cmake: -DCRYPTO_BACKEND=OpenSSL "-DOPENSSL_ROOT_DIR=$(brew --prefix)/opt/libressl"
|
||||
- name: 'wolfSSL'
|
||||
install: wolfssl
|
||||
configure: --with-crypto=wolfssl "--with-libwolfssl-prefix=$(brew --prefix)"
|
||||
cmake: -DCRYPTO_BACKEND=wolfSSL
|
||||
- name: 'Libgcrypt'
|
||||
install: libgcrypt
|
||||
configure: --with-crypto=libgcrypt "--with-libgcrypt-prefix=$(brew --prefix)"
|
||||
cmake: -DCRYPTO_BACKEND=Libgcrypt
|
||||
- name: 'mbedTLS'
|
||||
install: mbedtls
|
||||
configure: --with-crypto=mbedtls "--with-libmbedcrypto-prefix=$(brew --prefix)"
|
||||
cmake: -DCRYPTO_BACKEND=mbedTLS
|
||||
steps:
|
||||
- name: 'install packages'
|
||||
run: brew install ${{ matrix.build == 'autotools' && 'automake libtool' || 'ninja' }} ${{ matrix.crypto.install }}
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'autotools autoreconf'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: autoreconf -fi
|
||||
- name: 'autotools configure'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: |
|
||||
mkdir bld && cd bld && ../configure --enable-werror --enable-debug \
|
||||
--with-libz ${{ matrix.crypto.configure }} \
|
||||
--disable-docker-tests \
|
||||
--disable-sshd-tests \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
|
||||
- name: 'autotools build'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: make -C bld -j4 V=1
|
||||
- name: 'autotools tests'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
timeout-minutes: 10
|
||||
run: make -C bld check V=1 || { cat bld/tests/*.log; false; }
|
||||
- name: 'cmake configure'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
run: |
|
||||
cmake -B bld -G Ninja ${{ matrix.crypto.cmake }} \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DENABLE_DEBUG_LOGGING=ON \
|
||||
-DENABLE_ZLIB_COMPRESSION=ON \
|
||||
-DRUN_DOCKER_TESTS=OFF \
|
||||
-DRUN_SSHD_TESTS=OFF \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
|
||||
- name: 'cmake build'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
run: cmake --build bld --parallel 4
|
||||
- name: 'cmake tests'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
timeout-minutes: 10
|
||||
run: cd bld && ctest -VV --output-on-failure
|
||||
|
||||
build_netbsd:
|
||||
name: 'NetBSD (cmake, openssl, clang)'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
matrix:
|
||||
arch: ['x86_64', 'arm64']
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'cmake'
|
||||
uses: cross-platform-actions/action@v0.25.0
|
||||
with:
|
||||
operating_system: 'netbsd'
|
||||
version: '10.0'
|
||||
architecture: ${{ matrix.arch }}
|
||||
run: |
|
||||
# https://pkgsrc.se/
|
||||
sudo pkgin -y install cmake ninja-build
|
||||
cmake -B bld -G Ninja \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DENABLE_DEBUG_LOGGING=ON \
|
||||
-DCRYPTO_BACKEND=OpenSSL \
|
||||
-DBUILD_STATIC_LIBS=OFF \
|
||||
-DRUN_DOCKER_TESTS=OFF \
|
||||
-DRUN_SSHD_TESTS=OFF \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
cmake --build bld --parallel 3
|
||||
|
||||
build_openbsd:
|
||||
name: 'OpenBSD (cmake, libressl, clang)'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
matrix:
|
||||
arch: ['x86_64']
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'cmake'
|
||||
uses: cross-platform-actions/action@v0.25.0
|
||||
with:
|
||||
operating_system: 'openbsd'
|
||||
version: '7.5'
|
||||
architecture: ${{ matrix.arch }}
|
||||
run: |
|
||||
# https://openbsd.app/
|
||||
sudo pkg_add cmake ninja
|
||||
cmake -B bld -G Ninja \
|
||||
-DCMAKE_UNITY_BUILD=ON \
|
||||
-DENABLE_WERROR=ON \
|
||||
-DENABLE_DEBUG_LOGGING=ON \
|
||||
-DCRYPTO_BACKEND=OpenSSL \
|
||||
-DBUILD_STATIC_LIBS=OFF \
|
||||
-DRUN_DOCKER_TESTS=OFF \
|
||||
-DRUN_SSHD_TESTS=OFF \
|
||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||
cmake --build bld --parallel 3
|
||||
|
||||
build_freebsd:
|
||||
name: 'FreeBSD (autotools, openssl, clang)'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
env:
|
||||
CC: clang
|
||||
strategy:
|
||||
matrix:
|
||||
arch: ['x86_64', 'arm64']
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'autotools'
|
||||
uses: cross-platform-actions/action@v0.25.0
|
||||
with:
|
||||
operating_system: 'freebsd'
|
||||
version: '14.1'
|
||||
architecture: ${{ matrix.arch }}
|
||||
environment_variables: 'CC'
|
||||
run: |
|
||||
# https://ports.freebsd.org/
|
||||
sudo pkg install -y autoconf automake libtool
|
||||
autoreconf -fi
|
||||
mkdir bld && cd bld && ../configure --enable-werror --enable-debug \
|
||||
--with-crypto=openssl \
|
||||
--disable-docker-tests \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
make -j3
|
||||
make check V=1 || { cat tests/*.log; false; }
|
||||
|
||||
build_omnios:
|
||||
name: 'OmniOS (autotools, openssl, gcc, amd64)'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: 'autotools'
|
||||
uses: vmactions/omnios-vm@v1
|
||||
with:
|
||||
usesh: true
|
||||
# https://pkg.omnios.org/r151050/core/en/index.shtml
|
||||
prepare: pkg install build-essential libtool
|
||||
run: |
|
||||
autoreconf -fi
|
||||
mkdir bld && cd bld && ../configure --enable-werror --enable-debug \
|
||||
--with-crypto=openssl \
|
||||
--disable-docker-tests \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
gmake -j3
|
||||
gmake check V=1 || { cat tests/*.log; false; }
|
||||
38
vendor/libssh2/.github/workflows/cifuzz.yml
vendored
Normal file
38
vendor/libssh2/.github/workflows/cifuzz.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
name: CIFuzz
|
||||
on: [pull_request]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
Fuzzing:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Build Fuzzers
|
||||
id: build
|
||||
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
|
||||
with:
|
||||
oss-fuzz-project-name: 'libssh2'
|
||||
dry-run: false
|
||||
language: c
|
||||
- name: Run Fuzzers
|
||||
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
|
||||
with:
|
||||
oss-fuzz-project-name: 'libssh2'
|
||||
fuzz-seconds: 600
|
||||
dry-run: false
|
||||
language: c
|
||||
- name: Upload Crash
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ failure() && steps.build.outcome == 'success' }}
|
||||
with:
|
||||
name: artifacts
|
||||
path: ./out/artifacts
|
||||
68
vendor/libssh2/.github/workflows/openssh_server.yml
vendored
Normal file
68
vendor/libssh2/.github/workflows/openssh_server.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
# Copyright (C) Marc Hoersken
|
||||
# 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
name: OpenSSH Server Docker Image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- shell: bash
|
||||
id: hash
|
||||
run: echo "::set-output name=hash::$(git rev-parse --short=20 HEAD:tests/openssh_server)"
|
||||
|
||||
- shell: bash
|
||||
id: poll
|
||||
run: docker manifest inspect ghcr.io/${{ github.repository_owner }}/ci_tests_openssh_server:${{ steps.hash.outputs.hash }}
|
||||
continue-on-error: true
|
||||
|
||||
- uses: docker/metadata-action@v5
|
||||
id: meta
|
||||
with:
|
||||
images: ghcr.io/${{ github.repository_owner }}/ci_tests_openssh_server
|
||||
tags: |
|
||||
type=raw,value=${{ steps.hash.outputs.hash }}
|
||||
if: ${{ steps.poll.outcome == 'failure' }}
|
||||
|
||||
- uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: ./tests/openssh_server
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
if: ${{ steps.poll.outcome == 'failure' }}
|
||||
29
vendor/libssh2/.github/workflows/reuse.yml
vendored
Normal file
29
vendor/libssh2/.github/workflows/reuse.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
# Copyright (C) Daniel Stenberg
|
||||
# SPDX-FileCopyrightText: 2022 Free Software Foundation Europe e.V. <https://fsfe.org>
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
name: REUSE compliance
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- '*/ci'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: REUSE Compliance Check
|
||||
uses: fsfe/reuse-action@v4
|
||||
46
vendor/libssh2/.gitignore
vendored
Normal file
46
vendor/libssh2/.gitignore
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
.deps
|
||||
.libs
|
||||
*.a
|
||||
*.lib
|
||||
*.pdb
|
||||
*.dll
|
||||
*.def
|
||||
*.exe
|
||||
*.obj
|
||||
.*.swp
|
||||
*-*-*
|
||||
Debug
|
||||
Release
|
||||
*.exp
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
test-driver
|
||||
config.guess
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
libtool
|
||||
ltmain.sh
|
||||
missing
|
||||
tap-driver.sh
|
||||
test-driver
|
||||
libssh2-*.tar.bz2
|
||||
libssh2-*.tar.gz
|
||||
libssh2-*.tar.xz
|
||||
libssh2-*.zip
|
||||
install-sh
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
mkinstalldirs
|
||||
tags
|
||||
libssh2.pc
|
||||
TAGS
|
||||
*~
|
||||
.DS_Store
|
||||
build
|
||||
477
vendor/libssh2/CMakeLists.txt
vendored
Normal file
477
vendor/libssh2/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,477 @@
|
||||
# Copyright (C) Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||
# Copyright (C) Viktor Szakats
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
cmake_minimum_required(VERSION 3.7)
|
||||
message(STATUS "Using CMake version ${CMAKE_VERSION}")
|
||||
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||
|
||||
include(CheckFunctionExists)
|
||||
include(CheckSymbolExists)
|
||||
include(CheckIncludeFiles)
|
||||
include(CMakePushCheckState)
|
||||
include(FeatureSummary)
|
||||
|
||||
include(CheckFunctionExistsMayNeedLibrary)
|
||||
include(CheckNonblockingSocketSupport)
|
||||
|
||||
project(libssh2 C)
|
||||
|
||||
function(libssh2_dumpvars) # Dump all defined variables with their values
|
||||
message("::group::CMake Variable Dump")
|
||||
get_cmake_property(_vars VARIABLES)
|
||||
foreach(_var ${_vars})
|
||||
message("${_var} = ${${_var}}")
|
||||
endforeach()
|
||||
message("::endgroup::")
|
||||
endfunction()
|
||||
|
||||
if(NOT DEFINED CMAKE_UNITY_BUILD_BATCH_SIZE)
|
||||
set(CMAKE_UNITY_BUILD_BATCH_SIZE 0)
|
||||
endif()
|
||||
|
||||
option(BUILD_STATIC_LIBS "Build static libraries" ON)
|
||||
add_feature_info("Static library" BUILD_STATIC_LIBS "creating libssh2 static library")
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
|
||||
add_feature_info("Shared library" BUILD_SHARED_LIBS "creating libssh2 shared library (.so/.dll)")
|
||||
|
||||
# Parse version
|
||||
|
||||
file(READ "${PROJECT_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}")
|
||||
unset(_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 ${PROJECT_SOURCE_DIR}/include/libssh2.h")
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(
|
||||
FILES
|
||||
COPYING NEWS README RELEASE-NOTES
|
||||
docs/AUTHORS docs/BINDINGS.md docs/HACKING.md
|
||||
DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
|
||||
include(PickyWarnings)
|
||||
|
||||
set(LIBSSH2_LIBS_SOCKET "")
|
||||
set(LIBSSH2_LIBS "")
|
||||
set(LIBSSH2_LIBDIRS "")
|
||||
set(LIBSSH2_PC_REQUIRES_PRIVATE "")
|
||||
|
||||
# Add socket libraries
|
||||
if(WIN32)
|
||||
list(APPEND LIBSSH2_LIBS_SOCKET "ws2_32")
|
||||
else()
|
||||
check_function_exists_may_need_library("socket" HAVE_SOCKET "socket")
|
||||
if(NEED_LIB_SOCKET)
|
||||
list(APPEND LIBSSH2_LIBS_SOCKET "socket")
|
||||
endif()
|
||||
check_function_exists_may_need_library("inet_addr" HAVE_INET_ADDR "nsl")
|
||||
if(NEED_LIB_NSL)
|
||||
list(APPEND LIBSSH2_LIBS_SOCKET "nsl")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(BUILD_EXAMPLES "Build libssh2 examples" ON)
|
||||
option(BUILD_TESTING "Build libssh2 test suite" ON)
|
||||
|
||||
if(NOT BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS)
|
||||
set(BUILD_STATIC_LIBS ON)
|
||||
endif()
|
||||
|
||||
set(LIB_NAME "libssh2")
|
||||
set(LIB_STATIC "${LIB_NAME}_static")
|
||||
set(LIB_SHARED "${LIB_NAME}_shared")
|
||||
|
||||
# lib flavour selected for example and test programs.
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(LIB_SELECTED ${LIB_SHARED})
|
||||
else()
|
||||
set(LIB_SELECTED ${LIB_STATIC})
|
||||
endif()
|
||||
|
||||
# Symbol hiding
|
||||
|
||||
option(HIDE_SYMBOLS "Hide all libssh2 symbols that are not officially external" ON)
|
||||
mark_as_advanced(HIDE_SYMBOLS)
|
||||
if(HIDE_SYMBOLS)
|
||||
set(LIB_SHARED_DEFINITIONS "LIBSSH2_EXPORTS")
|
||||
if(WIN32)
|
||||
elseif((CMAKE_C_COMPILER_ID MATCHES "Clang") OR
|
||||
(CMAKE_COMPILER_IS_GNUCC AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0) OR
|
||||
(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.1))
|
||||
set(LIB_SHARED_C_FLAGS "-fvisibility=hidden")
|
||||
set(LIBSSH2_API "__attribute__ ((__visibility__ (\"default\")))")
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
set(LIB_SHARED_C_FLAGS "-xldscope=hidden")
|
||||
set(LIBSSH2_API "__global")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Options
|
||||
|
||||
# Enable debugging logging by default if the user configured a debug build
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(DEBUG_LOGGING_DEFAULT ON)
|
||||
else()
|
||||
set(DEBUG_LOGGING_DEFAULT OFF)
|
||||
endif()
|
||||
option(ENABLE_DEBUG_LOGGING "Log execution with debug trace" ${DEBUG_LOGGING_DEFAULT})
|
||||
add_feature_info(Logging ENABLE_DEBUG_LOGGING "Logging of execution with debug trace")
|
||||
if(ENABLE_DEBUG_LOGGING)
|
||||
# Must be visible to the library and tests using internals
|
||||
add_definitions("-DLIBSSH2DEBUG")
|
||||
endif()
|
||||
|
||||
option(LIBSSH2_NO_DEPRECATED "Build without deprecated APIs" OFF)
|
||||
add_feature_info("Without deprecated APIs" LIBSSH2_NO_DEPRECATED "")
|
||||
if(LIBSSH2_NO_DEPRECATED)
|
||||
add_definitions("-DLIBSSH2_NO_DEPRECATED")
|
||||
endif()
|
||||
|
||||
# Auto-detection
|
||||
|
||||
# Prefill values with known detection results
|
||||
# Keep this synced with src/libssh2_setup.h
|
||||
if(WIN32)
|
||||
if(MINGW)
|
||||
set(HAVE_SNPRINTF 1)
|
||||
set(HAVE_UNISTD_H 1)
|
||||
set(HAVE_INTTYPES_H 1)
|
||||
set(HAVE_SYS_TIME_H 1)
|
||||
set(HAVE_GETTIMEOFDAY 1)
|
||||
set(HAVE_STRTOLL 1)
|
||||
elseif(MSVC)
|
||||
set(HAVE_GETTIMEOFDAY 0)
|
||||
if(NOT MSVC_VERSION LESS 1800)
|
||||
set(HAVE_INTTYPES_H 1)
|
||||
set(HAVE_STRTOLL 1)
|
||||
else()
|
||||
set(HAVE_INTTYPES_H 0)
|
||||
set(HAVE_STRTOLL 0)
|
||||
set(HAVE_STRTOI64 1)
|
||||
endif()
|
||||
if(NOT MSVC_VERSION LESS 1900)
|
||||
set(HAVE_SNPRINTF 1)
|
||||
else()
|
||||
set(HAVE_SNPRINTF 0)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
## Platform checks
|
||||
check_include_files("inttypes.h" HAVE_INTTYPES_H)
|
||||
if(NOT MSVC)
|
||||
check_include_files("unistd.h" HAVE_UNISTD_H)
|
||||
check_include_files("sys/time.h" HAVE_SYS_TIME_H)
|
||||
endif()
|
||||
if(NOT WIN32)
|
||||
check_include_files("sys/select.h" HAVE_SYS_SELECT_H)
|
||||
check_include_files("sys/uio.h" HAVE_SYS_UIO_H)
|
||||
check_include_files("sys/socket.h" HAVE_SYS_SOCKET_H)
|
||||
check_include_files("sys/ioctl.h" HAVE_SYS_IOCTL_H)
|
||||
check_include_files("sys/un.h" HAVE_SYS_UN_H)
|
||||
check_include_files("arpa/inet.h" HAVE_ARPA_INET_H) # example and tests
|
||||
check_include_files("netinet/in.h" HAVE_NETINET_IN_H) # example and tests
|
||||
endif()
|
||||
|
||||
# CMake uses C syntax in check_symbol_exists() that generates a warning with
|
||||
# MSVC. To not break detection with ENABLE_WERRROR, we disable it for the
|
||||
# duration of these tests.
|
||||
if(MSVC AND ENABLE_WERROR)
|
||||
cmake_push_check_state()
|
||||
set(CMAKE_REQUIRED_FLAGS "/WX-")
|
||||
endif()
|
||||
|
||||
if(HAVE_SYS_TIME_H)
|
||||
check_symbol_exists("gettimeofday" "sys/time.h" HAVE_GETTIMEOFDAY)
|
||||
else()
|
||||
check_function_exists("gettimeofday" HAVE_GETTIMEOFDAY)
|
||||
endif()
|
||||
check_symbol_exists("strtoll" "stdlib.h" HAVE_STRTOLL)
|
||||
if(NOT HAVE_STRTOLL)
|
||||
# Try _strtoi64() if strtoll() is not available
|
||||
check_symbol_exists("_strtoi64" "stdlib.h" HAVE_STRTOI64)
|
||||
endif()
|
||||
check_symbol_exists("snprintf" "stdio.h" HAVE_SNPRINTF)
|
||||
if(NOT WIN32)
|
||||
check_symbol_exists("explicit_bzero" "string.h" HAVE_EXPLICIT_BZERO)
|
||||
check_symbol_exists("explicit_memset" "string.h" HAVE_EXPLICIT_MEMSET)
|
||||
check_symbol_exists("memset_s" "string.h" HAVE_MEMSET_S)
|
||||
endif()
|
||||
|
||||
if(MSVC AND ENABLE_WERROR)
|
||||
cmake_pop_check_state()
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "Interix")
|
||||
# poll() does not work on these platforms
|
||||
#
|
||||
# Interix: "does provide poll(), but the implementing developer must
|
||||
# have been in a bad mood, because poll() only works on the /proc
|
||||
# filesystem here"
|
||||
#
|
||||
# macOS poll() has funny behaviors, like:
|
||||
# not being able to do poll on no filedescriptors (10.3?)
|
||||
# not being able to poll on some files (like anything in /dev)
|
||||
# not having reliable timeout support
|
||||
# inconsistent return of POLLHUP where other implementations give POLLIN
|
||||
message(STATUS "poll use is disabled on this platform")
|
||||
elseif(NOT WIN32)
|
||||
check_function_exists("poll" HAVE_POLL)
|
||||
endif()
|
||||
if(WIN32)
|
||||
set(HAVE_SELECT 1)
|
||||
else()
|
||||
check_function_exists("select" HAVE_SELECT)
|
||||
endif()
|
||||
|
||||
# Non-blocking socket support tests. Use a separate, yet unset variable
|
||||
# for the socket libraries to not link against the other configured
|
||||
# dependencies which might not have been built yet.
|
||||
if(NOT WIN32)
|
||||
cmake_push_check_state()
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${LIBSSH2_LIBS_SOCKET})
|
||||
check_nonblocking_socket_support()
|
||||
cmake_pop_check_state()
|
||||
endif()
|
||||
|
||||
# Config file
|
||||
|
||||
add_definitions("-DHAVE_CONFIG_H")
|
||||
|
||||
configure_file("src/libssh2_config_cmake.h.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/src/libssh2_config.h")
|
||||
|
||||
## Cryptography backend choice
|
||||
|
||||
set(CRYPTO_BACKEND "" CACHE
|
||||
STRING "The backend to use for cryptography: OpenSSL, wolfSSL, Libgcrypt, WinCNG, mbedTLS, or empty to try any available")
|
||||
|
||||
# If the crypto backend was given, rather than searching for the first
|
||||
# we are able to find, the find_package commands must abort configuration
|
||||
# and report to the user.
|
||||
if(CRYPTO_BACKEND)
|
||||
set(_specific_crypto_requirement "REQUIRED")
|
||||
endif()
|
||||
|
||||
if(CRYPTO_BACKEND STREQUAL "OpenSSL" OR NOT CRYPTO_BACKEND)
|
||||
|
||||
find_package(OpenSSL ${_specific_crypto_requirement})
|
||||
|
||||
if(OPENSSL_FOUND)
|
||||
set(CRYPTO_BACKEND "OpenSSL")
|
||||
set(CRYPTO_BACKEND_DEFINE "LIBSSH2_OPENSSL")
|
||||
set(CRYPTO_BACKEND_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR})
|
||||
list(APPEND LIBSSH2_LIBS OpenSSL::Crypto)
|
||||
list(APPEND LIBSSH2_PC_REQUIRES_PRIVATE "libcrypto")
|
||||
|
||||
if(WIN32)
|
||||
# Statically linking to OpenSSL requires crypt32 for some Windows APIs.
|
||||
# This should really be handled by FindOpenSSL.cmake.
|
||||
list(APPEND LIBSSH2_LIBS "crypt32" "bcrypt")
|
||||
|
||||
#set(CMAKE_FIND_DEBUG_MODE ON)
|
||||
|
||||
find_file(DLL_LIBCRYPTO
|
||||
NAMES "crypto.dll"
|
||||
"libcrypto-1_1.dll" "libcrypto-1_1-x64.dll"
|
||||
"libcrypto-3.dll" "libcrypto-3-x64.dll"
|
||||
HINTS ${_OPENSSL_ROOT_HINTS} PATHS ${_OPENSSL_ROOT_PATHS}
|
||||
PATH_SUFFIXES "bin" NO_DEFAULT_PATH)
|
||||
if(DLL_LIBCRYPTO)
|
||||
list(APPEND _RUNTIME_DEPENDENCIES ${DLL_LIBCRYPTO})
|
||||
message(STATUS "Found libcrypto DLL: ${DLL_LIBCRYPTO}")
|
||||
else()
|
||||
message(WARNING "Unable to find OpenSSL libcrypto DLL, executables may not run")
|
||||
endif()
|
||||
|
||||
#set(CMAKE_FIND_DEBUG_MODE OFF)
|
||||
endif()
|
||||
|
||||
find_package(ZLIB)
|
||||
|
||||
if(ZLIB_FOUND)
|
||||
list(APPEND LIBSSH2_LIBS ${ZLIB_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CRYPTO_BACKEND STREQUAL "wolfSSL" OR NOT CRYPTO_BACKEND)
|
||||
|
||||
find_package(WolfSSL ${_specific_crypto_requirement})
|
||||
|
||||
if(WOLFSSL_FOUND)
|
||||
set(CRYPTO_BACKEND "wolfSSL")
|
||||
set(CRYPTO_BACKEND_DEFINE "LIBSSH2_WOLFSSL")
|
||||
set(CRYPTO_BACKEND_INCLUDE_DIR ${WOLFSSL_INCLUDE_DIRS})
|
||||
list(APPEND LIBSSH2_LIBS ${WOLFSSL_LIBRARIES})
|
||||
list(APPEND LIBSSH2_LIBDIRS ${WOLFSSL_LIBRARY_DIRS})
|
||||
list(APPEND LIBSSH2_PC_REQUIRES_PRIVATE "wolfssl")
|
||||
link_directories(${WOLFSSL_LIBRARY_DIRS})
|
||||
if(WOLFSSL_CFLAGS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WOLFSSL_CFLAGS}")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
list(APPEND LIBSSH2_LIBS "crypt32")
|
||||
endif()
|
||||
|
||||
find_package(ZLIB)
|
||||
|
||||
if(ZLIB_FOUND)
|
||||
list(APPEND CRYPTO_BACKEND_INCLUDE_DIR ${ZLIB_INCLUDE_DIR}) # Public wolfSSL headers require zlib headers
|
||||
list(APPEND LIBSSH2_LIBS ${ZLIB_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CRYPTO_BACKEND STREQUAL "Libgcrypt" OR NOT CRYPTO_BACKEND)
|
||||
|
||||
find_package(Libgcrypt ${_specific_crypto_requirement})
|
||||
|
||||
if(LIBGCRYPT_FOUND)
|
||||
set(CRYPTO_BACKEND "Libgcrypt")
|
||||
set(CRYPTO_BACKEND_DEFINE "LIBSSH2_LIBGCRYPT")
|
||||
set(CRYPTO_BACKEND_INCLUDE_DIR ${LIBGCRYPT_INCLUDE_DIRS})
|
||||
list(APPEND LIBSSH2_LIBS ${LIBGCRYPT_LIBRARIES})
|
||||
list(APPEND LIBSSH2_LIBDIRS ${LIBGCRYPT_LIBRARY_DIRS})
|
||||
list(APPEND LIBSSH2_PC_REQUIRES_PRIVATE "libgcrypt")
|
||||
link_directories(${LIBGCRYPT_LIBRARY_DIRS})
|
||||
if(LIBGCRYPT_CFLAGS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBGCRYPT_CFLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CRYPTO_BACKEND STREQUAL "mbedTLS" OR NOT CRYPTO_BACKEND)
|
||||
|
||||
find_package(MbedTLS ${_specific_crypto_requirement})
|
||||
|
||||
if(MBEDTLS_FOUND)
|
||||
set(CRYPTO_BACKEND "mbedTLS")
|
||||
set(CRYPTO_BACKEND_DEFINE "LIBSSH2_MBEDTLS")
|
||||
set(CRYPTO_BACKEND_INCLUDE_DIR ${MBEDTLS_INCLUDE_DIRS})
|
||||
list(APPEND LIBSSH2_LIBS ${MBEDTLS_LIBRARIES})
|
||||
list(APPEND LIBSSH2_LIBDIRS ${MBEDTLS_LIBRARY_DIRS})
|
||||
list(APPEND LIBSSH2_PC_REQUIRES_PRIVATE "mbedcrypto")
|
||||
link_directories(${MBEDTLS_LIBRARY_DIRS})
|
||||
if(MBEDTLS_CFLAGS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MBEDTLS_CFLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Detect platform-specific crypto-backends last:
|
||||
|
||||
if(CRYPTO_BACKEND STREQUAL "WinCNG" OR NOT CRYPTO_BACKEND)
|
||||
if(WIN32)
|
||||
set(CRYPTO_BACKEND "WinCNG")
|
||||
set(CRYPTO_BACKEND_DEFINE "LIBSSH2_WINCNG")
|
||||
set(CRYPTO_BACKEND_INCLUDE_DIR "")
|
||||
list(APPEND LIBSSH2_LIBS "crypt32" "bcrypt")
|
||||
|
||||
option(ENABLE_ECDSA_WINCNG "Enable WinCNG ECDSA support (requires Windows 10 or later)" OFF)
|
||||
add_feature_info(WinCNG ENABLE_ECDSA_WINCNG "WinCNG ECDSA support")
|
||||
if(ENABLE_ECDSA_WINCNG)
|
||||
add_definitions("-DLIBSSH2_ECDSA_WINCNG")
|
||||
if(MSVC)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,10")
|
||||
elseif(MINGW)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--subsystem,windows:10")
|
||||
endif()
|
||||
endif()
|
||||
elseif(_specific_crypto_requirement STREQUAL "REQUIRED")
|
||||
message(FATAL_ERROR "WinCNG not available")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Global functions
|
||||
|
||||
# Convert GNU Make assignments into CMake ones.
|
||||
function(transform_makefile_inc _input_file _output_file)
|
||||
file(READ ${_input_file} _makefile_inc_cmake)
|
||||
|
||||
string(REGEX REPLACE "\\\\\n" "" _makefile_inc_cmake ${_makefile_inc_cmake})
|
||||
string(REGEX REPLACE "([A-Za-z_]+) *= *([^\n]*)" "set(\\1 \\2)" _makefile_inc_cmake ${_makefile_inc_cmake})
|
||||
|
||||
file(WRITE ${_output_file} ${_makefile_inc_cmake})
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${_input_file}")
|
||||
endfunction()
|
||||
|
||||
#
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
if(BUILD_EXAMPLES)
|
||||
add_subdirectory(example)
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTING)
|
||||
enable_testing()
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
option(LINT "Check style while building" OFF)
|
||||
if(LINT)
|
||||
add_custom_target(lint ALL "./ci/checksrc.sh" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
if(BUILD_STATIC_LIBS)
|
||||
add_dependencies(${LIB_STATIC} lint)
|
||||
else()
|
||||
add_dependencies(${LIB_SHARED} lint)
|
||||
endif()
|
||||
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)
|
||||
43
vendor/libssh2/COPYING
vendored
Normal file
43
vendor/libssh2/COPYING
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Copyright (C) 2004-2007 Sara Golemon <sarag@libssh2.org>
|
||||
* Copyright (C) 2005,2006 Mikhail Gusarov <dottedmag@dottedmag.net>
|
||||
* Copyright (C) 2006-2007 The Written Word, Inc.
|
||||
* Copyright (C) 2007 Eli Fant <elifantu@mail.ru>
|
||||
* Copyright (C) 2009-2023 Daniel Stenberg
|
||||
* Copyright (C) 2008, 2009 Simon Josefsson
|
||||
* Copyright (C) 2000 Markus Friedl
|
||||
* Copyright (C) 2015 Microsoft Corp.
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
5
vendor/libssh2/LICENSES/FSFULLR.txt
vendored
Normal file
5
vendor/libssh2/LICENSES/FSFULLR.txt
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
# Copyright Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
21
vendor/libssh2/LICENSES/MIT.txt
vendored
Normal file
21
vendor/libssh2/LICENSES/MIT.txt
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) [year] [fullname]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
21
vendor/libssh2/LICENSES/curl.txt
vendored
Normal file
21
vendor/libssh2/LICENSES/curl.txt
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, and many contributors.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any purpose
|
||||
with or without fee is hereby granted, provided that the above copyright
|
||||
notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||
OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder shall not
|
||||
be used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization of the copyright holder.
|
||||
84
vendor/libssh2/Makefile.am
vendored
Normal file
84
vendor/libssh2/Makefile.am
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
AUTOMAKE_OPTIONS = foreign nostdinc
|
||||
|
||||
SUBDIRS = src docs
|
||||
SUBDIRS += tests
|
||||
if BUILD_EXAMPLES
|
||||
SUBDIRS += example
|
||||
endif
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libssh2.pc
|
||||
|
||||
include_HEADERS = \
|
||||
include/libssh2.h \
|
||||
include/libssh2_publickey.h \
|
||||
include/libssh2_sftp.h
|
||||
|
||||
DISTCLEANFILES =
|
||||
|
||||
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/readme.vms vms/libssh2_config.h
|
||||
|
||||
WIN32FILES = src/libssh2.rc
|
||||
|
||||
OS400FILES = os400/README400 os400/initscript.sh os400/make.sh \
|
||||
os400/make-src.sh os400/make-rpg.sh os400/make-include.sh \
|
||||
os400/config400.default \
|
||||
os400/os400sys.c os400/ccsid.c \
|
||||
os400/libssh2_config.h os400/macros.h os400/libssh2_ccsid.h \
|
||||
os400/include/alloca.h os400/include/sys/socket.h \
|
||||
os400/include/assert.h \
|
||||
os400/libssh2rpg/libssh2.rpgle.in \
|
||||
os400/libssh2rpg/libssh2_ccsid.rpgle.in \
|
||||
os400/libssh2rpg/libssh2_publickey.rpgle \
|
||||
os400/libssh2rpg/libssh2_sftp.rpgle \
|
||||
os400/rpg-examples/SFTPXMPLE
|
||||
|
||||
EXTRA_DIST = $(WIN32FILES) get_ver.awk \
|
||||
maketgz RELEASE-NOTES libssh2.pc.in $(VMSFILES) config.rpath \
|
||||
CMakeLists.txt cmake git2news.pl libssh2-style.el README.md $(OS400FILES)
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
.PHONY: ChangeLog
|
||||
ChangeLog:
|
||||
echo "see NEWS" > ./ChangeLog
|
||||
DISTCLEANFILES += ChangeLog
|
||||
|
||||
dist-hook:
|
||||
rm -rf $(top_builddir)/tests/log
|
||||
find $(distdir) -name "*.dist" -exec rm {} \;
|
||||
(distit=`find $(srcdir) -name "*.dist"`; \
|
||||
for file in $$distit; do \
|
||||
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
||||
cp -p $$file $(distdir)$$strip; \
|
||||
done)
|
||||
|
||||
# Code Coverage
|
||||
|
||||
init-coverage:
|
||||
make clean
|
||||
lcov --directory . --zerocounters
|
||||
|
||||
COVERAGE_CCOPTS := "-g --coverage"
|
||||
COVERAGE_OUT := docs/coverage
|
||||
|
||||
build-coverage:
|
||||
make CFLAGS=$(COVERAGE_CCOPTS) check
|
||||
mkdir -p $(COVERAGE_OUT)
|
||||
lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \
|
||||
--capture
|
||||
|
||||
gen-coverage:
|
||||
genhtml --output-directory $(COVERAGE_OUT) \
|
||||
$(COVERAGE_OUT)/$(PACKAGE).info \
|
||||
--highlight --frames --legend \
|
||||
--title "$(PACKAGE_NAME)"
|
||||
|
||||
coverage: init-coverage build-coverage gen-coverage
|
||||
|
||||
checksrc:
|
||||
ci/checksrc.sh
|
||||
3
vendor/libssh2/NEWS
vendored
Normal file
3
vendor/libssh2/NEWS
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
The old NEWS file.
|
||||
|
||||
NEWS is now generated from git and put into the release tarballs.
|
||||
19
vendor/libssh2/README
vendored
Normal file
19
vendor/libssh2/README
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
libssh2 - SSH2 library
|
||||
======================
|
||||
|
||||
libssh2 is a library implementing the SSH2 protocol, available under
|
||||
the revised BSD license.
|
||||
|
||||
Web site: https://libssh2.org/
|
||||
|
||||
Mailing list: https://lists.haxx.se/listinfo/libssh2-devel
|
||||
|
||||
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_CMAKE for CMake
|
||||
- docs/INSTALL_AUTOTOOLS for Autotools
|
||||
16
vendor/libssh2/README.md
vendored
Normal file
16
vendor/libssh2/README.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# libssh2 - SSH2 library
|
||||
|
||||
libssh2 is a library implementing the SSH2 protocol, available under
|
||||
the revised BSD license.
|
||||
|
||||
[Web site](https://libssh2.org/)
|
||||
|
||||
[Mailing list](https://lists.haxx.se/listinfo/libssh2-devel)
|
||||
|
||||
[BSD Licensed](https://libssh2.org/license.html)
|
||||
|
||||
[Web site source code](https://github.com/libssh2/www)
|
||||
|
||||
Installation instructions:
|
||||
- [for CMake](docs/INSTALL_CMAKE.md)
|
||||
- [for autotools](docs/INSTALL_AUTOTOOLS)
|
||||
325
vendor/libssh2/RELEASE-NOTES
vendored
Normal file
325
vendor/libssh2/RELEASE-NOTES
vendored
Normal file
@@ -0,0 +1,325 @@
|
||||
libssh2 1.11.1
|
||||
|
||||
Deprecation notices:
|
||||
|
||||
- Starting October 2024, the following algos go deprecated and will be
|
||||
disabled in default builds (with an option to enable them):
|
||||
|
||||
- DSA: `ssh-dss` hostkeys.
|
||||
You can enable it now with `-DLIBSSH2_DSA_ENABLE`.
|
||||
Disabled by default in OpenSSH 7.0 (2015-08-11).
|
||||
Support to be removed by early 2025 from OpenSSH.
|
||||
- MD5-based MACs and hashes: `hmac-md5`, `hmac-md5-96`,
|
||||
`LIBSSH2_HOSTKEY_HASH_MD5`
|
||||
You can disable it now with `-DLIBSSH2_NO_MD5`.
|
||||
Disabled by default since OpenSSH 7.2 (2016-02-29).
|
||||
- 3DES cipher: `3des-cbc`
|
||||
You can disable it now with `-DLIBSSH2_NO_3DES`.
|
||||
Disabled by default since OpenSSH 7.4 (2016-12-19).
|
||||
- RIPEMD-160 MACs: `hmac-ripemd160`, `hmac-ripemd160@openssh.com`
|
||||
You can disable it now with `-DLIBSSH2_NO_HMAC_RIPEMD`.
|
||||
Removed in OpenSSH 7.6 (2017-10-03).
|
||||
- Blowfish cipher: `blowfish-cbc`
|
||||
You can disable it now with `-DLIBSSH2_NO_BLOWFISH`.
|
||||
Removed in OpenSSH 7.6 (2017-10-03).
|
||||
- RC4 ciphers: `arcfour`, `arcfour128`
|
||||
You can disable it now with `-DLIBSSH2_NO_RC4`.
|
||||
Removed in OpenSSH 7.6 (2017-10-03).
|
||||
- CAST cipher: `cast128-cbc`
|
||||
You can disable it now with `-DLIBSSH2_NO_CAST`.
|
||||
Removed in OpenSSH 7.6 (2017-10-03).
|
||||
|
||||
- Starting April 2025, above options will be deleted from the
|
||||
libssh2 codebase.
|
||||
|
||||
- Default builds will also disable support for old-style, MD5-based
|
||||
encrypted private keys.
|
||||
You can disable it now with `-DLIBSSH2_NO_MD5_PEM`.
|
||||
|
||||
This release includes the following enhancements and bugfixes:
|
||||
|
||||
- autotools: fix to update `LDFLAGS` for each detected dependency (d19b6190 #1384 #1381 #1377)
|
||||
- autotools: delete `--disable-tests` option, fix CI tests (e051ae34 #1271 #715 revert: 7483edfa)
|
||||
- autotools: show the default for `hidden-symbols` option (a3f5594a #1269)
|
||||
- autotools: enable `-Wunused-macros` with gcc (ecdf5199 #1262 #1227 #1224)
|
||||
- autotools: fix dotless gcc and Apple clang version detections (89ccc83c #1232 #1187)
|
||||
- autotools: show more clang/gcc version details (fb580161 #1230)
|
||||
- autotools: avoid warnings in libtool stub code (96682bd5 #1227 #1224)
|
||||
- autotools: sync warning enabler code with curl (5996fefe #1223)
|
||||
- autotools: rename variable (ce5f208a #1222)
|
||||
- autotools: picky warning options tidy-up (cdca8cff #1221)
|
||||
- autotools: fix `cp` to preserve attributes and timestamp in `Makefile.am` (f64e6318)
|
||||
- autotools: fix selecting WinCNG in cross-builds (and more) (00a3b88c #1187 #1186)
|
||||
- autotools: use comma separator in `Requires.private` of `libssh2.pc` (7f83de14 #1124)
|
||||
- autotools: remove `AB_INIT` from `configure.ac` (f4f52ccc)
|
||||
- autotools: improve libz position (c89174a7 #1077 #941 #1075 #1013 regr: 4f0f4bff)
|
||||
- autotools: skip tests requiring static lib if `--disable-static` (572c57c9 #1072 #663 #1056 regr: 83853f8a)
|
||||
- build: stop detecting `sys/param.h` header (2677d3b0 #1418 #1415)
|
||||
- build: silence warnings inside `FD_SET()`/`FD_ISSET()` macros (323a14b2 #1379)
|
||||
- build: drop `-Wformat-nonliteral` warning suppressions (c452c5cc #1342)
|
||||
- build: enable `-pedantic-errors` (3ec53f3e #1286)
|
||||
- build: add mingw-w64 support to `LIBSSH2_PRINTF()` attribute (f8c45794 #1287)
|
||||
- build: add `LIBSSH2_NO_DEPRECATED` option (b1414503 #1267 #1266 #1260 #1259)
|
||||
- build: enable missing OpenSSF-recommended warnings, with fixes (afa6b865 #1257)
|
||||
- build: enable more compiler warnings and fix them (7ecc309c #1224)
|
||||
- build: picky warning updates (328a96b3 #1219)
|
||||
- build: revert: respect autotools `DLL_EXPORT` in `libssh2.h` (481be044 #1141 #917 revert: fb1195cf)
|
||||
- build: stop requiring libssl from openssl (c84745e3 #1128)
|
||||
- build: tidy-up `libssh2.pc.in` variable names (5720dd9f #1125)
|
||||
- build: add/fix `Requires.private` packages in `libssh2.pc` (ef538069 #1123)
|
||||
- buildconf: drop (814a850c #1441 follow: fc5d7788)
|
||||
- checksrc: update, check all sources, fix fallouts (1117b677 #1457)
|
||||
- checksrc: sync with curl (8cd473c9 #1272)
|
||||
- checksrc: fix spelling in comment (a95d401f)
|
||||
- checksrc: modernise Perl file open (3d309f9b)
|
||||
- checksrc: switch to dot file (d67a91aa #1052)
|
||||
- ci: use Ninja with cmake (20ad047d #1458)
|
||||
- ci: disable dependency tracking in autotools builds (e44f0418 #1396)
|
||||
- ci: fix mbedtls runners on macOS (84411539 #1381)
|
||||
- ci: enable Unity mode for most CMake builds (1bfae57b #1367 #1034)
|
||||
- ci: add shellcheck job and script (d88b9bcd)
|
||||
- ci: verify build and install from tarball (a86e27e8 #1362)
|
||||
- ci: add reproducibility test for `maketgz` (2d765e45 #1360)
|
||||
- ci: use Linux runner for BSDs, add arm64 FreeBSD 14 job (6f86b196 #1343)
|
||||
- ci: do not parallelize `distcheck` job (5e65dd87 #1339)
|
||||
- ci: add FreeBSD 14 job, fix issues (46333adf #1277)
|
||||
- ci: add OmniOS job, fix issues (5e0ec991)
|
||||
- ci: show compiler in cross/cygwin job names (c9124088)
|
||||
- ci: add OpenBSD (v7.4) job + fix build error in example (0c9a8e35 #1250)
|
||||
- ci: add NetBSD (v9.3) job (65c7a7a5)
|
||||
- ci: update and speed up FreeBSD job (eee4e805)
|
||||
- ci: use absolute path in `CMAKE_INSTALL_PREFIX` (74948816 #1247)
|
||||
- ci: boost mbedTLS build speed (236e79a1 #1245)
|
||||
- ci: add BoringSSL job (cmake, gcc, amd64) (c9dd3566 #1233)
|
||||
- ci: fixup FreeBSD version, bump mbedTLS (fea6664e #1217)
|
||||
- ci: add FreeBSD 13.2 job (a7d2a573 #1215)
|
||||
- ci: mbedTLS 3.5.0 (5e190442 #1202)
|
||||
- ci: update actions, use shallow clones with appveyor (d468a33f #1199)
|
||||
- ci: replace `mv` + `chmod` with `install` in `Dockerfile` (5754fed6 #1175)
|
||||
- ci: set file mode early in `appveyor_docker.yml` (633db55f)
|
||||
- ci: add spellcheck (codespell) (a79218d3)
|
||||
- ci: add MSYS builds (autotools and cmake) (d43b8d9b #1162)
|
||||
- ci: add Cygwin builds (autotools and cmake) (f1e96e73 #1161)
|
||||
- ci: add mingw-w64 UWP build (1215aa5f #1155 #1147)
|
||||
- ci: add missing timeout to 'autotools distcheck' step (6265ffdb)
|
||||
- ci: add non-static autotools i386 build, ignore GHA updates on AppVeyor (c6e137f7 #1074 #1072)
|
||||
- ci: prefer `=` operator in shell snippets (e5c03043 #1073)
|
||||
- ci: drop redundant/unused vars, sync var names (ab8e95bc #1059)
|
||||
- ci: add i386 Linux build (with mbedTLS) (abdf40c7 #1057 #1053)
|
||||
- ci/appveyor: reduce test runs (workaround for infrastructure permafails) (b5e68bdc #1461)
|
||||
- ci/appveyor: increase wait for SSH server on GHA (bf3af90b)
|
||||
- ci/appveyor: bump to OpenSSL 3.2.1 (53d9c1a6 #1363 #1348)
|
||||
- ci/appveyor: re-enable parallel mode (e190e5b2 #1294 #884 #867)
|
||||
- ci/appveyor: delete UWP job broken since Visual Studio upgrade (d0a7f1da #1275)
|
||||
- ci/appveyor: YAML/PowerShell formatting, shorten variable name (06fd721f #1200)
|
||||
- ci/appveyor: move to pure PowerShell (8a081fd9 #1197)
|
||||
- ci/GHA: revert concurrency and improve permissions (e4c042f6)
|
||||
- ci/GHA: FreeBSD 14.1, actions bump (ae04b1b9 #1424)
|
||||
- ci/GHA: fix wolfSSL-from-source AES-GCM tests (1c0b07a7 #1409 #1408)
|
||||
- ci/GHA: add Linux job with latest wolfSSL built from source (d4cea53f #1408 #1299 #1020)
|
||||
- ci/GHA: tidy up build-from-source steps (2c633033)
|
||||
- ci/GHA: show configure logs on failure and other tidy-ups (dab48398 #1403)
|
||||
- ci/GHA: bump parallel jobs to nproc+1 (6f3d3bc8 #1402)
|
||||
- ci/GHA: show test logs on failure (b8ffa7a5 #1401)
|
||||
- ci/GHA: fix `Dockerfile` failing after Ubuntu package update (839bb84e #1400)
|
||||
- ci/GHA: use ubuntu-latest with OmniOS job (50143d58)
|
||||
- ci/GHA: shell syntax tidy-up (3b23e039 #1390)
|
||||
- ci/GHA: bump NetBSD/OpenBSD, add NetBSD arm64 job (e980af72 #1388)
|
||||
- ci/GHA: tidy up wolfSSL autotools config on macOS (5953c1f1 #1383)
|
||||
- ci/GHA: shorter mbedTLS autotools workaround (736e3d7d #1382 #1381)
|
||||
- ci/GHA: fix gcrypt with autotools/macOS/Homebrew/ARM64 (ae2770de #1377)
|
||||
- ci/GHA: fix verbose option for autotools jobs (499b27ae #1376)
|
||||
- ci/GHA: dump `config.log` on failure for macOS autotools jobs (4fa69214 #1375)
|
||||
- ci/GHA: fix `autoreconf` failure on macOS/Homebrew (0b64b30b #1374)
|
||||
- ci/GHA: fixup Homebrew location (for ARM runners) (6128aee0 #1373)
|
||||
- ci/GHA: review/fixup auto-cancel settings (b08cfbc9 #1292)
|
||||
- ci/GHA: restore curly braces in `if` (36748270 #1145)
|
||||
- ci/GHA: simplify `if` strings (cab3db58 #1140)
|
||||
- cmake: sync and improve Find modules, add `pkg-config` native detection (45064137 #1445 #1420)
|
||||
- cmake: generate `LIBSSH2_PC_LIBS_PRIVATE` dynamically (c87f1296 #1466)
|
||||
- cmake: add comment about `ibssh2.pc.in` variables (14b1b9d0)
|
||||
- cmake: support absolute `CMAKE_INSTALL_INCLUDEDIR`/`CMAKE_INSTALL_LIBDIR` (d70cee36 #1465)
|
||||
- cmake: rename two variables and initialize them (0fce9dcc #1464)
|
||||
- cmake: prefer `find_dependency()` in `libssh2-config.cmake` (d9c2e550 #1460)
|
||||
- cmake: tidy up syntax, minor improvements (9d9ee780 #1446)
|
||||
- cmake: rename mbedTLS and wolfSSL Find modules (570de0f2)
|
||||
- cmake: fixup version detection in mbedTLS Find module (8e3c40b2 #1444)
|
||||
- cmake: mbedTLS detection tidy-ups (6d1d13c2 #1438)
|
||||
- cmake: add quotes, delete ending dirseps (2bb46d44 #1437 #1166)
|
||||
- cmake: sync formatting in `cmake/Find*` modules (a0310699)
|
||||
- cmake: tidy up function name casing in `CopyRuntimeDependencies.cmake` (03547cb8)
|
||||
- cmake: use the imported target of FindOpenSSL module (82b09f9b #1322)
|
||||
- cmake: rename picky warnings script (64d6789f #1225)
|
||||
- cmake: fix multiple include of libssh2 package (932d6a32 #1216)
|
||||
- cmake: show crypto backend in feature summary (20387285 #1211)
|
||||
- cmake: simplify showing CMake version (fc00bdd7 #1203)
|
||||
- cmake: cleanup mbedTLS version detection more (4c241d5c #1196 #1192)
|
||||
- cmake: delete duplicate `include()` (30eef0a6)
|
||||
- cmake: improve/fix mbedTLS detection (41594675 #1192 #1191)
|
||||
- cmake: tidy-up `foreach()` syntax (4a64ca14 #1180)
|
||||
- cmake: verify `libssh2_VERSION` in integration tests (a20572e9)
|
||||
- cmake: show cmake versions in ci (87f5769b)
|
||||
- cmake: quote more strings (e9c7d3af #1173)
|
||||
- cmake: add `ExternalProject` integration test (aeaefaf6 #1171)
|
||||
- cmake: add integration tests (8715c3d5 #1170)
|
||||
- cmake: (re-)add aliases for `add_subdirectory()` builds (4ff64ae3 #1169)
|
||||
- cmake: style tidy-up (3fa5282d #1166)
|
||||
- cmake: add `LIB_NAME` variable (5453fc80 #1159)
|
||||
- cmake: tidy-up concatenation in `CMAKE_MODULE_PATH` (ae7d5108 #1157)
|
||||
- cmake: replace `libssh2` literals with `PROJECT_NAME` variable (72fd2595 #1152)
|
||||
- cmake: fix `STREQUAL` check in error branch (42d3bf13 #1151)
|
||||
- cmake: cache more config values on Windows (11a03690 #1142)
|
||||
- cmake: streamline invocation (f58f77b5 #1138)
|
||||
- cmake: merge `set_target_properties()` calls (a9091007 #1132)
|
||||
- cmake: (re-)add zlib to `Libs.private` in `libssh2.pc` (64643018 #1131)
|
||||
- cmake: use `wolfssl/options.h` for detection, like autotools (c5ec6c49 #1130)
|
||||
- cmake: add openssl libs to `Libs.private` in `libssh2.pc` (5cfa59d3 #1127)
|
||||
- cmake: bump minimum CMake version to v3.7.0 (9cd18f45 #1126)
|
||||
- cmake: CMAKE_SOURCE_DIR -> PROJECT_SOURCE_DIR (0f396aa9 #1121)
|
||||
- cmake: tidy-ups (2fc36790 #1122)
|
||||
- cmake: re-add `Libssh2:libssh2` for compatibility + lowercase namespace (2da13c13 #1104 #731 #1103)
|
||||
- copyright: remove years from copyright headers (187d89bb #1082)
|
||||
- disable DSA by default (b7ab0faa #1435 #1433)
|
||||
- docs: update `INSTALL_AUTOTOOLS` (2f0efde3 #1316)
|
||||
- docs: replace SHA1 with SHA256 in CMake example (766bde9f)
|
||||
- example: restore `sys/time.h` for AIX (24503cb9 #1340 #1335 #1334 #1001 regr: e53aae0e)
|
||||
- example: use `libssh2_socket_t` in X11 example (3f60ccb7)
|
||||
- example: replace remaining libssh2_scp_recv with libssh2_scp_recv2 in output messages (8d69e63d #1258 follow: 6c84a426)
|
||||
- example: fix regression in `ssh2_exec.c` (279a2e57 #1106 #861 #846 #1105 regr: b13936bd)
|
||||
- example, tests: call `WSACleanup()` for each `WSAStartup()` (94b6bad3 #1283)
|
||||
- example, tests: fix/silence `-Wformat-truncation=2` gcc warnings (744e059f)
|
||||
- hostkey: do not advertise ssh-rsa when SHA1 is disabled (82d1b8ff #1093 #1092)
|
||||
- kex: prevent possible double free of hostkey (b3465418 #1452)
|
||||
- kex: always check for null pointers before calling _libssh2_bn_set_word (9f23a3bb #1423)
|
||||
- kex: fix a memory leak in key exchange (19101843 #1412 #1404)
|
||||
- kex: always add extension indicators to kex_algorithms (00e2a07e #1327 #1326)
|
||||
- libssh2.h: add deprecated function warnings (9839ebe5 #1289 #1260)
|
||||
- libssh2.h: add portable `LIBSSH2_SOCKET_CLOSE()` macro (28dbf016 #1278)
|
||||
- libssh2.h: use `_WIN32` for Windows detection instead of rolling our own (631e7734 #1238)
|
||||
- libssh2.pc: reference mbedcrypto pkgconfig (c149a127 #1405)
|
||||
- libssh2.pc: re-add & extend support for static-only libssh2 builds (624abe27 #1119 #1114)
|
||||
- libssh2.pc: don't put `@LIBS@` in pc file (1209c16d)
|
||||
- mac: add empty hash functions for `mac_method_hmac_aesgcm` to not crash when e.g. setting `LIBSSH2_METHOD_CRYPT_CS` (b2738391 #1321)
|
||||
- mac: handle low-level errors (f64885b6 #1297)
|
||||
- Makefile.mk: delete Windows-focused raw GNU Make build (43485579 #1204)
|
||||
- maketgz: reproducible tarballs/zip, display tarball hashes (d52fe1b4 #1357 #1359)
|
||||
- maketgz: `set -eu`, reproducibility, improve zip, add CI test (cba7f975 #1353)
|
||||
- man: improve `libssh2_userauth_publickey_from*` manpages (581b72aa #1347 #1308 #652)
|
||||
- man: fix double spaces and dash escaping (a3ffc422 #1210)
|
||||
- man: add description to `libssh2_session_get_blocking.3` (67e39091 #1185)
|
||||
- mbedtls: always init ECDSA mbedtls_pk_context (a50d7deb #1430)
|
||||
- mbedtls: correctly initialize values (ECDSA) (1701d5c0 #1428 #1421)
|
||||
- mbedtls: expose `mbedtls_pk_load_file()` for our use (1628f6ca #1421 #1393 #1349 follow: e973493f)
|
||||
- mbedtls: add workaround + FIXME to build with 3.6.0 (2e4c5ec4 #1349)
|
||||
- mbedtls: improve disabling `-Wredundant-decls` (ecec68a2 #1226 #1224)
|
||||
- mbedtls: include `version.h` for `MBEDTLS_VERSION_NUMBER` (9d7bc253 #1095 #1094)
|
||||
- mbedtls: use more `size_t` to sync up with `crypto.h` (1153ebde #1054 #879 #846 #1053)
|
||||
- md5: allow disabling old-style encrypted private keys at build-time (eb9f9de2 #1181)
|
||||
- mingw: fix printf mask for 64-bit integers (36c1e1d1 #1091 #876 #846 #1090)
|
||||
- misc: flatten `_libssh2_explicit_zero` if tree (74e74288 #1149)
|
||||
- NMakefile: delete (c515eed3 #1134 #1129)
|
||||
- openssl: free allocated resources when using openssl3 (b942bad1 #1459)
|
||||
- openssl: fix memory leaks in `_libssh2_ecdsa_curve_name_with_octal_new` and `_libssh2_ecdsa_verify` (8d3bc19b #1449)
|
||||
- openssl: fix calculating DSA public key with OpenSSL 3 (8b3c6e9d #1380)
|
||||
- openssl: initialize BIGNUMs to NULL in `gen_publickey_from_dsa` for OpenSSL 3 (f1133c75 #1320)
|
||||
- openssl: fix cppcheck found NULL dereferences (f2945905 #1304)
|
||||
- openssl: delete internal `read_openssh_private_key_from_memory()` (34aff5ff #1306)
|
||||
- openssl: use OpenSSL 3 HMAC API, add `no-deprecated` CI job (363dcbf4 #1243 #1235 #1207)
|
||||
- openssl: make a function static, add `#ifdef` comments (efee9133 #1246 #248 follow: 03092292)
|
||||
- openssl: fix DSA code to use OpenSSL 3 API (82581941 #1244 #1207)
|
||||
- openssl: fix `EC_KEY` reference with OpenSSL 3 `no-deprecated` build (487152f4 #1236 #1235 #1207)
|
||||
- openssl: use non-deprecated APIs with OpenSSL 3.x (b0ab005f #1207)
|
||||
- openssl: silence `-Wunused-value` warnings (bf285500 #1205)
|
||||
- openssl: use automatic initialization with LibreSSL 2.7.0+ (d79047c9 #1146 #302)
|
||||
- openssl: add missing check for `LIBRESSL_VERSION_NUMBER` before use (4a42f42e #1117 #1115)
|
||||
- os400: drop vsprintf() use (40e817ff #1462 #1457)
|
||||
- os400: Add two recent files to the distribution (e4c65e5b #1364)
|
||||
- os400: fix shellcheck warnings in scripts (fixups) (81341e1e #1366 #1364 #1358)
|
||||
- os400: fix shellcheck warnings in scripts (c6625707 #1358)
|
||||
- os400: maintain up to date (8457c37a #1309)
|
||||
- packet: properly bounds check packet_authagent_open() (88a960a8 #1179)
|
||||
- pem: fix private keys encrypted with AES-GCM methods (e87bdefa #1133)
|
||||
- reuse: upgrade to `REUSE.toml` (70b8bf31 #1419)
|
||||
- reuse: fix duplicate copyright warning (b9a4ed83)
|
||||
- reuse: comply with 3.1 spec and 2.0.0 checker (fe6239a1 #1102 #1101 #1098)
|
||||
- reuse: provide SPDX identifiers (f6aa31f4 #1084)
|
||||
- scp: fix missing cast for targets without large file support (c317e06f #1060 #1057 #1002 regr: 5db836b2)
|
||||
- session: support server banners up to 8192 bytes (was: 256) (1a9e8811 #1443 #1442)
|
||||
- session: add `libssh2_session_callback_set2()` (c0f69548 #1285)
|
||||
- session: handle EINTR from send/recv/poll/select to try again as the error is not fatal (798ed4a7 #1058 #955)
|
||||
- sftp: increase SFTP_HANDLE_MAXLEN back to 4092 (75de6a37 #1422)
|
||||
- sftp: implement posix-rename@openssh.com (fb652746 #1386)
|
||||
- src: implement chacha20-poly1305@openssh.com (492bc543 #1426 #584)
|
||||
- src: use `UINT32_MAX` (dc206408 #1413)
|
||||
- src: fix type warning in `libssh2_sftp_unlink` macro (ac2e8c73 #1406)
|
||||
- src: check the return value from `_libssh2_bn_*()` functions (95c824d5 #1354)
|
||||
- src: support RSA-SHA2 cert-based authentication (rsa-sha2-512_cert and rsa-sha2-256_cert) (3a6ab70d #1314)
|
||||
- src: check hash update/final success (4718ede4 #1303 #1301)
|
||||
- src: check hash init success (2ed9eb92 #1301)
|
||||
- src: add 'strict KEX' to fix CVE-2023-48795 "Terrapin Attack" (d34d9258 #1291 #1290)
|
||||
- src: disable `-Wsign-conversion` warnings, add option to re-enable (6e451669 #1284 #1257)
|
||||
- src: fix gcc 13 `-Wconversion` warning on Darwin (8cca7b77 #1209 follow: 08354e0a)
|
||||
- src: drop a redundant `#include` (1f0174d0 #1153)
|
||||
- src: improve MSVC C4701 warning fix (8b924999 #1086 #876 #1083)
|
||||
- src: bump `hash_len` to `size_t` in `LIBSSH2_HOSTKEY_METHOD` (8b917d76 #1076)
|
||||
- src: bump DSA and ECDSA sign `hash_len` to `size_t` (7b8e0225 #1055)
|
||||
- tests: avoid using `MAXPATHLEN`, for portability (12427f4f #1415 #198 #1414)
|
||||
- tests: fix excluding AES-GCM tests (fbd9d192 #1410)
|
||||
- tests: drop default cygpath option `-u` (38e50aa0)
|
||||
- tests: fix shellcheck issues in `test_sshd.test` (a2ac8c55)
|
||||
- tests: sync port number type with the rest of codebase (eb996af8)
|
||||
- tests: fall back to `$LOGNAME` for username (5326a5ce #1241 #1240)
|
||||
- tests: show cmake version used in integration tests (2cd2f40e #1201)
|
||||
- tests: formatting and tidy-ups (e61987a3)
|
||||
- tests: replace FIXME with comments (1a99a86a)
|
||||
- tests: add aes256-gcm encrypted key test (802336cf #1135 #1133)
|
||||
- tests: trap signals in scripts (b2916b28 #1098)
|
||||
- tests: cast to avoid `-Wchar-subscripts` with Cygwin (43df6a46 #1081 #1080)
|
||||
- test_read: make it run without Docker (57e9d18e #1139)
|
||||
- test_sshd.test: show sshd and test connect logs on harness failure (299c2040 #1097)
|
||||
- test_sshd.test: set a safe PID directory (e8cabdcf #1089)
|
||||
- test_sshd.test: minor cleanups (d29eea1d)
|
||||
- tidy-up: link updates (c905bfd2 #1434)
|
||||
- tidy-up: typo in comment (792e1b6f)
|
||||
- tidy-up: fix typo found by codespell (706ec36d)
|
||||
- tidy-up: bump casts from int to long for large C99 types in printfs (2e5a8719 #1264 #1257)
|
||||
- tidy-up: `unsigned` -> `unsigned int` (b136c379)
|
||||
- tidy-up: stop using leading underscores in macro names (c6589b88 #1248)
|
||||
- tidy-up: around `stdint.h` (bfa00f1b #1212)
|
||||
- tidy-up: fix typo in `readme.vms` (a9a79e7a)
|
||||
- tidy-up: use built-in `_WIN32` macro to detect Windows (6fbc9505 #1195)
|
||||
- tidy-up: drop `www.` from `www.libssh2.org` (6e3e8839 #1172)
|
||||
- tidy-up: delete duplicate word from comment (76307435)
|
||||
- tidy-up: avoid exclamations, prefer single quotes, in outputs (003fb454 #1079)
|
||||
- TODO: disable or drop weak algos (0b4bdc85 #1261)
|
||||
- transport: fix unstable connections over non-blocking sockets (de004875 #1454 #720 #1431 #1397)
|
||||
- transport: check ETM on remote end when receiving (bde10825 #1332 #1331)
|
||||
- transport: fix incorrect byte offset in debug message (2388a3aa #1096)
|
||||
- userauth: avoid oob with huge interactive kbd response (f3a85cad #1337)
|
||||
- userauth: add a new structure to separate memory read and file read (63b4c20e #773)
|
||||
- userauth: check whether `*key_method` is a NULL pointer instead of `key_method` (bec57c40)
|
||||
- wincng: fix `DH_GEX_MAXGROUP` set higher than supported (48584671 #1372 #493)
|
||||
- wincng: add to ci/GHA, add `./configure` option `--enable-ecdsa-wincng` (3f98bfb0 #1368 #1315)
|
||||
- wincng: add ECDSA support for host and user authentication (3e723437 #1315)
|
||||
- wincng: prefer `ULONG`/`DWORD` over `unsigned long` (186c1d63 #1165)
|
||||
- wincng: tidy-ups (7bb669b5 #1164)
|
||||
- wolfssl: drop header path hack (8ae1b2d7 #1439)
|
||||
- wolfssl: fix `EVP_Cipher()` use with v5.6.0 and older (a5b0fac2 #1407 #1394 #797 #1299 #1020)
|
||||
- wolfssl: bump version in upstream issue comment (5cab802c)
|
||||
- wolfssl: require v5.4.0 for AES-GCM (260a721c #1411 #1299 #1020)
|
||||
- wolfssl: enable debug logging in wolfSSL when compiled in (76e7a68a #1310)
|
||||
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
Viktor Szakats, Michael Buckley, Patrick Monnerat, Ren Mingshuai,
|
||||
Will Cosgrove, Daniel Stenberg, Josef Cejka, Nicolas Mora, Ryan Kelley,
|
||||
Aaron Stone, Adam, Anders Borum, András Fekete, Andrei Augustin, binary1248,
|
||||
Brian Inglis, brucsc on GitHub, concussious on github, Dan Fandrich,
|
||||
dksslq on github, Haowei Hsu, Harmen Stoppels, Harry Mallon, Jack L,
|
||||
Jakob Egger, Jiwoo Park, João M. S. Silva, Joel Depooter, Johannes Passing,
|
||||
Jose Quaresma, Juliusz Sosinowicz, Kai Pastor, Kenneth Davidson,
|
||||
klux21 on github, Lyndon Brown, Marc Hoersken, mike-jumper, naddy,
|
||||
Nursan Valeyev, Paul Howarth, PewPewPew, Radek Brich, rahmanih on github,
|
||||
rolag on github, Seo Suchan, shubhamhii on github, Steve McIntyre,
|
||||
Tejaswi Kandula, Tobias Stoeckmann, Trzik, Xi Ruoyao
|
||||
58
vendor/libssh2/REUSE.toml
vendored
Normal file
58
vendor/libssh2/REUSE.toml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# This file describes the licensing and copyright situation for files that
|
||||
# cannot be annotated directly, for example because of being simply
|
||||
# uncommentable. Unless this is the case, a file should be annotated directly.
|
||||
#
|
||||
# This follows the REUSE specification: https://reuse.software/spec-3.2/#reusetoml
|
||||
|
||||
version = 1
|
||||
SPDX-PackageName = "libssh2"
|
||||
SPDX-PackageDownloadLocation = "https://libssh2.org/"
|
||||
|
||||
[[annotations]]
|
||||
path = [
|
||||
".github/ISSUE_TEMPLATE/bug_report.md",
|
||||
".github/SECURITY.md",
|
||||
"NEWS",
|
||||
"README",
|
||||
"README.md",
|
||||
"RELEASE-NOTES",
|
||||
"ci/spellcheck-words.txt",
|
||||
"docs/AUTHORS",
|
||||
"docs/BINDINGS.md",
|
||||
"docs/HACKING-CRYPTO",
|
||||
"docs/HACKING.md",
|
||||
"docs/INSTALL_CMAKE.md",
|
||||
"docs/Makefile.am",
|
||||
"docs/SECURITY.md",
|
||||
"docs/TODO",
|
||||
"docs/template.3",
|
||||
"os400/README400",
|
||||
"tests/key_*",
|
||||
"tests/openssh_server/.gitattributes",
|
||||
"tests/openssh_server/authorized_keys",
|
||||
"tests/openssh_server/ca_*",
|
||||
"tests/openssh_server/ssh_*",
|
||||
"tests/openssh_server/sshd_config",
|
||||
"tests/ossfuzz/*",
|
||||
"tests/test_read_algos.txt",
|
||||
"vms/libssh2_config.h",
|
||||
"vms/libssh2_*.dcl",
|
||||
"vms/man2help.c",
|
||||
"vms/readme.vms",
|
||||
# dotfiles
|
||||
".editorconfig",
|
||||
".gitignore",
|
||||
"docs/.gitignore",
|
||||
"example/.gitignore",
|
||||
"m4/.gitignore",
|
||||
"src/.gitignore",
|
||||
"tests/.gitignore",
|
||||
]
|
||||
SPDX-FileCopyrightText = "The libssh2 project and its contributors."
|
||||
SPDX-License-Identifier = "BSD-3-Clause"
|
||||
# If there is licensing/copyright information in or next to these files, prefer that
|
||||
precedence = "closest"
|
||||
950
vendor/libssh2/acinclude.m4
vendored
Normal file
950
vendor/libssh2/acinclude.m4
vendored
Normal file
@@ -0,0 +1,950 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
dnl CURL_CPP_P
|
||||
dnl
|
||||
dnl Check if $cpp -P should be used for extract define values due to gcc 5
|
||||
dnl splitting up strings and defines between line outputs. gcc by default
|
||||
dnl (without -P) will show TEST EINVAL TEST as
|
||||
dnl
|
||||
dnl # 13 "conftest.c"
|
||||
dnl TEST
|
||||
dnl # 13 "conftest.c" 3 4
|
||||
dnl 22
|
||||
dnl # 13 "conftest.c"
|
||||
dnl TEST
|
||||
|
||||
AC_DEFUN([CURL_CPP_P], [
|
||||
AC_MSG_CHECKING([if cpp -P is needed])
|
||||
AC_EGREP_CPP([TEST.*TEST], [
|
||||
#include <errno.h>
|
||||
TEST EINVAL TEST
|
||||
], [cpp=no], [cpp=yes])
|
||||
AC_MSG_RESULT([$cpp])
|
||||
|
||||
dnl we need cpp -P so check if it works then
|
||||
if test "x$cpp" = "xyes"; then
|
||||
AC_MSG_CHECKING([if cpp -P works])
|
||||
OLDCPPFLAGS=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS -P"
|
||||
AC_EGREP_CPP([TEST.*TEST], [
|
||||
#include <errno.h>
|
||||
TEST EINVAL TEST
|
||||
], [cpp_p=yes], [cpp_p=no])
|
||||
AC_MSG_RESULT([$cpp_p])
|
||||
|
||||
if test "x$cpp_p" = "xno"; then
|
||||
AC_MSG_WARN([failed to figure out cpp -P alternative])
|
||||
# without -P
|
||||
CPPPFLAG=""
|
||||
else
|
||||
# with -P
|
||||
CPPPFLAG="-P"
|
||||
fi
|
||||
dnl restore CPPFLAGS
|
||||
CPPFLAGS=$OLDCPPFLAGS
|
||||
else
|
||||
# without -P
|
||||
CPPPFLAG=""
|
||||
fi
|
||||
])
|
||||
|
||||
dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
|
||||
dnl -------------------------------------------------
|
||||
dnl Use the C preprocessor to find out if the given object-style symbol
|
||||
dnl is defined and get its expansion. This macro will not use default
|
||||
dnl includes even if no INCLUDES argument is given. This macro will run
|
||||
dnl silently when invoked with three arguments. If the expansion would
|
||||
dnl result in a set of double-quoted strings the returned expansion will
|
||||
dnl actually be a single double-quoted string concatenating all them.
|
||||
|
||||
AC_DEFUN([CURL_CHECK_DEF], [
|
||||
AC_REQUIRE([CURL_CPP_P])dnl
|
||||
OLDCPPFLAGS=$CPPFLAGS
|
||||
# CPPPFLAG comes from CURL_CPP_P
|
||||
CPPFLAGS="$CPPFLAGS $CPPPFLAG"
|
||||
AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
|
||||
AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
|
||||
if test -z "$SED"; then
|
||||
AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
|
||||
fi
|
||||
if test -z "$GREP"; then
|
||||
AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
|
||||
fi
|
||||
ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
|
||||
tmp_exp=""
|
||||
AC_PREPROC_IFELSE([
|
||||
AC_LANG_SOURCE(
|
||||
ifelse($2,,,[$2])[[
|
||||
#ifdef $1
|
||||
CURL_DEF_TOKEN $1
|
||||
#endif
|
||||
]])
|
||||
],[
|
||||
tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
|
||||
"$GREP" CURL_DEF_TOKEN 2>/dev/null | \
|
||||
"$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \
|
||||
"$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
|
||||
if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
|
||||
tmp_exp=""
|
||||
fi
|
||||
])
|
||||
if test -z "$tmp_exp"; then
|
||||
AS_VAR_SET(ac_HaveDef, no)
|
||||
ifelse($3,,[AC_MSG_RESULT([no])])
|
||||
else
|
||||
AS_VAR_SET(ac_HaveDef, yes)
|
||||
AS_VAR_SET(ac_Def, $tmp_exp)
|
||||
ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
|
||||
fi
|
||||
AS_VAR_POPDEF([ac_Def])dnl
|
||||
AS_VAR_POPDEF([ac_HaveDef])dnl
|
||||
CPPFLAGS=$OLDCPPFLAGS
|
||||
])
|
||||
|
||||
dnl CURL_CHECK_COMPILER_CLANG
|
||||
dnl -------------------------------------------------
|
||||
dnl Verify if compiler being used is clang.
|
||||
|
||||
AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [
|
||||
AC_BEFORE([$0],[CURL_CHECK_COMPILER_GNU_C])dnl
|
||||
AC_MSG_CHECKING([if compiler is clang])
|
||||
CURL_CHECK_DEF([__clang__], [], [silent])
|
||||
if test "$curl_cv_have_def___clang__" = "yes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([if compiler is xlclang])
|
||||
CURL_CHECK_DEF([__ibmxl__], [], [silent])
|
||||
if test "$curl_cv_have_def___ibmxl__" = "yes" ; then
|
||||
dnl IBM's almost-compatible clang version
|
||||
AC_MSG_RESULT([yes])
|
||||
compiler_id="XLCLANG"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
compiler_id="CLANG"
|
||||
fi
|
||||
flags_dbg_yes="-g"
|
||||
flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
|
||||
flags_opt_yes="-O2"
|
||||
flags_opt_off="-O0"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl CURL_DETECT_ICC ([ACTION-IF-YES])
|
||||
dnl
|
||||
dnl check if this is the Intel ICC compiler, and if so run the ACTION-IF-YES
|
||||
dnl sets the $ICC variable to "yes" or "no"
|
||||
dnl **********************************************************************
|
||||
AC_DEFUN([CURL_DETECT_ICC],
|
||||
[
|
||||
ICC="no"
|
||||
AC_MSG_CHECKING([for icc in use])
|
||||
if test "$GCC" = "yes"; then
|
||||
dnl check if this is icc acting as gcc in disguise
|
||||
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
|
||||
dnl action if the text is found, this it has not been replaced by the
|
||||
dnl cpp
|
||||
ICC="no",
|
||||
dnl the text was not found, it was replaced by the cpp
|
||||
ICC="yes"
|
||||
AC_MSG_RESULT([yes])
|
||||
[$1]
|
||||
)
|
||||
fi
|
||||
if test "$ICC" = "no"; then
|
||||
# this is not ICC
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl We create a function for detecting which compiler we use and then set as
|
||||
dnl pedantic compiler options as possible for that particular compiler. The
|
||||
dnl options are only used for debug-builds.
|
||||
|
||||
AC_DEFUN([CURL_CC_DEBUG_OPTS],
|
||||
[
|
||||
if test "z$CLANG" = "z"; then
|
||||
CURL_CHECK_COMPILER_CLANG
|
||||
if test "z$compiler_id" = "zCLANG"; then
|
||||
CLANG="yes"
|
||||
else
|
||||
CLANG="no"
|
||||
fi
|
||||
fi
|
||||
if test "z$ICC" = "z"; then
|
||||
CURL_DETECT_ICC
|
||||
fi
|
||||
|
||||
if test "$CLANG" = "yes"; then
|
||||
|
||||
# indentation to match curl's m4/curl-compilers.m4
|
||||
|
||||
dnl figure out clang version!
|
||||
AC_MSG_CHECKING([compiler version])
|
||||
fullclangver=`$CC -v 2>&1 | grep version`
|
||||
if echo $fullclangver | grep 'Apple' >/dev/null; then
|
||||
appleclang=1
|
||||
else
|
||||
appleclang=0
|
||||
fi
|
||||
clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*)/\1/'`
|
||||
if test -z "$clangver"; then
|
||||
clangver=`echo $fullclangver | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'`
|
||||
oldapple=0
|
||||
else
|
||||
oldapple=1
|
||||
fi
|
||||
clangvhi=`echo $clangver | cut -d . -f1`
|
||||
clangvlo=`echo $clangver | cut -d . -f2`
|
||||
compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
|
||||
if test "$appleclang" = '1' && test "$oldapple" = '0'; then
|
||||
dnl Starting with Xcode 7 / clang 3.7, Apple clang won't tell its upstream version
|
||||
if test "$compiler_num" -ge '1300'; then compiler_num='1200'
|
||||
elif test "$compiler_num" -ge '1205'; then compiler_num='1101'
|
||||
elif test "$compiler_num" -ge '1204'; then compiler_num='1000'
|
||||
elif test "$compiler_num" -ge '1107'; then compiler_num='900'
|
||||
elif test "$compiler_num" -ge '1103'; then compiler_num='800'
|
||||
elif test "$compiler_num" -ge '1003'; then compiler_num='700'
|
||||
elif test "$compiler_num" -ge '1001'; then compiler_num='600'
|
||||
elif test "$compiler_num" -ge '904'; then compiler_num='500'
|
||||
elif test "$compiler_num" -ge '902'; then compiler_num='400'
|
||||
elif test "$compiler_num" -ge '803'; then compiler_num='309'
|
||||
elif test "$compiler_num" -ge '703'; then compiler_num='308'
|
||||
else compiler_num='307'
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT([clang '$compiler_num' (raw: '$fullclangver' / '$clangver')])
|
||||
|
||||
tmp_CFLAGS="-pedantic"
|
||||
if test "$want_werror" = "yes"; then
|
||||
LIBSSH2_CFLAG_EXTRAS="$LIBSSH2_CFLAG_EXTRAS -pedantic-errors"
|
||||
fi
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [all extra])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [pointer-arith write-strings])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [shadow])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [inline nested-externs])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-declarations])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-prototypes])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [float-equal])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sign-compare])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [undef])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [endif-labels strict-prototypes])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [declaration-after-statement])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [cast-align])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [shorten-64-to-32])
|
||||
#
|
||||
dnl Only clang 1.1 or later
|
||||
if test "$compiler_num" -ge "101"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused])
|
||||
fi
|
||||
#
|
||||
dnl Only clang 2.7 or later
|
||||
if test "$compiler_num" -ge "207"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [address])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [attributes])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [bad-function-cast])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [conversion])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [div-by-zero format-security])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [empty-body])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-field-initializers])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-noreturn])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [old-style-definition])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [redundant-decls])
|
||||
# CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [type-limits])
|
||||
if test "x$have_windows_h" != "xyes"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Seen to clash with libtool-generated stub code
|
||||
fi
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code unused-parameter])
|
||||
fi
|
||||
#
|
||||
dnl Only clang 2.8 or later
|
||||
if test "$compiler_num" -ge "208"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [ignored-qualifiers])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [vla])
|
||||
fi
|
||||
#
|
||||
dnl Only clang 2.9 or later
|
||||
if test "$compiler_num" -ge "209"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sign-conversion])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-error=sign-conversion" # FIXME
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [shift-sign-overflow])
|
||||
# CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs
|
||||
fi
|
||||
#
|
||||
dnl Only clang 3.0 or later
|
||||
if test "$compiler_num" -ge "300"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [language-extension-token])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wformat=2"
|
||||
fi
|
||||
#
|
||||
dnl Only clang 3.2 or later
|
||||
if test "$compiler_num" -ge "302"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sometimes-uninitialized])
|
||||
case $host_os in
|
||||
cygwin* | mingw*)
|
||||
dnl skip missing-variable-declarations warnings for cygwin and
|
||||
dnl mingw because the libtool wrapper executable causes them
|
||||
;;
|
||||
*)
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-variable-declarations])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
#
|
||||
dnl Only clang 3.4 or later
|
||||
if test "$compiler_num" -ge "304"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [header-guard])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-const-variable])
|
||||
fi
|
||||
#
|
||||
dnl Only clang 3.5 or later
|
||||
if test "$compiler_num" -ge "305"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [pragmas])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code-break])
|
||||
fi
|
||||
#
|
||||
dnl Only clang 3.6 or later
|
||||
if test "$compiler_num" -ge "306"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [double-promotion])
|
||||
fi
|
||||
#
|
||||
dnl Only clang 3.9 or later
|
||||
if test "$compiler_num" -ge "309"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [comma])
|
||||
# avoid the varargs warning, fixed in 4.0
|
||||
# https://bugs.llvm.org/show_bug.cgi?id=29140
|
||||
if test "$compiler_num" -lt "400"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-varargs"
|
||||
fi
|
||||
fi
|
||||
dnl clang 7 or later
|
||||
if test "$compiler_num" -ge "700"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [assign-enum])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [extra-semi-stmt])
|
||||
fi
|
||||
dnl clang 10 or later
|
||||
if test "$compiler_num" -ge "1000"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough" # we have silencing markup for clang 10.0 and above only
|
||||
fi
|
||||
|
||||
CFLAGS="$CFLAGS $tmp_CFLAGS"
|
||||
|
||||
AC_MSG_NOTICE([Added this set of compiler options: $tmp_CFLAGS])
|
||||
|
||||
elif test "$GCC" = "yes"; then
|
||||
|
||||
# indentation to match curl's m4/curl-compilers.m4
|
||||
|
||||
dnl figure out gcc version!
|
||||
AC_MSG_CHECKING([compiler version])
|
||||
# strip '-suffix' parts, e.g. Ubuntu Windows cross-gcc returns '10-win32'
|
||||
gccver=`$CC -dumpversion | sed -E 's/-.+$//'`
|
||||
gccvhi=`echo $gccver | cut -d . -f1`
|
||||
if echo $gccver | grep -F "." >/dev/null; then
|
||||
gccvlo=`echo $gccver | cut -d . -f2`
|
||||
else
|
||||
gccvlo="0"
|
||||
fi
|
||||
compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
|
||||
AC_MSG_RESULT([gcc '$compiler_num' (raw: '$gccver')])
|
||||
|
||||
if test "$ICC" = "yes"; then
|
||||
dnl this is icc, not gcc.
|
||||
|
||||
dnl ICC warnings we ignore:
|
||||
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:
|
||||
dnl "invalid format string conversion"
|
||||
dnl * 279 warns on static conditions in while expressions
|
||||
dnl * 981 warns on "operands are evaluated in unspecified order"
|
||||
dnl * 1418 "external definition with no prior declaration"
|
||||
dnl * 1419 warns on "external declaration in primary source file"
|
||||
dnl which we know and do on purpose.
|
||||
|
||||
tmp_CFLAGS="-wd279,269,981,1418,1419"
|
||||
|
||||
if test "$compiler_num" -gt "600"; then
|
||||
dnl icc 6.0 and older doesn't have the -Wall flag
|
||||
tmp_CFLAGS="-Wall $tmp_CFLAGS"
|
||||
fi
|
||||
else dnl $ICC = yes
|
||||
dnl this is a set of options we believe *ALL* gcc versions support:
|
||||
tmp_CFLAGS="-pedantic"
|
||||
if test "$want_werror" = "yes"; then
|
||||
LIBSSH2_CFLAG_EXTRAS="$LIBSSH2_CFLAG_EXTRAS -pedantic-errors"
|
||||
fi
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [all])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -W"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [pointer-arith write-strings])
|
||||
#
|
||||
dnl Only gcc 2.7 or later
|
||||
if test "$compiler_num" -ge "207"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [inline nested-externs])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-declarations])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-prototypes])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 2.95 or later
|
||||
if test "$compiler_num" -ge "295"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [bad-function-cast])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 2.96 or later
|
||||
if test "$compiler_num" -ge "296"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [float-equal])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sign-compare])
|
||||
dnl -Wundef used only if gcc is 2.96 or later since we get
|
||||
dnl lots of "`_POSIX_C_SOURCE' is not defined" in system
|
||||
dnl headers with gcc 2.95.4 on FreeBSD 4.9
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [undef])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 2.97 or later
|
||||
if test "$compiler_num" -ge "297"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral"
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 3.0 or later
|
||||
if test "$compiler_num" -ge "300"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
|
||||
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
|
||||
dnl on i686-Linux as it gives us heaps with false positives.
|
||||
dnl Also, on gcc 4.0.X it is totally unbearable and complains all
|
||||
dnl over making it unusable for generic purposes. Let's not use it.
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused shadow])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 3.3 or later
|
||||
if test "$compiler_num" -ge "303"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [endif-labels strict-prototypes])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 3.4 or later
|
||||
if test "$compiler_num" -ge "304"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [declaration-after-statement])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [old-style-definition])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 4.0 or later
|
||||
if test "$compiler_num" -ge "400"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3"
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 4.1 or later (possibly earlier)
|
||||
if test "$compiler_num" -ge "401"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [attributes])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [div-by-zero format-security])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-field-initializers])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-noreturn])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code unused-parameter])
|
||||
# CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [pragmas])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [redundant-decls])
|
||||
# CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 4.2 or later
|
||||
if test "$compiler_num" -ge "402"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [cast-align])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 4.3 or later
|
||||
if test "$compiler_num" -ge "403"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [address])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [type-limits old-style-declaration])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-parameter-type empty-body])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [clobbered ignored-qualifiers])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [conversion trampolines])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sign-conversion])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-error=sign-conversion" # FIXME
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [vla])
|
||||
dnl required for -Warray-bounds, included in -Wall
|
||||
tmp_CFLAGS="$tmp_CFLAGS -ftree-vrp"
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 4.5 or later
|
||||
if test "$compiler_num" -ge "405"; then
|
||||
dnl Only windows targets
|
||||
case $host_os in
|
||||
mingw*)
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wno-pedantic-ms-format"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 4.6 or later
|
||||
if test "$compiler_num" -ge "406"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [double-promotion])
|
||||
fi
|
||||
#
|
||||
dnl only gcc 4.8 or later
|
||||
if test "$compiler_num" -ge "408"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wformat=2"
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 5 or later
|
||||
if test "$compiler_num" -ge "500"; then
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Warray-bounds=2"
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 6 or later
|
||||
if test "$compiler_num" -ge "600"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [shift-negative-value])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [null-dereference])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -fdelete-null-pointer-checks"
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [duplicated-cond])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-const-variable])
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 7 or later
|
||||
if test "$compiler_num" -ge "700"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [duplicated-branches])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [restrict])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [alloc-zero])
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wformat-overflow=2"
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2"
|
||||
tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough"
|
||||
fi
|
||||
#
|
||||
dnl Only gcc 10 or later
|
||||
if test "$compiler_num" -ge "1000"; then
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [arith-conversion])
|
||||
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
|
||||
fi
|
||||
|
||||
for flag in $CPPFLAGS; do
|
||||
case "$flag" in
|
||||
-I*)
|
||||
dnl Include path, provide a -isystem option for the same dir
|
||||
dnl to prevent warnings in those dirs. The -isystem was not very
|
||||
dnl reliable on earlier gcc versions.
|
||||
add=`echo $flag | sed 's/^-I/-isystem /g'`
|
||||
tmp_CFLAGS="$tmp_CFLAGS $add"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
fi dnl $ICC = no
|
||||
|
||||
CFLAGS="$CFLAGS $tmp_CFLAGS"
|
||||
|
||||
AC_MSG_NOTICE([Added this set of compiler options: $tmp_CFLAGS])
|
||||
|
||||
else dnl $GCC = yes
|
||||
|
||||
AC_MSG_NOTICE([Added no extra compiler options])
|
||||
|
||||
fi dnl $GCC = yes
|
||||
|
||||
dnl strip off optimizer flags
|
||||
NEWFLAGS=""
|
||||
for flag in $CFLAGS; do
|
||||
case "$flag" in
|
||||
-O*)
|
||||
dnl echo "cut off $flag"
|
||||
;;
|
||||
*)
|
||||
NEWFLAGS="$NEWFLAGS $flag"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
CFLAGS=$NEWFLAGS
|
||||
|
||||
]) dnl end of AC_DEFUN()
|
||||
|
||||
dnl CURL_ADD_COMPILER_WARNINGS (WARNING-LIST, NEW-WARNINGS)
|
||||
dnl -------------------------------------------------------
|
||||
dnl Contents of variable WARNING-LIST and NEW-WARNINGS are
|
||||
dnl handled as whitespace separated lists of words.
|
||||
dnl Add each compiler warning from NEW-WARNINGS that has not
|
||||
dnl been disabled via CFLAGS to WARNING-LIST.
|
||||
|
||||
AC_DEFUN([CURL_ADD_COMPILER_WARNINGS], [
|
||||
AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
|
||||
ac_var_added_warnings=""
|
||||
for warning in [$2]; do
|
||||
CURL_VAR_MATCH(CFLAGS, [-Wno-$warning -W$warning])
|
||||
if test "$ac_var_match_word" = "no"; then
|
||||
ac_var_added_warnings="$ac_var_added_warnings -W$warning"
|
||||
fi
|
||||
done
|
||||
dnl squeeze whitespace out of result
|
||||
[$1]="$[$1] $ac_var_added_warnings"
|
||||
squeeze [$1]
|
||||
])
|
||||
|
||||
dnl CURL_SHFUNC_SQUEEZE
|
||||
dnl -------------------------------------------------
|
||||
dnl Declares a shell function squeeze() which removes
|
||||
dnl redundant whitespace out of a shell variable.
|
||||
|
||||
AC_DEFUN([CURL_SHFUNC_SQUEEZE], [
|
||||
squeeze() {
|
||||
_sqz_result=""
|
||||
eval _sqz_input=\[$][$]1
|
||||
for _sqz_token in $_sqz_input; do
|
||||
if test -z "$_sqz_result"; then
|
||||
_sqz_result="$_sqz_token"
|
||||
else
|
||||
_sqz_result="$_sqz_result $_sqz_token"
|
||||
fi
|
||||
done
|
||||
eval [$]1=\$_sqz_result
|
||||
return 0
|
||||
}
|
||||
])
|
||||
|
||||
dnl CURL_VAR_MATCH (VARNAME, VALUE)
|
||||
dnl -------------------------------------------------
|
||||
dnl Verifies if shell variable VARNAME contains VALUE.
|
||||
dnl Contents of variable VARNAME and VALUE are handled
|
||||
dnl as whitespace separated lists of words. If at least
|
||||
dnl one word of VALUE is present in VARNAME the match
|
||||
dnl is considered positive, otherwise false.
|
||||
|
||||
AC_DEFUN([CURL_VAR_MATCH], [
|
||||
ac_var_match_word="no"
|
||||
for word1 in $[$1]; do
|
||||
for word2 in [$2]; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_match_word="yes"
|
||||
fi
|
||||
done
|
||||
done
|
||||
])
|
||||
|
||||
dnl CURL_CHECK_NONBLOCKING_SOCKET
|
||||
dnl -------------------------------------------------
|
||||
dnl Check for how to set a socket to non-blocking state. There seems to exist
|
||||
dnl four known different ways, with the one used almost everywhere being POSIX
|
||||
dnl and XPG3, while the other different ways for different systems (old BSD,
|
||||
dnl Windows and Amiga).
|
||||
dnl
|
||||
dnl There are two known platforms (AIX 3.x and SunOS 4.1.x) where the
|
||||
dnl O_NONBLOCK define is found but does not work. This condition is attempted
|
||||
dnl to get caught in this script by using an excessive number of #ifdefs...
|
||||
dnl
|
||||
AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET],
|
||||
[
|
||||
AC_MSG_CHECKING([non-blocking sockets style])
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
/* headers for O_NONBLOCK test */
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
]], [[
|
||||
/* try to compile O_NONBLOCK */
|
||||
|
||||
#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 socket;
|
||||
int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK);
|
||||
]])],[
|
||||
dnl the O_NONBLOCK test was fine
|
||||
nonblock="O_NONBLOCK"
|
||||
AC_DEFINE(HAVE_O_NONBLOCK, 1, [use O_NONBLOCK for non-blocking sockets])
|
||||
],[
|
||||
dnl the code was bad, try a different program now, test 2
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
/* headers for FIONBIO test */
|
||||
#include <unistd.h>
|
||||
#include <stropts.h>
|
||||
]], [[
|
||||
/* FIONBIO source test (old-style unix) */
|
||||
int socket;
|
||||
int flags = ioctl(socket, FIONBIO, &flags);
|
||||
]])],[
|
||||
dnl FIONBIO test was good
|
||||
nonblock="FIONBIO"
|
||||
AC_DEFINE(HAVE_FIONBIO, 1, [use FIONBIO for non-blocking sockets])
|
||||
],[
|
||||
dnl FIONBIO test was also bad
|
||||
dnl the code was bad, try a different program now, test 3
|
||||
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
/* headers for IoctlSocket test (Amiga?) */
|
||||
#include <sys/ioctl.h>
|
||||
]], [[
|
||||
/* IoctlSocket source code */
|
||||
int socket;
|
||||
int flags = IoctlSocket(socket, FIONBIO, (long)1);
|
||||
]])],[
|
||||
dnl ioctlsocket test was good
|
||||
nonblock="IoctlSocket"
|
||||
AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, [use Ioctlsocket() for non-blocking sockets])
|
||||
],[
|
||||
dnl Ioctlsocket did not compile, do test 4!
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
/* headers for SO_NONBLOCK test (BeOS) */
|
||||
#include <socket.h>
|
||||
]], [[
|
||||
/* SO_NONBLOCK source code */
|
||||
long b = 1;
|
||||
int socket;
|
||||
int flags = setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
|
||||
]])],[
|
||||
dnl the SO_NONBLOCK test was good
|
||||
nonblock="SO_NONBLOCK"
|
||||
AC_DEFINE(HAVE_SO_NONBLOCK, 1, [use SO_NONBLOCK for non-blocking sockets])
|
||||
],[
|
||||
dnl test 4 did not compile!
|
||||
nonblock="nada"
|
||||
])
|
||||
dnl end of forth test
|
||||
|
||||
])
|
||||
dnl end of third test
|
||||
|
||||
])
|
||||
dnl end of second test
|
||||
|
||||
])
|
||||
dnl end of non-blocking try-compile test
|
||||
AC_MSG_RESULT($nonblock)
|
||||
|
||||
if test "$nonblock" = "nada"; then
|
||||
AC_MSG_WARN([non-block sockets disabled])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl CURL_CHECK_NEED_REENTRANT_SYSTEM
|
||||
dnl -------------------------------------------------
|
||||
dnl Checks if the preprocessor _REENTRANT definition
|
||||
dnl must be unconditionally done for this platform.
|
||||
dnl Internal macro for CURL_CONFIGURE_REENTRANT.
|
||||
|
||||
AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [
|
||||
case $host in
|
||||
*-*-solaris* | *-*-hpux*)
|
||||
tmp_need_reentrant="yes"
|
||||
;;
|
||||
*)
|
||||
tmp_need_reentrant="no"
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
|
||||
dnl -------------------------------------------------
|
||||
dnl This macro ensures that configuration tests done
|
||||
dnl after this will execute with preprocessor symbol
|
||||
dnl _REENTRANT defined. This macro also ensures that
|
||||
dnl the generated config file defines NEED_REENTRANT
|
||||
dnl and that in turn setup.h will define _REENTRANT.
|
||||
dnl Internal macro for CURL_CONFIGURE_REENTRANT.
|
||||
|
||||
AC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
|
||||
AC_DEFINE(NEED_REENTRANT, 1,
|
||||
[Define to 1 if _REENTRANT preprocessor symbol must be defined.])
|
||||
cat >>confdefs.h <<_EOF
|
||||
#ifndef _REENTRANT
|
||||
# define _REENTRANT
|
||||
#endif
|
||||
_EOF
|
||||
])
|
||||
|
||||
|
||||
dnl CURL_CONFIGURE_REENTRANT
|
||||
dnl -------------------------------------------------
|
||||
dnl This first checks if the preprocessor _REENTRANT
|
||||
dnl symbol is already defined. If it isn't currently
|
||||
dnl defined a set of checks are performed to verify
|
||||
dnl if its definition is required to make visible to
|
||||
dnl the compiler a set of *_r functions. Finally, if
|
||||
dnl _REENTRANT is already defined or needed it takes
|
||||
dnl care of making adjustments necessary to ensure
|
||||
dnl that it is defined equally for further configure
|
||||
dnl tests and generated config file.
|
||||
|
||||
AC_DEFUN([CURL_CONFIGURE_REENTRANT], [
|
||||
AC_PREREQ([2.50])dnl
|
||||
#
|
||||
AC_MSG_CHECKING([if _REENTRANT is already defined])
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
]],[[
|
||||
#ifdef _REENTRANT
|
||||
int dummy=1;
|
||||
#else
|
||||
force compilation error
|
||||
#endif
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
tmp_reentrant_initially_defined="yes"
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
tmp_reentrant_initially_defined="no"
|
||||
])
|
||||
#
|
||||
if test "$tmp_reentrant_initially_defined" = "no"; then
|
||||
AC_MSG_CHECKING([if _REENTRANT is actually needed])
|
||||
CURL_CHECK_NEED_REENTRANT_SYSTEM
|
||||
|
||||
if test "$tmp_need_reentrant" = "yes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
fi
|
||||
#
|
||||
AC_MSG_CHECKING([if _REENTRANT is onwards defined])
|
||||
if test "$tmp_reentrant_initially_defined" = "yes" ||
|
||||
test "$tmp_need_reentrant" = "yes"; then
|
||||
CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
#
|
||||
])
|
||||
|
||||
dnl LIBSSH2_LIB_HAVE_LINKFLAGS
|
||||
dnl --------------------------
|
||||
dnl Wrapper around AC_LIB_HAVE_LINKFLAGS to also check $prefix/lib, if set.
|
||||
dnl
|
||||
dnl autoconf only checks $prefix/lib64 if gcc -print-search-dirs output
|
||||
dnl includes a directory named lib64. So, to find libraries in $prefix/lib
|
||||
dnl we append -L$prefix/lib to LDFLAGS before checking.
|
||||
dnl
|
||||
dnl For convenience, $4 is expanded if [lib]$1 is found.
|
||||
|
||||
AC_DEFUN([LIBSSH2_LIB_HAVE_LINKFLAGS], [
|
||||
libssh2_save_CPPFLAGS="$CPPFLAGS"
|
||||
libssh2_save_LDFLAGS="$LDFLAGS"
|
||||
|
||||
if test "${with_lib$1_prefix+set}" = set; then
|
||||
CPPFLAGS="$CPPFLAGS${CPPFLAGS:+ }-I${with_lib$1_prefix}/include"
|
||||
LDFLAGS="$LDFLAGS${LDFLAGS:+ }-L${with_lib$1_prefix}/lib"
|
||||
fi
|
||||
|
||||
AC_LIB_HAVE_LINKFLAGS([$1], [$2], [$3])
|
||||
|
||||
if test "$ac_cv_lib$1" = "yes"; then :
|
||||
$4
|
||||
else
|
||||
CPPFLAGS="$libssh2_save_CPPFLAGS"
|
||||
LDFLAGS="$libssh2_save_LDFLAGS"
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBSSH2_CHECK_CRYPTO], [
|
||||
if test "$use_crypto" = "auto" && test "$found_crypto" = "none" || test "$use_crypto" = "$1"; then
|
||||
m4_case([$1],
|
||||
[openssl], [
|
||||
LIBSSH2_LIB_HAVE_LINKFLAGS([ssl], [crypto], [#include <openssl/ssl.h>], [
|
||||
AC_DEFINE(LIBSSH2_OPENSSL, 1, [Use $1])
|
||||
LIBSSH2_PC_REQUIRES_PRIVATE="$LIBSSH2_PC_REQUIRES_PRIVATE${LIBSSH2_PC_REQUIRES_PRIVATE:+,}libcrypto"
|
||||
found_crypto="$1"
|
||||
found_crypto_str="OpenSSL"
|
||||
])
|
||||
],
|
||||
|
||||
[wolfssl], [
|
||||
LIBSSH2_LIB_HAVE_LINKFLAGS([wolfssl], [], [#include <wolfssl/options.h>], [
|
||||
AC_DEFINE(LIBSSH2_WOLFSSL, 1, [Use $1])
|
||||
LIBSSH2_PC_REQUIRES_PRIVATE="$LIBSSH2_PC_REQUIRES_PRIVATE${LIBSSH2_PC_REQUIRES_PRIVATE:+,}wolfssl"
|
||||
found_crypto="$1"
|
||||
])
|
||||
],
|
||||
|
||||
[libgcrypt], [
|
||||
LIBSSH2_LIB_HAVE_LINKFLAGS([gcrypt], [], [#include <gcrypt.h>], [
|
||||
AC_DEFINE(LIBSSH2_LIBGCRYPT, 1, [Use $1])
|
||||
LIBSSH2_PC_REQUIRES_PRIVATE="$LIBSSH2_PC_REQUIRES_PRIVATE${LIBSSH2_PC_REQUIRES_PRIVATE:+,}libgcrypt"
|
||||
found_crypto="$1"
|
||||
])
|
||||
],
|
||||
|
||||
[mbedtls], [
|
||||
LIBSSH2_LIB_HAVE_LINKFLAGS([mbedcrypto], [], [#include <mbedtls/version.h>], [
|
||||
AC_DEFINE(LIBSSH2_MBEDTLS, 1, [Use $1])
|
||||
LIBS="$LIBS -lmbedcrypto"
|
||||
found_crypto="$1"
|
||||
])
|
||||
],
|
||||
|
||||
[wincng], [
|
||||
if test "x$have_windows_h" = "xyes"; then
|
||||
# Look for Windows Cryptography API: Next Generation
|
||||
|
||||
LIBS="$LIBS -lcrypt32"
|
||||
|
||||
# Check necessary for old-MinGW
|
||||
LIBSSH2_LIB_HAVE_LINKFLAGS([bcrypt], [], [
|
||||
#include <windows.h>
|
||||
#include <bcrypt.h>
|
||||
], [
|
||||
AC_DEFINE(LIBSSH2_WINCNG, 1, [Use $1])
|
||||
found_crypto="$1"
|
||||
found_crypto_str="Windows Cryptography API: Next Generation"
|
||||
])
|
||||
fi
|
||||
],
|
||||
)
|
||||
test "$found_crypto" = "none" &&
|
||||
crypto_errors="${crypto_errors}No $1 crypto library found!
|
||||
"
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl LIBSSH2_CHECK_OPTION_WERROR
|
||||
dnl -------------------------------------------------
|
||||
dnl Verify if configure has been invoked with option
|
||||
dnl --enable-werror or --disable-werror, and set
|
||||
dnl shell variable want_werror as appropriate.
|
||||
|
||||
AC_DEFUN([LIBSSH2_CHECK_OPTION_WERROR], [
|
||||
AC_BEFORE([$0],[LIBSSH2_CHECK_COMPILER])dnl
|
||||
AC_MSG_CHECKING([whether to enable compiler warnings as errors])
|
||||
OPT_COMPILER_WERROR="default"
|
||||
AC_ARG_ENABLE(werror,
|
||||
AS_HELP_STRING([--enable-werror],[Enable compiler warnings as errors])
|
||||
AS_HELP_STRING([--disable-werror],[Disable compiler warnings as errors]),
|
||||
OPT_COMPILER_WERROR=$enableval)
|
||||
case "$OPT_COMPILER_WERROR" in
|
||||
no)
|
||||
dnl --disable-werror option used
|
||||
want_werror="no"
|
||||
;;
|
||||
default)
|
||||
dnl configure option not specified
|
||||
want_werror="no"
|
||||
;;
|
||||
*)
|
||||
dnl --enable-werror option used
|
||||
want_werror="yes"
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$want_werror])
|
||||
|
||||
if test X"$want_werror" = Xyes; then
|
||||
LIBSSH2_CFLAG_EXTRAS="$LIBSSH2_CFLAG_EXTRAS -Werror"
|
||||
fi
|
||||
])
|
||||
240
vendor/libssh2/appveyor.yml
vendored
Normal file
240
vendor/libssh2/appveyor.yml
vendored
Normal file
@@ -0,0 +1,240 @@
|
||||
# Copyright (C) Ruslan Baratov
|
||||
# Copyright (C) Alexander Lamaison
|
||||
# Copyright (C) Marc Hoersken
|
||||
# Copyright (C) Viktor Szakats
|
||||
# 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# https://www.appveyor.com/docs/windows-images-software/
|
||||
|
||||
environment:
|
||||
CONFIGURATION: 'Release'
|
||||
FIXTURE_XFER_COUNT: 35020
|
||||
SKIP_CTEST: 'yes' # Connection to test server has been failing consistently since 2024-08-29
|
||||
|
||||
matrix:
|
||||
- job_name: 'VS2022, OpenSSL 3, x64, Server 2019'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
GENERATOR: 'Visual Studio 17 2022'
|
||||
PLATFORM: 'x64'
|
||||
CRYPTO_BACKEND: 'OpenSSL'
|
||||
OPENSSL_ROOT_DIR: 'C:/OpenSSL-v33-Win64'
|
||||
|
||||
- job_name: 'VS2015, OpenSSL 1.1, x86, Server 2016'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
||||
GENERATOR: 'Visual Studio 14 2015'
|
||||
PLATFORM: 'x86'
|
||||
CRYPTO_BACKEND: 'OpenSSL'
|
||||
OPENSSL_ROOT_DIR: 'C:/OpenSSL-v111-Win32'
|
||||
|
||||
- job_name: 'VS2015, OpenSSL 1.1, x64, Server 2012 R2, Logging'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 14 2015'
|
||||
PLATFORM: 'x64'
|
||||
CRYPTO_BACKEND: 'OpenSSL'
|
||||
OPENSSL_ROOT_DIR: 'C:/OpenSSL-v111-Win64'
|
||||
ENABLE_DEBUG_LOGGING: 'ON'
|
||||
|
||||
- job_name: 'VS2013, OpenSSL 1.1, x64, Server 2012 R2'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 12 2013'
|
||||
PLATFORM: 'x64'
|
||||
CRYPTO_BACKEND: 'OpenSSL'
|
||||
OPENSSL_ROOT_DIR: 'C:/OpenSSL-v111-Win64'
|
||||
|
||||
- job_name: 'VS2013, OpenSSL 1.1, x86, Server 2012 R2, Shared-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 12 2013'
|
||||
PLATFORM: 'x86'
|
||||
BUILD_STATIC_LIBS: 'OFF'
|
||||
CRYPTO_BACKEND: 'OpenSSL'
|
||||
OPENSSL_ROOT_DIR: 'C:/OpenSSL-v111-Win32'
|
||||
SKIP_CTEST: 'no'
|
||||
|
||||
- job_name: 'VS2013, OpenSSL 1.0.2, x64, Build-only, Static-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 12 2013'
|
||||
PLATFORM: 'x64'
|
||||
BUILD_SHARED_LIBS: 'OFF'
|
||||
CRYPTO_BACKEND: 'OpenSSL'
|
||||
OPENSSL_ROOT_DIR: 'C:/OpenSSL-Win64'
|
||||
SKIP_CTEST: 'yes'
|
||||
|
||||
- job_name: 'VS2008, WinCNG, x86, Build-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 9 2008'
|
||||
PLATFORM: 'x86'
|
||||
CRYPTO_BACKEND: 'WinCNG'
|
||||
ENABLE_ECDSA_WINCNG: 'ON'
|
||||
SKIP_CTEST: 'yes'
|
||||
|
||||
- job_name: 'VS2010, WinCNG, x64, Build-only, non-unity'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 10 2010'
|
||||
PLATFORM: 'x64'
|
||||
CRYPTO_BACKEND: 'WinCNG'
|
||||
ENABLE_ECDSA_WINCNG: 'ON'
|
||||
UNITY: 'OFF'
|
||||
SKIP_CTEST: 'yes'
|
||||
|
||||
- job_name: 'VS2022, WinCNG, x64, Server 2019, Logging'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
GENERATOR: 'Visual Studio 17 2022'
|
||||
PLATFORM: 'x64'
|
||||
CRYPTO_BACKEND: 'WinCNG'
|
||||
ENABLE_ECDSA_WINCNG: 'ON'
|
||||
ENABLE_DEBUG_LOGGING: 'ON'
|
||||
|
||||
- job_name: 'VS2022, WinCNG, ARM64, Build-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
GENERATOR: 'Visual Studio 17 2022'
|
||||
PLATFORM: 'ARM64'
|
||||
CRYPTO_BACKEND: 'WinCNG'
|
||||
ENABLE_ECDSA_WINCNG: 'ON'
|
||||
|
||||
- job_name: 'VS2015, WinCNG, x86, Server 2016'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
||||
GENERATOR: 'Visual Studio 14 2015'
|
||||
PLATFORM: 'x86'
|
||||
CRYPTO_BACKEND: 'WinCNG'
|
||||
ENABLE_ECDSA_WINCNG: 'ON'
|
||||
|
||||
- job_name: 'VS2015, WinCNG, x64, Server 2012 R2'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
GENERATOR: 'Visual Studio 14 2015'
|
||||
PLATFORM: 'x64'
|
||||
CRYPTO_BACKEND: 'WinCNG'
|
||||
ENABLE_ECDSA_WINCNG: 'OFF'
|
||||
SKIP_CTEST: 'no'
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
|
||||
install:
|
||||
# prepare local SSH server for reverse tunneling from GitHub Actions hosting our docker container
|
||||
- ps: |
|
||||
$env:OPENSSH_SERVER_PORT = Get-Random -Minimum 2000 -Maximum 2300
|
||||
[System.Environment]::SetEnvironmentVariable('OPENSSH_SERVER_PORT', $env:OPENSSH_SERVER_PORT)
|
||||
.\ci\appveyor\docker-bridge.ps1
|
||||
|
||||
build_script:
|
||||
- ps: |
|
||||
$options = @('-DENABLE_WERROR=ON')
|
||||
|
||||
if($env:GENERATOR -eq 'Visual Studio 17 2022') {
|
||||
if($env:PLATFORM -eq 'x86') {
|
||||
$options += '-A Win32'
|
||||
}
|
||||
else {
|
||||
$options += "-A $env:PLATFORM"
|
||||
}
|
||||
}
|
||||
elseif($env:PLATFORM -eq 'x64') {
|
||||
$env:GENERATOR += ' Win64'
|
||||
}
|
||||
$options += "-G$env:GENERATOR"
|
||||
|
||||
$options += "-DCRYPTO_BACKEND=$env:CRYPTO_BACKEND"
|
||||
if($env:OPENSSL_ROOT_DIR -ne '') {
|
||||
if(Test-Path $env:OPENSSL_ROOT_DIR) {
|
||||
$options += "-DOPENSSL_ROOT_DIR=$env:OPENSSL_ROOT_DIR"
|
||||
}
|
||||
else {
|
||||
Write-Error "Directory '$env:OPENSSL_ROOT_DIR' expected, but not found."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
if($env:ENABLE_DEBUG_LOGGING -eq 'ON') {
|
||||
$options += '-DENABLE_DEBUG_LOGGING=ON'
|
||||
}
|
||||
if($env:UNITY -ne 'OFF') {
|
||||
$options += '-DCMAKE_UNITY_BUILD=ON'
|
||||
}
|
||||
if($env:ENABLE_ECDSA_WINCNG -eq 'ON') {
|
||||
$options += '-DENABLE_ECDSA_WINCNG=ON'
|
||||
}
|
||||
if($env:BUILD_STATIC_LIBS -eq 'OFF') {
|
||||
$options += '-DBUILD_STATIC_LIBS=OFF'
|
||||
}
|
||||
if($env:BUILD_SHARED_LIBS -eq 'OFF') {
|
||||
$options += '-DBUILD_SHARED_LIBS=OFF'
|
||||
}
|
||||
$options += '-DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
||||
# FIXME: First sshd test sometimes timeouts, subsequent ones almost always fail:
|
||||
# 'libssh2_session_handshake failed (-43): Failed getting banner'
|
||||
$options += '-DRUN_SSHD_TESTS=OFF'
|
||||
|
||||
Write-Host 'CMake options:' $options
|
||||
cmake -B _builds $options
|
||||
cmake --build _builds --config "$env:CONFIGURATION" --parallel 2
|
||||
|
||||
test_script:
|
||||
- ps: |
|
||||
if($env:SKIP_CTEST -ne 'yes' -and $env:PLATFORM -ne 'ARM64') {
|
||||
appveyor-retry choco install --yes --no-progress --limit-output --timeout 180 docker-cli
|
||||
Write-Host 'Waiting for SSH connection from GitHub Actions' -NoNewline
|
||||
$endDate = (Get-Date).AddMinutes(5)
|
||||
while((Get-Process -Name 'sshd' -ErrorAction SilentlyContinue).Count -eq 1 -and (Get-Date) -lt $endDate) {
|
||||
Write-Host '.' -NoNewline
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
if((Get-Process -Name 'sshd' -ErrorAction SilentlyContinue).Count -gt 1) {
|
||||
$env:DOCKER_HOST = 'tcp://127.0.0.1:2375'
|
||||
[System.Environment]::SetEnvironmentVariable('DOCKER_HOST', $env:DOCKER_HOST)
|
||||
Write-Host '... ready.'
|
||||
}
|
||||
else {
|
||||
Write-Host '... failed.'
|
||||
}
|
||||
if($env:CRYPTO_BACKEND -eq 'WinCNG') {
|
||||
$env:FIXTURE_TRACE_ALL_CONNECT = '1'
|
||||
}
|
||||
$env:OPENSSH_SERVER_IMAGE=[string] (& bash -c "echo ghcr.io/libssh2/ci_tests_openssh_server:$(git rev-parse --short=20 HEAD:tests/openssh_server)")
|
||||
cd _builds; ctest -VV -C $($env:CONFIGURATION) --output-on-failure --timeout 900
|
||||
}
|
||||
|
||||
on_failure:
|
||||
- ps: |
|
||||
if(Test-Path _builds/CMakeFiles/CMakeConfigureLog.yaml) { cat _builds/CMakeFiles/CMakeConfigureLog.yaml }
|
||||
if(Test-Path _builds/CMakeFiles/CMakeOutput.log) { cat _builds/CMakeFiles/CMakeOutput.log }
|
||||
if(Test-Path _builds/CMakeFiles/CMakeError.log) { cat _builds/CMakeFiles/CMakeError.log }
|
||||
|
||||
on_finish:
|
||||
- ps: |
|
||||
Get-Process -Name 'sleep' -ErrorAction SilentlyContinue | Stop-Process
|
||||
Start-Sleep -Seconds 3
|
||||
Get-Process -Name 'sshd' -ErrorAction SilentlyContinue | Stop-Process
|
||||
|
||||
skip_commits:
|
||||
files:
|
||||
- '.github/**/*'
|
||||
|
||||
clone_depth: 10
|
||||
|
||||
# Limit branches to avoid testing feature branches twice (as branch and as pull request)
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
29
vendor/libssh2/ci/appveyor/docker-bridge.ps1
vendored
Executable file
29
vendor/libssh2/ci/appveyor/docker-bridge.ps1
vendored
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env pwsh
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# Partially copied from https://github.com/appveyor/ci/blob/master/scripts/enable-rdp.ps1
|
||||
|
||||
# get current IP
|
||||
$ip = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -like 'ethernet*'}).IPAddress
|
||||
$port = 3389
|
||||
if($ip.StartsWith('172.24.')) {
|
||||
$port = 33800 + ($ip.split('.')[2] - 16) * 256 + $ip.split('.')[3]
|
||||
}
|
||||
elseif($ip.StartsWith('192.168.') -or $ip.StartsWith('10.240.')) {
|
||||
# new environment - behind NAT
|
||||
$port = 33800 + ($ip.split('.')[2] - 0) * 256 + $ip.split('.')[3]
|
||||
}
|
||||
elseif($ip.StartsWith('10.0.')) {
|
||||
$port = 33800 + ($ip.split('.')[2] - 0) * 256 + $ip.split('.')[3]
|
||||
}
|
||||
|
||||
# get external IP
|
||||
$extip = (New-Object Net.WebClient).DownloadString('https://www.appveyor.com/tools/my-ip.aspx').Trim()
|
||||
|
||||
# allow inbound traffic
|
||||
New-NetFirewallRule -DisplayName 'SSH via RDP port' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22,3389
|
||||
|
||||
# launch remote docker daemon with reverse SSH tunnel
|
||||
$scriptPath = (split-path -parent $MyInvocation.MyCommand.Definition) -replace '\\', '/'
|
||||
& C:\msys64\usr\bin\sh -l -c "$scriptPath/docker-bridge.sh $ip $extip $port"
|
||||
27
vendor/libssh2/ci/appveyor/docker-bridge.sh
vendored
Executable file
27
vendor/libssh2/ci/appveyor/docker-bridge.sh
vendored
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
set -e
|
||||
|
||||
netsh interface portproxy add v4tov4 listenport=3389 listenaddress="$1" connectport=22 connectaddress=127.0.0.1
|
||||
netsh interface portproxy show all
|
||||
|
||||
ssh-keygen -t ed25519 -f auth -q -N '' && mkdir .ssh && mv auth.pub .ssh/authorized_keys
|
||||
ssh-keygen -A
|
||||
"$(command -v sshd)" &
|
||||
|
||||
curl \
|
||||
-F "account=${APPVEYOR_ACCOUNT_NAME}" \
|
||||
-F "project=${APPVEYOR_PROJECT_SLUG}" \
|
||||
-F "buildid=${APPVEYOR_BUILD_VERSION}" \
|
||||
-F "base=${APPVEYOR_REPO_BRANCH}" \
|
||||
-F "hash=${APPVEYOR_REPO_COMMIT}" \
|
||||
-F "repo=${APPVEYOR_REPO_NAME}" \
|
||||
-F "ssh_host=$2" \
|
||||
-F "ssh_port=$3" \
|
||||
-F "ssh_user=$(whoami)" \
|
||||
-F "ssh_forward=127.0.0.1:${OPENSSH_SERVER_PORT} 127.0.0.1:${OPENSSH_SERVER_PORT},127.0.0.1:2375 /var/run/docker.sock" \
|
||||
-F "ssh_hostkey=$(paste -d , /etc/ssh/ssh_host_*_key.pub)" \
|
||||
-F "ssh_privkey=$(paste -sd , auth)" \
|
||||
-s 'https://stuff.marc-hoersken.de/libssh2/dispatch.php'
|
||||
1073
vendor/libssh2/ci/checksrc.pl
vendored
Executable file
1073
vendor/libssh2/ci/checksrc.pl
vendored
Executable file
File diff suppressed because it is too large
Load Diff
10
vendor/libssh2/ci/checksrc.sh
vendored
Executable file
10
vendor/libssh2/ci/checksrc.sh
vendored
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
git ls-files "*.[ch]" | xargs -n1 \
|
||||
./ci/checksrc.pl -i4 -m79 -AFOPENMODE -ASNPRINTF -ATYPEDEFSTRUCT
|
||||
10
vendor/libssh2/ci/shellcheck.sh
vendored
Executable file
10
vendor/libssh2/ci/shellcheck.sh
vendored
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Viktor Szakats
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
|
||||
shellcheck --version
|
||||
# shellcheck disable=SC2046
|
||||
shellcheck --exclude=1091 \
|
||||
--enable=avoid-nullary-conditions,deprecate-which \
|
||||
$(grep -l -E '^#!(/usr/bin/env bash|/bin/sh|/bin/bash)' $(git ls-files))
|
||||
3
vendor/libssh2/ci/spellcheck-words.txt
vendored
Normal file
3
vendor/libssh2/ci/spellcheck-words.txt
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
gord
|
||||
pase
|
||||
nam
|
||||
12
vendor/libssh2/ci/spellcheck.sh
vendored
Executable file
12
vendor/libssh2/ci/spellcheck.sh
vendored
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
# shellcheck disable=SC2046
|
||||
codespell --skip='docs/AUTHORS' \
|
||||
--ignore-words='ci/spellcheck-words.txt' \
|
||||
$(git ls-files)
|
||||
81
vendor/libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake
vendored
Normal file
81
vendor/libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
# Copyright (C) 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
# - 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 IN LISTS 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()
|
||||
95
vendor/libssh2/cmake/CheckNonblockingSocketSupport.cmake
vendored
Normal file
95
vendor/libssh2/cmake/CheckNonblockingSocketSupport.cmake
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
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_CASE
|
||||
# HAVE_SO_NONBLOCK
|
||||
#
|
||||
# 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(void)
|
||||
{
|
||||
int socket = 0;
|
||||
(void)fcntl(socket, F_SETFL, 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(void)
|
||||
{
|
||||
int socket = 0;
|
||||
int flags = 0;
|
||||
(void)ioctl(socket, FIONBIO, &flags);
|
||||
}"
|
||||
HAVE_FIONBIO)
|
||||
|
||||
if(NOT HAVE_FIONBIO)
|
||||
check_c_source_compiles("/* IoctlSocket test (Amiga?) */
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int socket = 0;
|
||||
(void)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(void)
|
||||
{
|
||||
long b = 1;
|
||||
int socket = 0;
|
||||
(void)setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
|
||||
}"
|
||||
HAVE_SO_NONBLOCK)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
68
vendor/libssh2/cmake/CopyRuntimeDependencies.cmake
vendored
Normal file
68
vendor/libssh2/cmake/CopyRuntimeDependencies.cmake
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
# Copyright (C) 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
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 IN LISTS COPY_BEFORE_TARGETS)
|
||||
add_dependencies(${_target} ${COPY_TARGET})
|
||||
endforeach()
|
||||
|
||||
foreach(_dependency IN LISTS 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()
|
||||
59
vendor/libssh2/cmake/FindLibgcrypt.cmake
vendored
Normal file
59
vendor/libssh2/cmake/FindLibgcrypt.cmake
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
###########################################################################
|
||||
# Find the libgcrypt library
|
||||
#
|
||||
# Input variables:
|
||||
#
|
||||
# LIBGCRYPT_INCLUDE_DIR The libgcrypt include directory
|
||||
# LIBGCRYPT_LIBRARY Path to libgcrypt library
|
||||
#
|
||||
# Result variables:
|
||||
#
|
||||
# LIBGCRYPT_FOUND System has libgcrypt
|
||||
# LIBGCRYPT_INCLUDE_DIRS The libgcrypt include directories
|
||||
# LIBGCRYPT_LIBRARIES The libgcrypt library names
|
||||
# LIBGCRYPT_LIBRARY_DIRS The libgcrypt library directories
|
||||
# LIBGCRYPT_CFLAGS Required compiler flags
|
||||
# LIBGCRYPT_VERSION Version of libgcrypt
|
||||
|
||||
if((UNIX OR VCPKG_TOOLCHAIN OR (MINGW AND NOT CMAKE_CROSSCOMPILING)) AND
|
||||
NOT DEFINED LIBGCRYPT_INCLUDE_DIR AND
|
||||
NOT DEFINED LIBGCRYPT_LIBRARY)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_check_modules(LIBGCRYPT "libgcrypt")
|
||||
endif()
|
||||
|
||||
if(LIBGCRYPT_FOUND)
|
||||
string(REPLACE ";" " " LIBGCRYPT_CFLAGS "${LIBGCRYPT_CFLAGS}")
|
||||
message(STATUS "Found Libgcrypt (via pkg-config): ${LIBGCRYPT_INCLUDE_DIRS} (found version \"${LIBGCRYPT_VERSION}\")")
|
||||
else()
|
||||
find_path(LIBGCRYPT_INCLUDE_DIR NAMES "gcrypt.h")
|
||||
find_library(LIBGCRYPT_LIBRARY NAMES "gcrypt" "libgcrypt")
|
||||
|
||||
if(LIBGCRYPT_INCLUDE_DIR AND EXISTS "${LIBGCRYPT_INCLUDE_DIR}/gcrypt.h")
|
||||
set(_version_regex "#[\t ]*define[\t ]+GCRYPT_VERSION[\t ]+\"([^\"]*)\"")
|
||||
file(STRINGS "${LIBGCRYPT_INCLUDE_DIR}/gcrypt.h" _version_str REGEX "${_version_regex}")
|
||||
string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
|
||||
set(LIBGCRYPT_VERSION "${_version_str}")
|
||||
unset(_version_regex)
|
||||
unset(_version_str)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Libgcrypt
|
||||
REQUIRED_VARS
|
||||
LIBGCRYPT_INCLUDE_DIR
|
||||
LIBGCRYPT_LIBRARY
|
||||
VERSION_VAR
|
||||
LIBGCRYPT_VERSION
|
||||
)
|
||||
|
||||
if(LIBGCRYPT_FOUND)
|
||||
set(LIBGCRYPT_INCLUDE_DIRS ${LIBGCRYPT_INCLUDE_DIR})
|
||||
set(LIBGCRYPT_LIBRARIES ${LIBGCRYPT_LIBRARY})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(LIBGCRYPT_INCLUDE_DIR LIBGCRYPT_LIBRARY)
|
||||
endif()
|
||||
69
vendor/libssh2/cmake/FindMbedTLS.cmake
vendored
Normal file
69
vendor/libssh2/cmake/FindMbedTLS.cmake
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
###########################################################################
|
||||
# Find the mbedtls library
|
||||
#
|
||||
# Input variables:
|
||||
#
|
||||
# MBEDTLS_INCLUDE_DIR The mbedtls include directory
|
||||
# MBEDCRYPTO_LIBRARY Path to mbedcrypto library
|
||||
#
|
||||
# Result variables:
|
||||
#
|
||||
# MBEDTLS_FOUND System has mbedtls
|
||||
# MBEDTLS_INCLUDE_DIRS The mbedtls include directories
|
||||
# MBEDTLS_LIBRARIES The mbedtls library names
|
||||
# MBEDTLS_LIBRARY_DIRS The mbedtls library directories
|
||||
# MBEDTLS_CFLAGS Required compiler flags
|
||||
# MBEDTLS_VERSION Version of mbedtls
|
||||
|
||||
if((UNIX OR VCPKG_TOOLCHAIN OR (MINGW AND NOT CMAKE_CROSSCOMPILING)) AND
|
||||
NOT DEFINED MBEDTLS_INCLUDE_DIR AND
|
||||
NOT DEFINED MBEDCRYPTO_LIBRARY)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_check_modules(MBEDTLS "mbedcrypto")
|
||||
endif()
|
||||
|
||||
if(MBEDTLS_FOUND)
|
||||
string(REPLACE ";" " " MBEDTLS_CFLAGS "${MBEDTLS_CFLAGS}")
|
||||
message(STATUS "Found MbedTLS (via pkg-config): ${MBEDTLS_INCLUDE_DIRS} (found version \"${MBEDTLS_VERSION}\")")
|
||||
else()
|
||||
find_path(MBEDTLS_INCLUDE_DIR NAMES "mbedtls/version.h")
|
||||
find_library(MBEDCRYPTO_LIBRARY NAMES "mbedcrypto" "libmbedcrypto")
|
||||
|
||||
if(MBEDTLS_INCLUDE_DIR)
|
||||
if(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h") # 3.x
|
||||
set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h")
|
||||
elseif(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") # 2.x
|
||||
set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h")
|
||||
else()
|
||||
unset(_version_header)
|
||||
endif()
|
||||
if(_version_header)
|
||||
set(_version_regex "#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"([0-9.]+)\"")
|
||||
file(STRINGS "${_version_header}" _version_str REGEX "${_version_regex}")
|
||||
string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
|
||||
set(MBEDTLS_VERSION "${_version_str}")
|
||||
unset(_version_regex)
|
||||
unset(_version_str)
|
||||
unset(_version_header)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MbedTLS
|
||||
REQUIRED_VARS
|
||||
MBEDTLS_INCLUDE_DIR
|
||||
MBEDCRYPTO_LIBRARY
|
||||
VERSION_VAR
|
||||
MBEDTLS_VERSION
|
||||
)
|
||||
|
||||
if(MBEDTLS_FOUND)
|
||||
set(MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR})
|
||||
set(MBEDTLS_LIBRARIES ${MBEDCRYPTO_LIBRARY})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDCRYPTO_LIBRARY)
|
||||
endif()
|
||||
59
vendor/libssh2/cmake/FindWolfSSL.cmake
vendored
Normal file
59
vendor/libssh2/cmake/FindWolfSSL.cmake
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
###########################################################################
|
||||
# Find the wolfssl library
|
||||
#
|
||||
# Input variables:
|
||||
#
|
||||
# WOLFSSL_INCLUDE_DIR The wolfssl include directory
|
||||
# WOLFSSL_LIBRARY Path to wolfssl library
|
||||
#
|
||||
# Result variables:
|
||||
#
|
||||
# WOLFSSL_FOUND System has wolfssl
|
||||
# WOLFSSL_INCLUDE_DIRS The wolfssl include directories
|
||||
# WOLFSSL_LIBRARIES The wolfssl library names
|
||||
# WOLFSSL_LIBRARY_DIRS The wolfssl library directories
|
||||
# WOLFSSL_CFLAGS Required compiler flags
|
||||
# WOLFSSL_VERSION Version of wolfssl
|
||||
|
||||
if((UNIX OR VCPKG_TOOLCHAIN OR (MINGW AND NOT CMAKE_CROSSCOMPILING)) AND
|
||||
NOT DEFINED WOLFSSL_INCLUDE_DIR AND
|
||||
NOT DEFINED WOLFSSL_LIBRARY)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_check_modules(WOLFSSL "wolfssl")
|
||||
endif()
|
||||
|
||||
if(WOLFSSL_FOUND)
|
||||
string(REPLACE ";" " " WOLFSSL_CFLAGS "${WOLFSSL_CFLAGS}")
|
||||
message(STATUS "Found WolfSSL (via pkg-config): ${WOLFSSL_INCLUDE_DIRS} (found version \"${WOLFSSL_VERSION}\")")
|
||||
else()
|
||||
find_path(WOLFSSL_INCLUDE_DIR NAMES "wolfssl/options.h")
|
||||
find_library(WOLFSSL_LIBRARY NAMES "wolfssl")
|
||||
|
||||
if(WOLFSSL_INCLUDE_DIR AND EXISTS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h")
|
||||
set(_version_regex "#[\t ]*define[\t ]+LIBWOLFSSL_VERSION_STRING[\t ]+\"([^\"]*)\"")
|
||||
file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h" _version_str REGEX "${_version_regex}")
|
||||
string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
|
||||
set(WOLFSSL_VERSION "${_version_str}")
|
||||
unset(_version_regex)
|
||||
unset(_version_str)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(WolfSSL
|
||||
REQUIRED_VARS
|
||||
WOLFSSL_INCLUDE_DIR
|
||||
WOLFSSL_LIBRARY
|
||||
VERSION_VAR
|
||||
WOLFSSL_VERSION
|
||||
)
|
||||
|
||||
if(WOLFSSL_FOUND)
|
||||
set(WOLFSSL_INCLUDE_DIRS ${WOLFSSL_INCLUDE_DIR})
|
||||
set(WOLFSSL_LIBRARIES ${WOLFSSL_LIBRARY})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY)
|
||||
endif()
|
||||
247
vendor/libssh2/cmake/PickyWarnings.cmake
vendored
Normal file
247
vendor/libssh2/cmake/PickyWarnings.cmake
vendored
Normal file
@@ -0,0 +1,247 @@
|
||||
# Copyright (C) Viktor Szakats
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
include(CheckCCompilerFlag)
|
||||
|
||||
option(ENABLE_WERROR "Turn compiler warnings into errors" OFF)
|
||||
option(PICKY_COMPILER "Enable picky compiler options" ON)
|
||||
|
||||
if(ENABLE_WERROR)
|
||||
if(MSVC)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
||||
else() # llvm/clang and gcc style options
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# Use the highest warning level for Visual Studio.
|
||||
if(PICKY_COMPILER)
|
||||
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()
|
||||
endif()
|
||||
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
|
||||
# https://clang.llvm.org/docs/DiagnosticsReference.html
|
||||
# https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
||||
|
||||
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()
|
||||
|
||||
if(PICKY_COMPILER)
|
||||
|
||||
# WPICKY_ENABLE = Options we want to enable as-is.
|
||||
# WPICKY_DETECT = Options we want to test first and enable if available.
|
||||
|
||||
# Prefer the -Wextra alias with clang.
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(WPICKY_ENABLE "-Wextra")
|
||||
else()
|
||||
set(WPICKY_ENABLE "-W")
|
||||
endif()
|
||||
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-pedantic
|
||||
)
|
||||
|
||||
if(ENABLE_WERROR)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-pedantic-errors
|
||||
)
|
||||
endif()
|
||||
|
||||
# ----------------------------------
|
||||
# Add new options here, if in doubt:
|
||||
# ----------------------------------
|
||||
set(WPICKY_DETECT
|
||||
)
|
||||
|
||||
# Assume these options always exist with both clang and gcc.
|
||||
# Require clang 3.0 / gcc 2.95 or later.
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wbad-function-cast # clang 2.7 gcc 2.95
|
||||
-Wconversion # clang 2.7 gcc 2.95
|
||||
-Winline # clang 1.0 gcc 1.0
|
||||
-Wmissing-declarations # clang 1.0 gcc 2.7
|
||||
-Wmissing-prototypes # clang 1.0 gcc 1.0
|
||||
-Wnested-externs # clang 1.0 gcc 2.7
|
||||
-Wno-long-long # clang 1.0 gcc 2.95
|
||||
-Wno-multichar # clang 1.0 gcc 2.95
|
||||
-Wpointer-arith # clang 1.0 gcc 1.4
|
||||
-Wshadow # clang 1.0 gcc 2.95
|
||||
-Wsign-compare # clang 1.0 gcc 2.95
|
||||
-Wundef # clang 1.0 gcc 2.95
|
||||
-Wunused # clang 1.1 gcc 2.95
|
||||
-Wwrite-strings # clang 1.0 gcc 1.4
|
||||
)
|
||||
|
||||
# Always enable with clang, version dependent with gcc
|
||||
set(WPICKY_COMMON_OLD
|
||||
-Waddress # clang 2.7 gcc 4.3
|
||||
-Wattributes # clang 2.7 gcc 4.1
|
||||
-Wcast-align # clang 1.0 gcc 4.2
|
||||
-Wdeclaration-after-statement # clang 1.0 gcc 3.4
|
||||
-Wdiv-by-zero # clang 2.7 gcc 4.1
|
||||
-Wempty-body # clang 2.7 gcc 4.3
|
||||
-Wendif-labels # clang 1.0 gcc 3.3
|
||||
-Wfloat-equal # clang 1.0 gcc 2.96 (3.0)
|
||||
-Wformat-security # clang 2.7 gcc 4.1
|
||||
-Wignored-qualifiers # clang 2.8 gcc 4.3
|
||||
-Wmissing-field-initializers # clang 2.7 gcc 4.1
|
||||
-Wmissing-noreturn # clang 2.7 gcc 4.1
|
||||
-Wno-format-nonliteral # clang 1.0 gcc 2.96 (3.0)
|
||||
-Wno-system-headers # clang 1.0 gcc 3.0
|
||||
# -Wpadded # clang 2.9 gcc 4.1 # Not used because we cannot change public structs
|
||||
-Wold-style-definition # clang 2.7 gcc 3.4
|
||||
-Wredundant-decls # clang 2.7 gcc 4.1
|
||||
-Wsign-conversion # clang 2.9 gcc 4.3
|
||||
-Wno-error=sign-conversion # FIXME
|
||||
-Wstrict-prototypes # clang 1.0 gcc 3.3
|
||||
# -Wswitch-enum # clang 2.7 gcc 4.1 # Not used because this basically disallows default case
|
||||
-Wtype-limits # clang 2.7 gcc 4.3
|
||||
-Wunreachable-code # clang 2.7 gcc 4.1
|
||||
-Wunused-macros # clang 2.7 gcc 4.1
|
||||
-Wunused-parameter # clang 2.7 gcc 4.1
|
||||
-Wvla # clang 2.8 gcc 4.3
|
||||
)
|
||||
|
||||
set(WPICKY_COMMON
|
||||
-Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3
|
||||
-Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0
|
||||
-Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0
|
||||
-Wunused-const-variable # clang 3.4 gcc 6.0 appleclang 5.1
|
||||
)
|
||||
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
list(APPEND WPICKY_ENABLE
|
||||
${WPICKY_COMMON_OLD}
|
||||
-Wshift-sign-overflow # clang 2.9
|
||||
-Wshorten-64-to-32 # clang 1.0
|
||||
-Wlanguage-extension-token # clang 3.0
|
||||
-Wformat=2 # clang 3.0 gcc 4.8
|
||||
)
|
||||
# Enable based on compiler version
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.3))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
${WPICKY_COMMON}
|
||||
-Wunreachable-code-break # clang 3.5 appleclang 6.0
|
||||
-Wheader-guard # clang 3.4 appleclang 5.1
|
||||
-Wsometimes-uninitialized # clang 3.2 appleclang 4.6
|
||||
)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.9) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.3))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wcomma # clang 3.9 appleclang 8.3
|
||||
-Wmissing-variable-declarations # clang 3.2 appleclang 4.6
|
||||
)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.3))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wassign-enum # clang 7.0 appleclang 10.3
|
||||
-Wextra-semi-stmt # clang 7.0 appleclang 10.3
|
||||
)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.4))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wimplicit-fallthrough # clang 4.0 gcc 7.0 appleclang 12.4 # we have silencing markup for clang 10.0 and above only
|
||||
)
|
||||
endif()
|
||||
else() # gcc
|
||||
list(APPEND WPICKY_DETECT
|
||||
${WPICKY_COMMON}
|
||||
)
|
||||
# Enable based on compiler version
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
${WPICKY_COMMON_OLD}
|
||||
-Wclobbered # gcc 4.3
|
||||
-Wmissing-parameter-type # gcc 4.3
|
||||
-Wold-style-declaration # gcc 4.3
|
||||
-Wstrict-aliasing=3 # gcc 4.0
|
||||
-Wtrampolines # gcc 4.3
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5 AND MINGW)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wno-pedantic-ms-format # gcc 4.5 (mingw-only)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wformat=2 # clang 3.0 gcc 4.8
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Warray-bounds=2 -ftree-vrp # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wduplicated-cond # gcc 6.0
|
||||
-Wnull-dereference # clang 3.0 gcc 6.0 (clang default)
|
||||
-fdelete-null-pointer-checks
|
||||
-Wshift-negative-value # clang 3.7 gcc 6.0 (clang default)
|
||||
-Wshift-overflow=2 # clang 3.0 gcc 6.0 (clang default: -Wshift-overflow)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Walloc-zero # gcc 7.0
|
||||
-Wduplicated-branches # gcc 7.0
|
||||
-Wformat-overflow=2 # gcc 7.0
|
||||
-Wformat-truncation=2 # gcc 7.0
|
||||
-Wimplicit-fallthrough # clang 4.0 gcc 7.0
|
||||
-Wrestrict # gcc 7.0
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Warith-conversion # gcc 10.0
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
|
||||
unset(WPICKY)
|
||||
|
||||
foreach(_CCOPT IN LISTS WPICKY_ENABLE)
|
||||
set(WPICKY "${WPICKY} ${_CCOPT}")
|
||||
endforeach()
|
||||
|
||||
foreach(_CCOPT IN LISTS WPICKY_DETECT)
|
||||
# surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
|
||||
# test result in.
|
||||
string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
|
||||
# GCC only warns about unknown -Wno- options if there are also other diagnostic messages,
|
||||
# so test for the positive form instead
|
||||
string(REPLACE "-Wno-" "-W" _CCOPT_ON "${_CCOPT}")
|
||||
check_c_compiler_flag(${_CCOPT_ON} ${_optvarname})
|
||||
if(${_optvarname})
|
||||
set(WPICKY "${WPICKY} ${_CCOPT}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
message(STATUS "Picky compiler options:${WPICKY}")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WPICKY}")
|
||||
endif()
|
||||
endif()
|
||||
31
vendor/libssh2/cmake/libssh2-config.cmake.in
vendored
Normal file
31
vendor/libssh2/cmake/libssh2-config.cmake.in
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
if("@CRYPTO_BACKEND@" STREQUAL "OpenSSL")
|
||||
find_dependency(OpenSSL)
|
||||
elseif("@CRYPTO_BACKEND@" STREQUAL "wolfSSL")
|
||||
find_dependency(WolfSSL)
|
||||
elseif("@CRYPTO_BACKEND@" STREQUAL "Libgcrypt")
|
||||
find_dependency(Libgcrypt)
|
||||
elseif("@CRYPTO_BACKEND@" STREQUAL "mbedTLS")
|
||||
find_dependency(MbedTLS)
|
||||
endif()
|
||||
|
||||
if(@ZLIB_FOUND@)
|
||||
find_dependency(ZLIB)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
|
||||
|
||||
# Alias for either shared or static library
|
||||
if(NOT TARGET @PROJECT_NAME@::@LIB_NAME@)
|
||||
add_library(@PROJECT_NAME@::@LIB_NAME@ ALIAS @PROJECT_NAME@::@LIB_SELECTED@)
|
||||
endif()
|
||||
|
||||
# Compatibility alias
|
||||
if(NOT TARGET Libssh2::@LIB_NAME@)
|
||||
add_library(Libssh2::@LIB_NAME@ ALIAS @PROJECT_NAME@::@LIB_SELECTED@)
|
||||
endif()
|
||||
662
vendor/libssh2/config.rpath
vendored
Executable file
662
vendor/libssh2/config.rpath
vendored
Executable file
@@ -0,0 +1,662 @@
|
||||
#! /bin/sh
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2006 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# The first argument passed to this file is the canonical host specification,
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||
# should be set by the caller.
|
||||
#
|
||||
# The set of defined variables is at the end of this script.
|
||||
|
||||
# Known limitations:
|
||||
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
||||
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
||||
# known workaround is to choose shorter directory names for the build
|
||||
# directory and/or the installation directory.
|
||||
#
|
||||
# SPDX-License-Identifier: FSFULLR
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except MSVC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shrext=.so
|
||||
|
||||
host="$1"
|
||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
# Code taken from libtool.m4's _LT_CC_BASENAME.
|
||||
|
||||
for cc_temp in $CC""; do
|
||||
case $cc_temp in
|
||||
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
||||
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
||||
\-*) ;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
||||
|
||||
wl=
|
||||
if test "$GCC" = yes; then
|
||||
wl='-Wl,'
|
||||
else
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
darwin*)
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
mingw* | pw32* | os2*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
linux*)
|
||||
case $cc_basename in
|
||||
icc* | ecc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
pgcc | pgf77 | pgf90)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
ccc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
como)
|
||||
wl='-lopt='
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
*Sun\ C*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sunos4*)
|
||||
wl='-Qoption ld '
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
;;
|
||||
unicos*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
uts4*)
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
|
||||
|
||||
hardcode_libdir_flag_spec=
|
||||
hardcode_libdir_separator=
|
||||
hardcode_direct=no
|
||||
hardcode_minus_L=no
|
||||
|
||||
case "$host_os" in
|
||||
cygwin* | mingw* | pw32*)
|
||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
if test "$GCC" != yes; then
|
||||
with_gnu_ld=no
|
||||
fi
|
||||
;;
|
||||
interix*)
|
||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
||||
with_gnu_ld=yes
|
||||
;;
|
||||
openbsd*)
|
||||
with_gnu_ld=no
|
||||
;;
|
||||
esac
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
# Set some defaults for GNU ld with shared library support. These
|
||||
# are reset later if shared libraries are not supported. Putting them
|
||||
# here allows them to be overridden if necessary.
|
||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||
# option of GNU ld is called -rpath, not --rpath.
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
case "$host_os" in
|
||||
aix3* | aix4* | aix5*)
|
||||
# On AIX/PPC, the GNU linker is very broken
|
||||
if test "$host_cpu" != ia64; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||
# to version 4, is to share data among multiple programs linked
|
||||
# with the same dynamic library. Since this doesn't match the
|
||||
# behavior of shared libraries on other platforms, we cannot use
|
||||
# them.
|
||||
ld_shlibs=no
|
||||
;;
|
||||
beos*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
interix3*)
|
||||
hardcode_direct=no
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
linux*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
netbsd*)
|
||||
;;
|
||||
solaris*)
|
||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
||||
ld_shlibs=no
|
||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
|
||||
case `$LD -v 2>&1` in
|
||||
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$ld_shlibs" = no; then
|
||||
hardcode_libdir_flag_spec=
|
||||
fi
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||
# are no directories specified by -L.
|
||||
hardcode_minus_L=yes
|
||||
if test "$GCC" = yes; then
|
||||
# Neither direct hardcoding nor static linking is supported with a
|
||||
# broken collect2.
|
||||
hardcode_direct=unsupported
|
||||
fi
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
if test "$host_cpu" = ia64; then
|
||||
# On IA64, the linker does run time linking by default, so we don't
|
||||
# have to do anything special.
|
||||
aix_use_runtimelinking=no
|
||||
else
|
||||
aix_use_runtimelinking=no
|
||||
# Test if we are trying to use run time linking or normal
|
||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||
# need to do runtime linking.
|
||||
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
||||
for ld_flag in $LDFLAGS; do
|
||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||
aix_use_runtimelinking=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
if test "$GCC" = yes; then
|
||||
case $host_os in aix4.[012]|aix4.[012].*)
|
||||
collect2name=`${CC} -print-prog-name=collect2`
|
||||
if test -f "$collect2name" && \
|
||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||
then
|
||||
# We have reworked collect2
|
||||
hardcode_direct=yes
|
||||
else
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
||||
echo 'int main () { return 0; }' > conftest.c
|
||||
${CC} ${LDFLAGS} conftest.c -o conftest
|
||||
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
fi
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath="/usr/lib:/lib"
|
||||
fi
|
||||
rm -f conftest.c conftest
|
||||
# End _LT_AC_SYS_LIBPATH_AIX.
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
else
|
||||
if test "$host_cpu" = ia64; then
|
||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||
else
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# see comment about different semantics on the GNU ld section
|
||||
ld_shlibs=no
|
||||
;;
|
||||
bsdi[45]*)
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec=' '
|
||||
libext=lib
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
hardcode_direct=no
|
||||
if test "$GCC" = yes ; then
|
||||
:
|
||||
else
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
dgux*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
freebsd1*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
freebsd2.2*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
freebsd* | kfreebsd*-gnu | dragonfly*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
hpux9*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
hpux10*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
fi
|
||||
;;
|
||||
hpux11*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
case $host_cpu in
|
||||
hppa*64*|ia64*)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
*)
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
netbsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
newsos6)
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
openbsd*)
|
||||
hardcode_direct=yes
|
||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
else
|
||||
case "$host_os" in
|
||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
os2*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
osf3*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
osf4* | osf5*)
|
||||
if test "$GCC" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
else
|
||||
# Both cc and cxx compiler support -rpath directly
|
||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||
fi
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
solaris*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
sysv4)
|
||||
case $host_vendor in
|
||||
sni)
|
||||
hardcode_direct=yes # is this really true???
|
||||
;;
|
||||
siemens)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
motorola)
|
||||
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sysv4.3*)
|
||||
;;
|
||||
sysv4*MP*)
|
||||
if test -d /usr/nec; then
|
||||
ld_shlibs=yes
|
||||
fi
|
||||
;;
|
||||
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6*)
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
||||
hardcode_libdir_separator=':'
|
||||
;;
|
||||
uts4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Check dynamic linker characteristics
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
|
||||
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
||||
# only about the one the linker finds when passed -lNAME. This is the last
|
||||
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
||||
# linker has special search rules.
|
||||
library_names_spec= # the last element of library_names_spec in libtool.m4
|
||||
libname_spec='lib$name'
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
amigaos*)
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
beos*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
bsdi[45]*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
shrext=.dll
|
||||
library_names_spec='$libname.dll.a $libname.lib'
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
shrext=.dylib
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
dgux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
freebsd1*)
|
||||
;;
|
||||
kfreebsd*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
case "$host_os" in
|
||||
freebsd[123]*)
|
||||
library_names_spec='$libname$shrext$versuffix' ;;
|
||||
*)
|
||||
library_names_spec='$libname$shrext' ;;
|
||||
esac
|
||||
;;
|
||||
gnu*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
case $host_cpu in
|
||||
ia64*)
|
||||
shrext=.so
|
||||
;;
|
||||
hppa*64*)
|
||||
shrext=.sl
|
||||
;;
|
||||
*)
|
||||
shrext=.sl
|
||||
;;
|
||||
esac
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
interix3*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
case "$host_os" in
|
||||
irix5* | nonstopux*)
|
||||
libsuff= shlibsuff=
|
||||
;;
|
||||
*)
|
||||
case $LD in
|
||||
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
||||
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
||||
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
||||
*) libsuff= shlibsuff= ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*oldld* | linux*aout* | linux*coff*)
|
||||
;;
|
||||
linux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
knetbsd*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
netbsd*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
newsos6)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
nto-qnx*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
openbsd*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
os2*)
|
||||
libname_spec='$name'
|
||||
shrext=.dll
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
solaris*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sunos4*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
sysv4 | sysv4.3*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
uts4*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
esac
|
||||
|
||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
||||
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
|
||||
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||
|
||||
# How to pass a linker flag through the compiler.
|
||||
wl="$escaped_wl"
|
||||
|
||||
# Static library suffix (normally "a").
|
||||
libext="$libext"
|
||||
|
||||
# Shared library suffix (normally "so").
|
||||
shlibext="$shlibext"
|
||||
|
||||
# Format of library name prefix.
|
||||
libname_spec="$escaped_libname_spec"
|
||||
|
||||
# Library names that the linker finds when passed -lNAME.
|
||||
library_names_spec="$escaped_library_names_spec"
|
||||
|
||||
# Flag to hardcode \$libdir into a binary during linking.
|
||||
# This must work even if \$libdir does not exist.
|
||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||
|
||||
# Whether we need a single -rpath flag with a separated argument.
|
||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||
|
||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_direct="$hardcode_direct"
|
||||
|
||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_minus_L="$hardcode_minus_L"
|
||||
|
||||
EOF
|
||||
453
vendor/libssh2/configure.ac
vendored
Normal file
453
vendor/libssh2/configure.ac
vendored
Normal file
@@ -0,0 +1,453 @@
|
||||
# Copyright (C) The libssh2 project and its contributors.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
||||
# AC_PREREQ(2.59)
|
||||
AC_INIT([libssh2],[-],[libssh2-devel@lists.haxx.se])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_SRCDIR([src])
|
||||
AC_CONFIG_HEADERS([src/libssh2_config.h])
|
||||
AC_REQUIRE_AUX_FILE([tap-driver.sh])
|
||||
AM_MAINTAINER_MODE
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
dnl SED is needed by some of the tools
|
||||
AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
|
||||
$PATH:/usr/bin:/usr/local/bin)
|
||||
AC_SUBST(SED)
|
||||
|
||||
if test "x$SED" = "xsed-was-not-found-by-configure"; then
|
||||
AC_MSG_WARN([sed was not found, this may ruin your chances to build fine])
|
||||
fi
|
||||
|
||||
dnl figure out the libssh2 version
|
||||
LIBSSH2_VERSION=`$SED -ne 's/^#define LIBSSH2_VERSION *"\(.*\)"/\1/p' ${srcdir}/include/libssh2.h`
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_MSG_CHECKING([libssh2 version])
|
||||
AC_MSG_RESULT($LIBSSH2_VERSION)
|
||||
|
||||
AC_SUBST(LIBSSH2_VERSION)
|
||||
|
||||
# Check for the OS.
|
||||
# Daniel's note: this should not be necessary and we need to work to
|
||||
# get this removed.
|
||||
AC_CANONICAL_HOST
|
||||
case "$host" in
|
||||
*-mingw*)
|
||||
LIBS="$LIBS -lws2_32"
|
||||
;;
|
||||
*darwin*)
|
||||
;;
|
||||
*hpux*)
|
||||
;;
|
||||
*osf*)
|
||||
CFLAGS="$CFLAGS -D_POSIX_PII_SOCKET"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Our configure and build reentrant settings
|
||||
CURL_CONFIGURE_REENTRANT
|
||||
|
||||
# Some systems (Solaris?) have socket() in -lsocket.
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
|
||||
# Solaris has inet_addr() in -lnsl.
|
||||
AC_SEARCH_LIBS(inet_addr, nsl)
|
||||
|
||||
AC_SUBST(LIBS)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PATH_PROGS(SSHD, [sshd], [],
|
||||
[$PATH$PATH_SEPARATOR/usr/libexec$PATH_SEPARATOR]dnl
|
||||
[/usr/sbin$PATH_SEPARATOR/usr/etc$PATH_SEPARATOR/etc])
|
||||
AM_CONDITIONAL(SSHD, test -n "$SSHD")
|
||||
m4_ifdef([LT_INIT],
|
||||
[dnl
|
||||
LT_INIT([win32-dll])
|
||||
],[dnl
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
AC_PROG_LIBTOOL
|
||||
])
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
LT_LANG([Windows Resource])
|
||||
|
||||
dnl check for windows.h
|
||||
case $host in
|
||||
*-*-msys | *-*-cygwin* | *-*-cegcc*)
|
||||
# These are POSIX-like systems using BSD-like sockets API.
|
||||
;;
|
||||
*)
|
||||
AC_CHECK_HEADERS([windows.h], [have_windows_h=yes], [have_windows_h=no])
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl check for how to do large files
|
||||
AC_SYS_LARGEFILE
|
||||
|
||||
# Crypto backends
|
||||
|
||||
found_crypto=none
|
||||
found_crypto_str=""
|
||||
crypto_errors=""
|
||||
|
||||
m4_set_add([crypto_backends], [openssl])
|
||||
m4_set_add([crypto_backends], [libgcrypt])
|
||||
m4_set_add([crypto_backends], [mbedtls])
|
||||
m4_set_add([crypto_backends], [wincng])
|
||||
m4_set_add([crypto_backends], [wolfssl])
|
||||
|
||||
AC_ARG_WITH([crypto],
|
||||
AS_HELP_STRING([--with-crypto=auto|]m4_set_contents([crypto_backends], [|]),
|
||||
[Select crypto backend (default: auto)]),
|
||||
use_crypto=$withval,
|
||||
use_crypto=auto
|
||||
)
|
||||
|
||||
case "${use_crypto}" in
|
||||
auto|m4_set_contents([crypto_backends], [|]))
|
||||
m4_set_map([crypto_backends], [LIBSSH2_CHECK_CRYPTO])
|
||||
;;
|
||||
yes|"")
|
||||
crypto_errors="No crypto backend specified."
|
||||
;;
|
||||
*)
|
||||
crypto_errors="Unknown crypto backend '${use_crypto}' specified."
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$found_crypto" = "none"; then
|
||||
crypto_errors="${crypto_errors}
|
||||
Specify --with-crypto=\$backend and/or the necessary library search prefix.
|
||||
|
||||
Known crypto backends: auto, m4_set_contents([crypto_backends], [, ])"
|
||||
AS_MESSAGE([ERROR: ${crypto_errors}])
|
||||
else
|
||||
test "$found_crypto_str" = "" && found_crypto_str="$found_crypto"
|
||||
fi
|
||||
|
||||
# ECDSA support with WinCNG
|
||||
AC_ARG_ENABLE(ecdsa-wincng,
|
||||
AS_HELP_STRING([--enable-ecdsa-wincng],
|
||||
WinCNG ECDSA support (requires Windows 10 or later)),
|
||||
[wincng_ecdsa=$enableval])
|
||||
if test "$wincng_ecdsa" = yes; then
|
||||
AC_DEFINE(LIBSSH2_ECDSA_WINCNG, 1, [Enable WinCNG ECDSA support])
|
||||
else
|
||||
wincng_ecdsa=no
|
||||
fi
|
||||
|
||||
# libz
|
||||
|
||||
AC_ARG_WITH([libz],
|
||||
AS_HELP_STRING([--with-libz],[Use libz for compression]),
|
||||
use_libz=$withval,
|
||||
use_libz=auto)
|
||||
|
||||
found_libz=no
|
||||
libz_errors=""
|
||||
|
||||
if test "$use_libz" != no; then
|
||||
AC_LIB_HAVE_LINKFLAGS([z], [], [#include <zlib.h>])
|
||||
if test "$ac_cv_libz" != yes; then
|
||||
if test "$use_libz" = auto; then
|
||||
AC_MSG_NOTICE([Cannot find libz, disabling compression])
|
||||
found_libz="disabled; no libz found"
|
||||
else
|
||||
libz_errors="No libz found.
|
||||
Try --with-libz-prefix=PATH if you know that you have it."
|
||||
AS_MESSAGE([ERROR: $libz_errors])
|
||||
fi
|
||||
else
|
||||
AC_DEFINE(LIBSSH2_HAVE_ZLIB, 1, [Compile in zlib support])
|
||||
LIBSSH2_PC_REQUIRES_PRIVATE="$LIBSSH2_PC_REQUIRES_PRIVATE${LIBSSH2_PC_REQUIRES_PRIVATE:+,}zlib"
|
||||
found_libz="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBSSH2_PC_REQUIRES_PRIVATE)
|
||||
|
||||
#
|
||||
# Optional Settings
|
||||
#
|
||||
AC_ARG_ENABLE(clear-memory,
|
||||
AS_HELP_STRING([--disable-clear-memory],[Disable clearing of memory before being freed]),
|
||||
[CLEAR_MEMORY=$enableval])
|
||||
if test "$CLEAR_MEMORY" = "no"; then
|
||||
AC_DEFINE(LIBSSH2_NO_CLEAR_MEMORY, 1, [Disable clearing of memory before being freed])
|
||||
enable_clear_memory=no
|
||||
else
|
||||
enable_clear_memory=yes
|
||||
fi
|
||||
|
||||
LIBSSH2_CFLAG_EXTRAS=""
|
||||
|
||||
LIBSSH2_CHECK_OPTION_WERROR
|
||||
|
||||
dnl ************************************************************
|
||||
dnl option to switch on compiler debug options
|
||||
dnl
|
||||
AC_MSG_CHECKING([whether to enable pedantic and debug compiler options])
|
||||
AC_ARG_ENABLE(debug,
|
||||
AS_HELP_STRING([--enable-debug],[Enable pedantic and debug options])
|
||||
AS_HELP_STRING([--disable-debug],[Disable debug options]),
|
||||
[ case "$enable_debug" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
CPPFLAGS="$CPPFLAGS -DNDEBUG"
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
enable_debug=yes
|
||||
CPPFLAGS="$CPPFLAGS -DLIBSSH2DEBUG"
|
||||
CFLAGS="$CFLAGS -g"
|
||||
|
||||
dnl set compiler "debug" options to become more picky, and remove
|
||||
dnl optimize options from CFLAGS
|
||||
CURL_CC_DEBUG_OPTS
|
||||
;;
|
||||
esac
|
||||
],
|
||||
enable_debug=no
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
AC_SUBST(LIBSSH2_CFLAG_EXTRAS)
|
||||
|
||||
dnl ************************************************************
|
||||
dnl Enable hiding of internal symbols in library to reduce its size and
|
||||
dnl speed dynamic linking of applications. This currently is only supported
|
||||
dnl on gcc >= 4.0 and SunPro C.
|
||||
dnl
|
||||
AC_MSG_CHECKING([whether to enable hidden symbols in the library])
|
||||
AC_ARG_ENABLE(hidden-symbols,
|
||||
AS_HELP_STRING([--enable-hidden-symbols],[Hide internal symbols in library])
|
||||
AS_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibility in library (default)]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_CHECKING([whether $CC supports it])
|
||||
if test "$GCC" = yes ; then
|
||||
if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(LIBSSH2_API, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
|
||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
else
|
||||
dnl Test for SunPro cc
|
||||
if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(LIBSSH2_API, [__global], [to make a symbol visible])
|
||||
CFLAGS="$CFLAGS -xldscope=hidden"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
dnl Build without deprecated APIs?
|
||||
AC_ARG_ENABLE([deprecated],
|
||||
[AS_HELP_STRING([--disable-deprecated], [Build without deprecated APIs @<:@default=no@:>@])],
|
||||
[case "$enableval" in
|
||||
*)
|
||||
with_deprecated="no"
|
||||
CPPFLAGS="$CPPFLAGS -DLIBSSH2_NO_DEPRECATED"
|
||||
;;
|
||||
esac],
|
||||
[with_deprecated="yes"])
|
||||
|
||||
# Run Docker tests?
|
||||
AC_ARG_ENABLE([docker-tests],
|
||||
[AS_HELP_STRING([--disable-docker-tests],
|
||||
[Do not run tests requiring Docker])],
|
||||
[run_docker_tests=no], [run_docker_tests=yes])
|
||||
AM_CONDITIONAL([RUN_DOCKER_TESTS], [test "x$run_docker_tests" != "xno"])
|
||||
|
||||
# Run sshd tests?
|
||||
AC_ARG_ENABLE([sshd-tests],
|
||||
[AS_HELP_STRING([--disable-sshd-tests],
|
||||
[Do not run tests requiring sshd])],
|
||||
[run_sshd_tests=no], [run_sshd_tests=yes])
|
||||
AM_CONDITIONAL([RUN_SSHD_TESTS], [test "x$run_sshd_tests" != "xno"])
|
||||
|
||||
# Build example applications?
|
||||
AC_MSG_CHECKING([whether to build example applications])
|
||||
AC_ARG_ENABLE([examples-build],
|
||||
AS_HELP_STRING([--enable-examples-build], [Build example applications (this is the default)])
|
||||
AS_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"])
|
||||
|
||||
|
||||
# Build OSS fuzzing targets?
|
||||
AC_ARG_ENABLE([ossfuzzers],
|
||||
[AS_HELP_STRING([--enable-ossfuzzers],
|
||||
[Whether to generate the fuzzers for OSS-Fuzz])],
|
||||
[have_ossfuzzers=yes], [have_ossfuzzers=no])
|
||||
AM_CONDITIONAL([USE_OSSFUZZERS], [test "x$have_ossfuzzers" = "xyes"])
|
||||
|
||||
|
||||
# Set the correct flags for the given fuzzing engine.
|
||||
AC_SUBST([LIB_FUZZING_ENGINE])
|
||||
AM_CONDITIONAL([USE_OSSFUZZ_FLAG], [test "x$LIB_FUZZING_ENGINE" = "x-fsanitize=fuzzer"])
|
||||
AM_CONDITIONAL([USE_OSSFUZZ_STATIC], [test -f "$LIB_FUZZING_ENGINE"])
|
||||
|
||||
|
||||
# Checks for header files.
|
||||
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h unistd.h sys/uio.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([sys/un.h])
|
||||
|
||||
case $host in
|
||||
*darwin*|*interix*)
|
||||
dnl poll() does not work on these platforms
|
||||
dnl Interix: "does provide poll(), but the implementing developer must
|
||||
dnl have been in a bad mood, because poll() only works on the /proc
|
||||
dnl filesystem here"
|
||||
dnl macOS poll() has funny behaviors, like:
|
||||
dnl not being able to do poll on no fildescriptors (10.3?)
|
||||
dnl not being able to poll on some files (like anything in /dev)
|
||||
dnl not having reliable timeout support
|
||||
dnl inconsistent return of POLLHUP where other implementations give POLLIN
|
||||
AC_MSG_NOTICE([poll use is disabled on this platform])
|
||||
;;
|
||||
*)
|
||||
AC_CHECK_FUNCS(poll)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_CHECK_FUNCS(gettimeofday select strtoll explicit_bzero explicit_memset memset_s snprintf)
|
||||
|
||||
dnl Check for select() into ws2_32 for Msys/Mingw
|
||||
if test "$ac_cv_func_select" != "yes"; then
|
||||
AC_MSG_CHECKING([for select in ws2_32])
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifdef HAVE_WINDOWS_H
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
]], [[
|
||||
select(0,(fd_set *)NULL,(fd_set *)NULL,(fd_set *)NULL,(struct timeval *)NULL);
|
||||
]])],[
|
||||
AC_MSG_RESULT([yes])
|
||||
HAVE_SELECT="1"
|
||||
AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
|
||||
[Define to 1 if you have the select function.])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
fi
|
||||
|
||||
AC_FUNC_ALLOCA
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
|
||||
CURL_CHECK_NONBLOCKING_SOCKET
|
||||
|
||||
missing_required_deps=0
|
||||
|
||||
if test "${libz_errors}" != ""; then
|
||||
AS_MESSAGE([ERROR: ${libz_errors}])
|
||||
missing_required_deps=1
|
||||
fi
|
||||
|
||||
if test "$found_crypto" = "none"; then
|
||||
AS_MESSAGE([ERROR: ${crypto_errors}])
|
||||
missing_required_deps=1
|
||||
fi
|
||||
|
||||
if test $missing_required_deps = 1; then
|
||||
AC_MSG_ERROR([Required dependencies are missing.])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([HAVE_WINDRES],
|
||||
[test "x$have_windows_h" = "xyes" && test "x${enable_shared}" = "xyes" && test -n "${RC}"])
|
||||
|
||||
AM_CONDITIONAL([HAVE_LIB_STATIC], [test "x$enable_static" != "xno"])
|
||||
|
||||
# Configure parameters
|
||||
|
||||
# Append crypto lib
|
||||
if test "$found_crypto" = "openssl"; then
|
||||
LIBS="${LIBS} ${LTLIBSSL}"
|
||||
elif test "$found_crypto" = "wolfssl"; then
|
||||
LIBS="${LIBS} ${LTLIBWOLFSSL}"
|
||||
elif test "$found_crypto" = "libgcrypt"; then
|
||||
LIBS="${LIBS} ${LTLIBGCRYPT}"
|
||||
elif test "$found_crypto" = "wincng"; then
|
||||
LIBS="${LIBS} ${LTLIBBCRYPT}"
|
||||
elif test "$found_crypto" = "mbedtls"; then
|
||||
LIBS="${LIBS} ${LTLIBMBEDCRYPTO}"
|
||||
fi
|
||||
|
||||
LIBS="${LIBS} ${LTLIBZ}"
|
||||
|
||||
LIBSSH2_PC_LIBS_PRIVATE=$LIBS
|
||||
AC_SUBST(LIBSSH2_PC_LIBS_PRIVATE)
|
||||
|
||||
dnl merge the pkg-config private fields into public ones when static-only
|
||||
if test "x$enable_shared" = "xyes"; then
|
||||
LIBSSH2_PC_REQUIRES=
|
||||
LIBSSH2_PC_LIBS=
|
||||
else
|
||||
LIBSSH2_PC_REQUIRES=$LIBSSH2_PC_REQUIRES_PRIVATE
|
||||
LIBSSH2_PC_LIBS=$LIBSSH2_PC_LIBS_PRIVATE
|
||||
fi
|
||||
AC_SUBST(LIBSSH2_PC_REQUIRES)
|
||||
AC_SUBST(LIBSSH2_PC_LIBS)
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
src/Makefile
|
||||
tests/Makefile
|
||||
tests/ossfuzz/Makefile
|
||||
example/Makefile
|
||||
docs/Makefile
|
||||
libssh2.pc])
|
||||
AC_OUTPUT
|
||||
|
||||
AC_MSG_NOTICE([summary of build options:
|
||||
|
||||
version: ${LIBSSH2_VERSION}
|
||||
Host type: ${host}
|
||||
Install prefix: ${prefix}
|
||||
Compiler: ${CC}
|
||||
Compiler flags: ${CFLAGS}
|
||||
Library types: Shared=${enable_shared}, Static=${enable_static}
|
||||
Crypto library: ${found_crypto_str}
|
||||
WinCNG ECDSA: $wincng_ecdsa
|
||||
zlib compression: ${found_libz}
|
||||
Clear memory: $enable_clear_memory
|
||||
Deprecated APIs: $with_deprecated
|
||||
Debug build: $enable_debug
|
||||
Build examples: $build_examples
|
||||
Run Docker tests: $run_docker_tests
|
||||
Run sshd tests: $run_sshd_tests
|
||||
Path to sshd: $ac_cv_path_SSHD (only for self-tests)
|
||||
])
|
||||
4
vendor/libssh2/docs/.gitignore
vendored
Normal file
4
vendor/libssh2/docs/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
Makefile.am.cmake
|
||||
coverage
|
||||
80
vendor/libssh2/docs/AUTHORS
vendored
Normal file
80
vendor/libssh2/docs/AUTHORS
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
libssh2 is the result of many friendly people. This list is an attempt to
|
||||
mention all contributors. If we have missed anyone, tell us!
|
||||
|
||||
This list of names is a-z sorted.
|
||||
|
||||
Adam Gobiowski
|
||||
Alexander Holyapin
|
||||
Alexander Lamaison
|
||||
Alfred Gebert
|
||||
Ben Kibbey
|
||||
Bjorn Stenborg
|
||||
Carlo Bramini
|
||||
Cristian Rodríguez
|
||||
Daiki Ueno
|
||||
Dan Casey
|
||||
Dan Fandrich
|
||||
Daniel Stenberg
|
||||
Dave Hayden
|
||||
Dave McCaldon
|
||||
David J Sullivan
|
||||
David Robins
|
||||
Dmitry Smirnov
|
||||
Douglas Masterson
|
||||
Edink Kadribasic
|
||||
Erik Brossler
|
||||
Francois Dupoux
|
||||
Gellule Xg
|
||||
Grubsky Grigory
|
||||
Guenter Knauf
|
||||
Heiner Steven
|
||||
Henrik Nordstrom
|
||||
James Housleys
|
||||
Jasmeet Bagga
|
||||
Jean-Louis Charton
|
||||
Jernej Kovacic
|
||||
Joey Degges
|
||||
John Little
|
||||
Jose Baars
|
||||
Jussi Mononen
|
||||
Kamil Dudka
|
||||
Lars Nordin
|
||||
Mark McPherson
|
||||
Mark Smith
|
||||
Markus Moeller
|
||||
Matt Lilley
|
||||
Matthew Booth
|
||||
Maxime Larocque
|
||||
Mike Protts
|
||||
Mikhail Gusarov
|
||||
Neil Gierman
|
||||
Olivier Hervieu
|
||||
Paul Howarth
|
||||
Paul Querna
|
||||
Paul Veldkamp
|
||||
Peter Krempa
|
||||
Peter O'Gorman
|
||||
Peter Stuge
|
||||
Pierre Joye
|
||||
Rafael Kitover
|
||||
Romain Bondue
|
||||
Sara Golemon
|
||||
Satish Mittal
|
||||
Sean Peterson
|
||||
Selcuk Gueney
|
||||
Simon Hart
|
||||
Simon Josefsson
|
||||
Sofian Brabez
|
||||
Steven Ayre
|
||||
Steven Dake
|
||||
Steven Van Ingelgem
|
||||
TJ Saunders
|
||||
Tommy Lindgren
|
||||
Tor Arntsen
|
||||
Viktor Szakats
|
||||
Vincent Jaulin
|
||||
Vincent Torri
|
||||
Vlad Grachov
|
||||
Wez Furlong
|
||||
Yang Tse
|
||||
Zl Liu
|
||||
25
vendor/libssh2/docs/BINDINGS.md
vendored
Normal file
25
vendor/libssh2/docs/BINDINGS.md
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
libssh2 bindings
|
||||
================
|
||||
|
||||
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.
|
||||
|
||||
<!-- markdown-link-check-disable -->
|
||||
|
||||
[Cocoa/Objective-C](https://github.com/karelia/libssh2_sftp-Cocoa-wrapper)
|
||||
|
||||
[Haskell FFI bindings](https://hackage.haskell.org/package/libssh2)
|
||||
|
||||
[Perl Net::SSH2](https://metacpan.org/pod/Net::SSH2)
|
||||
|
||||
[PHP ssh2](https://pecl.php.net/package/ssh2)
|
||||
|
||||
[Python pylibssh2](https://pypi.python.org/pypi/pylibssh2)
|
||||
|
||||
[Python-ctypes PySsh2](https://github.com/gellule/PySsh2)
|
||||
|
||||
[Ruby libssh2-ruby](https://github.com/mitchellh/libssh2-ruby)
|
||||
44
vendor/libssh2/docs/CMakeLists.txt
vendored
Normal file
44
vendor/libssh2/docs/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
# Copyright (C) Alexander Lamaison <alexander.lamaison@gmail.com>
|
||||
# Copyright (C) Viktor Szakats
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
transform_makefile_inc("Makefile.am" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.am.cmake")
|
||||
# Get 'dist_man_MANS' variable
|
||||
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.am.cmake")
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(FILES ${dist_man_MANS} DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
|
||||
989
vendor/libssh2/docs/HACKING-CRYPTO
vendored
Normal file
989
vendor/libssh2/docs/HACKING-CRYPTO
vendored
Normal file
@@ -0,0 +1,989 @@
|
||||
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.
|
||||
|
||||
|
||||
0) Build system.
|
||||
|
||||
Adding a crypto backend to the autotools build system (./configure) is easy:
|
||||
|
||||
0.1) Add one new line in configure.ac
|
||||
|
||||
m4_set_add([crypto_backends], [newname])
|
||||
|
||||
This automatically creates a --with-crypto=newname option.
|
||||
|
||||
0.2) Add an m4_case stanza to LIBSSH2_CRYPTO_CHECK in acinclude.m4
|
||||
|
||||
This must check for all required libraries, and if found set and AC_SUBST a
|
||||
variable with the library linking flags. The recommended method is to use
|
||||
LIBSSH2_LIB_HAVE_LINKFLAGS from LIBSSH2_CRYPTO_CHECK, which automatically
|
||||
creates and handles a --with-$newname-prefix option and sets an
|
||||
LTLIBNEWNAME variable on success.
|
||||
|
||||
0.3) Add new header to src/Makefile.inc
|
||||
|
||||
0.4) Include new source in src/crypto.c
|
||||
|
||||
0.5) Add a new block in configure.ac
|
||||
|
||||
```
|
||||
elif test "$found_crypto" = "newname"; then
|
||||
LIBS="${LIBS} ${LTLIBNEWNAME}"
|
||||
```
|
||||
|
||||
0.6) Add CMake detection logic to CMakeLists.txt
|
||||
|
||||
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.
|
||||
|
||||
1.1) Crypto runtime detection
|
||||
|
||||
The libssh2_crypto_engine_t enum must include the new engine, and
|
||||
libssh2_crypto_engine() must return it when it is built in.
|
||||
|
||||
2) HMAC
|
||||
|
||||
libssh2_hmac_ctx
|
||||
Type of an HMAC computation context. Generally a struct.
|
||||
Used for all hash algorithms.
|
||||
|
||||
int _libssh2_hmac_ctx_init(libssh2_hmac_ctx *ctx);
|
||||
Initializes the HMAC computation context ctx.
|
||||
Called before setting-up the hash algorithm.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int _libssh2_hmac_update(libssh2_hmac_ctx *ctx,
|
||||
const void *data, int datalen);
|
||||
Continue computation of an HMAC on datalen bytes at data using context ctx.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int _libssh2_hmac_final(libssh2_hmac_ctx *ctx,
|
||||
void output[]);
|
||||
Get the computed HMAC from context ctx into the output buffer. The
|
||||
minimum data buffer size depends on the HMAC hash algorithm.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
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 SHA-1 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
|
||||
|
||||
int 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int libssh2_sha1_final(libssh2_sha1_ctx ctx,
|
||||
unsigned char output[SHA_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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int 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().
|
||||
Returns 1 for success and 0 for failure.
|
||||
|
||||
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
|
||||
|
||||
int 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int libssh2_sha256(const unsigned char *message,
|
||||
size_t 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.
|
||||
|
||||
int 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().
|
||||
Returns 1 for success and 0 for failure.
|
||||
|
||||
3.3) SHA-384
|
||||
Mandatory if ECDSA is implemented. Can be omitted otherwise.
|
||||
|
||||
SHA384_DIGEST_LENGTH
|
||||
#define to 48, the SHA-384 digest length.
|
||||
|
||||
libssh2_sha384_ctx
|
||||
Type of an SHA-384 computation context. Generally a struct.
|
||||
|
||||
int libssh2_sha384_init(libssh2_sha384_ctx *x);
|
||||
Initializes the SHA-384 computation context at x.
|
||||
Returns 1 for success and 0 for failure
|
||||
|
||||
int libssh2_sha384_update(libssh2_sha384_ctx ctx,
|
||||
const unsigned char *data,
|
||||
size_t len);
|
||||
Continue computation of SHA-384 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int libssh2_sha384_final(libssh2_sha384_ctx ctx,
|
||||
unsigned char output[SHA384_DIGEST_LENGTH]);
|
||||
Gets the computed SHA-384 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int libssh2_sha384(const unsigned char *message,
|
||||
size_t len,
|
||||
unsigned char output[SHA384_DIGEST_LENGTH]);
|
||||
Computes the SHA-384 signature over the given message of length len and
|
||||
store the result into the output buffer.
|
||||
Return 1 if error, else 0.
|
||||
|
||||
3.4) SHA-512
|
||||
Must always be implemented.
|
||||
|
||||
SHA512_DIGEST_LENGTH
|
||||
#define to 64, the SHA-512 digest length.
|
||||
|
||||
libssh2_sha512_ctx
|
||||
Type of an SHA-512 computation context. Generally a struct.
|
||||
|
||||
int libssh2_sha512_init(libssh2_sha512_ctx *x);
|
||||
Initializes the SHA-512 computation context at x.
|
||||
Returns 1 for success and 0 for failure
|
||||
|
||||
int libssh2_sha512_update(libssh2_sha512_ctx ctx,
|
||||
const unsigned char *data,
|
||||
size_t len);
|
||||
Continue computation of SHA-512 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int libssh2_sha512_final(libssh2_sha512_ctx ctx,
|
||||
unsigned char output[SHA512_DIGEST_LENGTH]);
|
||||
Gets the computed SHA-512 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int libssh2_sha512(const unsigned char *message,
|
||||
size_t len,
|
||||
unsigned char output[SHA512_DIGEST_LENGTH]);
|
||||
Computes the SHA-512 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_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.
|
||||
|
||||
int 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().
|
||||
Returns 1 for success and 0 for failure.
|
||||
|
||||
3.5) 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
|
||||
|
||||
int 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int 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.
|
||||
Must return 1 for success and 0 for failure.
|
||||
|
||||
int 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().
|
||||
Returns 1 for success and 0 for failure.
|
||||
|
||||
3.6) 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.
|
||||
|
||||
int 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,
|
||||
int firstlast);
|
||||
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.
|
||||
|
||||
_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) Triple 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) Diffie-Hellman support.
|
||||
|
||||
LIBSSH2_DH_GEX_MINGROUP
|
||||
The minimum Diffie-Hellman group length in bits supported by the backend.
|
||||
Usually defined as 2048.
|
||||
|
||||
LIBSSH2_DH_GEX_OPTGROUP
|
||||
The preferred Diffie-Hellman group length in bits. Usually defined as 4096.
|
||||
|
||||
LIBSSH2_DH_GEX_MAXGROUP
|
||||
The maximum Diffie-Hellman group length in bits supported by the backend.
|
||||
Usually defined as 8192.
|
||||
|
||||
LIBSSH2_DH_MAX_MODULUS_BITS
|
||||
The maximum Diffie-Hellman modulus bit count accepted from the server. This
|
||||
value must be supported by the backend. Usually 16384.
|
||||
|
||||
5.1) Diffie-Hellman context.
|
||||
_libssh2_dh_ctx
|
||||
Type of a Diffie-Hellman computation context.
|
||||
Must always be defined.
|
||||
|
||||
5.2) Diffie-Hellman computation procedures.
|
||||
void libssh2_dh_init(_libssh2_dh_ctx *dhctx);
|
||||
Initializes the Diffie-Hellman context at `dhctx'. No effective context
|
||||
creation needed here.
|
||||
|
||||
int libssh2_dh_key_pair(_libssh2_dh_ctx *dhctx, _libssh2_bn *public,
|
||||
_libssh2_bn *g, _libssh2_bn *p, int group_order,
|
||||
_libssh2_bn_ctx *bnctx);
|
||||
Generates a Diffie-Hellman key pair using base `g', prime `p' and the given
|
||||
`group_order'. Can use the given big number context `bnctx' if needed.
|
||||
The private key is stored as opaque in the Diffie-Hellman context `*dhctx' and
|
||||
the public key is returned in `public'.
|
||||
0 is returned upon success, else -1.
|
||||
|
||||
int libssh2_dh_secret(_libssh2_dh_ctx *dhctx, _libssh2_bn *secret,
|
||||
_libssh2_bn *f, _libssh2_bn *p, _libssh2_bn_ctx * bnctx)
|
||||
Computes the Diffie-Hellman secret from the previously created context `*dhctx',
|
||||
the public key `f' from the other party and the same prime `p' used at
|
||||
context creation. The result is stored in `secret'.
|
||||
0 is returned upon success, else -1.
|
||||
|
||||
void libssh2_dh_dtor(_libssh2_dh_ctx *dhctx)
|
||||
Destroys Diffie-Hellman context at `dhctx' and resets its storage.
|
||||
|
||||
|
||||
6) Big numbers.
|
||||
Positive multi-byte integers support is sufficient.
|
||||
|
||||
6.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.
|
||||
|
||||
6.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.
|
||||
|
||||
|
||||
7) 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.
|
||||
|
||||
Format of an ECDSA public key:
|
||||
a) "ecdsa-sha2-nistp256" or "ecdsa-sha2-nistp384" or "ecdsa-sha2-nistp521".
|
||||
b) domain: "nistp256", "nistp384" or "nistp521" matching a).
|
||||
c) raw public key ("octal").
|
||||
Each item is preceded by its 32-bit byte length, MSB first.
|
||||
|
||||
Format of an ED25519 public key:
|
||||
a) "ssh-ed25519".
|
||||
b) raw key (32 bytes).
|
||||
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.
|
||||
|
||||
|
||||
7.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,
|
||||
size_t sig_len,
|
||||
const unsigned char *m, size_t m_len);
|
||||
Verify (sig, sig_len) 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.
|
||||
|
||||
LIBSSH2_RSA_SHA2
|
||||
#define as 1 if the crypto library supports RSA SHA2 256/512, else 0.
|
||||
If defined as 0, the rest of this section can be omitted.
|
||||
|
||||
int _libssh2_rsa_sha2_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-2 hash bytes based on hash length 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 both macros _libssh2_rsa_sha2_256_signv()
|
||||
and _libssh2_rsa_sha2_512_signv are defined.
|
||||
|
||||
int _libssh2_rsa_sha2_256_signv(LIBSSH2_SESSION *session,
|
||||
unsigned char **sig, size_t *siglen,
|
||||
int count, const struct iovec vector[],
|
||||
libssh2_rsa_ctx *ctx);
|
||||
RSA signs the SHA-256 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_sha2_512_signv(LIBSSH2_SESSION *session,
|
||||
unsigned char **sig, size_t *siglen,
|
||||
int count, const struct iovec vector[],
|
||||
libssh2_rsa_ctx *ctx);
|
||||
RSA signs the SHA-512 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_sha2_verify(libssh2_rsa_ctx * rsa,
|
||||
size_t hash_len,
|
||||
const unsigned char *sig,
|
||||
size_t sig_len,
|
||||
const unsigned char *m, size_t m_len);
|
||||
Verify (sig, sig_len) signature of (m, m_len) using an SHA-2 hash based on
|
||||
hash length and the RSA context.
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
7.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, size_t m_len);
|
||||
Verify (sig, siglen) signature of (m, m_len) using an SHA-1 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,
|
||||
size_t 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.3) ECDSA
|
||||
LIBSSH2_ECDSA
|
||||
#define as 1 if the crypto library supports ECDSA, else 0.
|
||||
If defined as 0, _libssh2_ec_key should be defined as void and the rest of
|
||||
this section can be omitted.
|
||||
|
||||
EC_MAX_POINT_LEN
|
||||
Maximum point length. Usually defined as ((528 * 2 / 8) + 1) (= 133).
|
||||
|
||||
libssh2_ecdsa_ctx
|
||||
Type of an ECDSA computation context. Generally a struct.
|
||||
|
||||
_libssh2_ec_key
|
||||
Type of an elliptic curve key.
|
||||
|
||||
libssh2_curve_type
|
||||
An enum type defining curve types. Current supported identifiers are:
|
||||
LIBSSH2_EC_CURVE_NISTP256
|
||||
LIBSSH2_EC_CURVE_NISTP384
|
||||
LIBSSH2_EC_CURVE_NISTP521
|
||||
|
||||
int _libssh2_ecdsa_create_key(_libssh2_ec_key **out_private_key,
|
||||
unsigned char **out_public_key_octal,
|
||||
size_t *out_public_key_octal_len,
|
||||
libssh2_curve_type curve_type);
|
||||
Create a new ECDSA private key of type curve_type and return it at
|
||||
out_private_key. If out_public_key_octal is not NULL, store an allocated
|
||||
pointer to the associated public key in "octal" form in it and its length
|
||||
at out_public_key_octal_len.
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_new_private(libssh2_ecdsa_ctx **ec_ctx,
|
||||
LIBSSH2_SESSION * session,
|
||||
const char *filename,
|
||||
unsigned const char *passphrase);
|
||||
Reads an ECDSA private key from PEM file filename into a new ECDSA context.
|
||||
Must call _libssh2_init_if_needed().
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_new_private_frommemory(libssh2_ecdsa_ctx ** ec_ctx,
|
||||
LIBSSH2_SESSION * session,
|
||||
const char *filedata,
|
||||
size_t filedata_len,
|
||||
unsigned const char *passphrase);
|
||||
Builds an ECDSA private key from PEM data at filedata of length filedata_len
|
||||
into a new ECDSA context stored at ec_ctx.
|
||||
Must call _libssh2_init_if_needed().
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_curve_name_with_octal_new(libssh2_ecdsa_ctx **ecdsactx,
|
||||
const unsigned char *k,
|
||||
size_t k_len,
|
||||
libssh2_curve_type type);
|
||||
Stores at ecdsactx a new ECDSA context associated with the given curve type
|
||||
and with "octal" form public key (k, k_len).
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_new_openssh_private(libssh2_ecdsa_ctx **ec_ctx,
|
||||
LIBSSH2_SESSION * session,
|
||||
const char *filename,
|
||||
unsigned const char *passphrase);
|
||||
Reads a PEM-encoded ECDSA private key from file filename encrypted with
|
||||
passphrase and stores at ec_ctx a new ECDSA context for it.
|
||||
Return 0 if OK, else -1.
|
||||
Currently used only from openssl backend (ought to be private).
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_sign(LIBSSH2_SESSION *session, libssh2_ecdsa_ctx *ec_ctx,
|
||||
const unsigned char *hash, unsigned long hash_len,
|
||||
unsigned char **signature, size_t *signature_len);
|
||||
ECDSA signs the (hash, hashlen) hash bytes and stores the allocated
|
||||
signature at (signature, signature_len). Hash algorithm used should be
|
||||
SHA-256, SHA-384 or SHA-512 depending on type stored in ECDSA context at ec_ctx.
|
||||
Signature buffer must be allocated from the given session.
|
||||
Returns 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_verify(libssh2_ecdsa_ctx *ctx,
|
||||
const unsigned char *r, size_t r_len,
|
||||
const unsigned char *s, size_t s_len,
|
||||
const unsigned char *m, size_t m_len);
|
||||
Verify the ECDSA signature made of (r, r_len) and (s, s_len) of (m, m_len)
|
||||
using the hash algorithm configured in the ECDSA context ctx.
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
libssh2_curve_type _libssh2_ecdsa_get_curve_type(libssh2_ecdsa_ctx *ecdsactx);
|
||||
Returns the curve type associated with given context.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ecdsa_curve_type_from_name(const char *name,
|
||||
libssh2_curve_type *out_type);
|
||||
Stores in out_type the curve type matching string name of the form
|
||||
"ecdsa-sha2-nistpxxx".
|
||||
Return 0 if OK, else -1.
|
||||
Currently used only from openssl backend (ought to be private).
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
void _libssh2_ecdsa_free(libssh2_ecdsa_ctx *ecdsactx);
|
||||
Releases the ECDSA computation context at ecdsactx.
|
||||
|
||||
|
||||
7.4) ED25519
|
||||
LIBSSH2_ED25519
|
||||
#define as 1 if the crypto library supports ED25519, else 0.
|
||||
If defined as 0, the rest of this section can be omitted.
|
||||
|
||||
|
||||
libssh2_ed25519_ctx
|
||||
Type of an ED25519 computation context. Generally a struct.
|
||||
|
||||
int _libssh2_curve25519_new(LIBSSH2_SESSION *session, libssh2_ed25519_ctx **ctx,
|
||||
uint8_t **out_public_key,
|
||||
uint8_t **out_private_key);
|
||||
Generates an ED25519 key pair, stores a pointer to them at out_private_key
|
||||
and out_public_key respectively and stores at ctx a new ED25519 context for
|
||||
this key.
|
||||
Argument ctx, out_private_key and out_public key may be NULL to disable storing
|
||||
the corresponding value.
|
||||
Length of each key is LIBSSH2_ED25519_KEY_LEN (32 bytes).
|
||||
Key buffers are allocated and should be released by caller after use.
|
||||
Returns 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ed25519_new_private(libssh2_ed25519_ctx **ed_ctx,
|
||||
LIBSSH2_SESSION *session,
|
||||
const char *filename,
|
||||
const uint8_t *passphrase);
|
||||
Reads an ED25519 private key from PEM file filename into a new ED25519 context.
|
||||
Must call _libssh2_init_if_needed().
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ed25519_new_public(libssh2_ed25519_ctx **ed_ctx,
|
||||
LIBSSH2_SESSION *session,
|
||||
const unsigned char *raw_pub_key,
|
||||
const size_t key_len);
|
||||
Stores at ed_ctx a new ED25519 key context for raw public key (raw_pub_key,
|
||||
key_len).
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ed25519_new_private_frommemory(libssh2_ed25519_ctx **ed_ctx,
|
||||
LIBSSH2_SESSION *session,
|
||||
const char *filedata,
|
||||
size_t filedata_len,
|
||||
unsigned const char *passphrase);
|
||||
Builds an ED25519 private key from PEM data at filedata of length filedata_len
|
||||
into a new ED25519 context stored at ed_ctx.
|
||||
Must call _libssh2_init_if_needed().
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ed25519_sign(libssh2_ed25519_ctx *ctx, LIBSSH2_SESSION *session,
|
||||
uint8_t **out_sig, size_t *out_sig_len,
|
||||
const uint8_t *message, size_t message_len);
|
||||
ED25519 signs the (message, message_len) bytes and stores the allocated
|
||||
signature at (sig, sig_len).
|
||||
Signature buffer is allocated from the given session.
|
||||
Returns 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_ed25519_verify(libssh2_ed25519_ctx *ctx, const uint8_t *s,
|
||||
size_t s_len, const uint8_t *m, size_t m_len);
|
||||
Verify (s, s_len) signature of (m, m_len) using the given ED25519 context.
|
||||
Return 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
int _libssh2_curve25519_gen_k(_libssh2_bn **k,
|
||||
uint8_t private_key[LIBSSH2_ED25519_KEY_LEN],
|
||||
uint8_t srvr_public_key[LIBSSH2_ED25519_KEY_LEN]);
|
||||
Computes a shared ED25519 secret key from the given raw server public key and
|
||||
raw client public key and stores it as a big number in *k. Big number should
|
||||
have been initialized before calling this function.
|
||||
Returns 0 if OK, else -1.
|
||||
This procedure is already prototyped in crypto.h.
|
||||
|
||||
void _libssh2_ed25519_free(libssh2_ed25519_ctx *ed25519ctx);
|
||||
Releases the ED25519 computation context at ed25519ctx.
|
||||
|
||||
|
||||
8) 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.
|
||||
|
||||
int _libssh2_random(unsigned char *buf, size_t len);
|
||||
Store len random bytes at buf.
|
||||
Returns 0 if OK, else -1.
|
||||
|
||||
const char * _libssh2_supported_key_sign_algorithms(LIBSSH2_SESSION *session,
|
||||
unsigned char *key_method,
|
||||
size_t key_method_len);
|
||||
|
||||
This function is for implementing key hash upgrading as defined in RFC 8332.
|
||||
|
||||
Based on the incoming key_method value, this function will return a
|
||||
list of supported algorithms that can upgrade the original key method algorithm
|
||||
as a comma separated list, if there is no upgrade option this function should
|
||||
return NULL.
|
||||
14
vendor/libssh2/docs/HACKING.md
vendored
Normal file
14
vendor/libssh2/docs/HACKING.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
# libssh2 source code style guide
|
||||
|
||||
- 4 level indent
|
||||
- spaces-only (no tabs)
|
||||
- open braces on the if/for line:
|
||||
|
||||
```
|
||||
if (banana) {
|
||||
go_nuts();
|
||||
}
|
||||
```
|
||||
|
||||
- keep source lines shorter than 80 columns
|
||||
- See `libssh2-style.el` for how to achieve this within Emacs
|
||||
316
vendor/libssh2/docs/INSTALL_AUTOTOOLS
vendored
Normal file
316
vendor/libssh2/docs/INSTALL_AUTOTOOLS
vendored
Normal file
@@ -0,0 +1,316 @@
|
||||
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.
|
||||
|
||||
SPDX-License-Identifier: FSFULLR
|
||||
|
||||
When Building directly from Master
|
||||
==================================
|
||||
|
||||
If you want to build directly from the git repository, you must first
|
||||
generate the configure script and Makefile using autotools. Make
|
||||
sure that autoconf, automake and libtool are installed on your system,
|
||||
then execute:
|
||||
|
||||
autoreconf -fi
|
||||
|
||||
After executing this script, you can build the project as usual:
|
||||
|
||||
./configure
|
||||
make
|
||||
|
||||
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 shortly `-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 do not 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 are
|
||||
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 does not,
|
||||
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' is not included in this package, then this package does not
|
||||
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:
|
||||
|
||||
* --with-libgcrypt
|
||||
* --without-libgcrypt
|
||||
* --with-libgcrypt-prefix=DIR
|
||||
|
||||
libssh2 can use the Libgcrypt library
|
||||
(https://www.gnupg.org/) for cryptographic operations.
|
||||
One of the cryptographic libraries 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
|
||||
(https://www.openssl-library.org/) for cryptographic operations.
|
||||
One of the cryptographic libraries 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-mbedtls
|
||||
* --without-mbedtls
|
||||
* --with-libmbedcrypto-prefix=[DIR]
|
||||
|
||||
libssh2 can use the mbedTLS library
|
||||
(https://tls.mbed.org) for cryptographic operations.
|
||||
One of the cryptographic libraries is required.
|
||||
|
||||
Configure will attempt to locate mbedTLS in the
|
||||
default location.
|
||||
|
||||
If your installation of mbedTLS is in another
|
||||
location, specify it using --with-libmbedcrypto-prefix.
|
||||
|
||||
* --with-libz
|
||||
* --without-libz
|
||||
* --with-libz-prefix=[DIR]
|
||||
|
||||
If present, libssh2 will attempt to use the zlib
|
||||
(https://zlib.net/) 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).
|
||||
173
vendor/libssh2/docs/INSTALL_CMAKE.md
vendored
Normal file
173
vendor/libssh2/docs/INSTALL_CMAKE.md
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
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 v3.7 or later [1] and one of the
|
||||
following cryptography libraries:
|
||||
|
||||
* OpenSSL
|
||||
* wolfSSL
|
||||
* Libgcrypt
|
||||
* WinCNG
|
||||
* mbedTLS
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
cmake -B bld
|
||||
cmake --build bld
|
||||
```
|
||||
|
||||
Use this with CMake 3.12.x or older:
|
||||
```
|
||||
mkdir bld
|
||||
cd bld
|
||||
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
|
||||
---------------------
|
||||
|
||||
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:
|
||||
|
||||
* `LINT=ON`
|
||||
|
||||
Enables running the source code linter when building.
|
||||
Can be `ON` or `OFF`. Default: `OFF`
|
||||
|
||||
* `BUILD_STATIC_LIBS=OFF`
|
||||
|
||||
Determines whether to build a libssh2 static library.
|
||||
Can be `ON` or `OFF`. Default: `ON`
|
||||
|
||||
* `BUILD_SHARED_LIBS=OFF`
|
||||
|
||||
Determines whether to build a libssh2 shared library (.dll/.so).
|
||||
Can be `ON` or `OFF`. Default: `ON`
|
||||
|
||||
* `CRYPTO_BACKEND=`
|
||||
|
||||
Chooses a specific cryptography library to use for cryptographic
|
||||
operations. Can be `OpenSSL` (https://www.openssl-library.org/),
|
||||
`Libgcrypt` (https://www.gnupg.org/), `WinCNG` (Windows Vista+),
|
||||
`mbedTLS` (https://www.trustedfirmware.org/projects/mbed-tls/) or
|
||||
blank to use any library available.
|
||||
|
||||
CMake will attempt to locate the libraries automatically. See [2]
|
||||
for more information.
|
||||
|
||||
* `ENABLE_ZLIB_COMPRESSION=ON`
|
||||
|
||||
Use zlib (https://zlib.net/) for payload compression.
|
||||
Can be `ON` or `OFF`. Default: `OFF`
|
||||
|
||||
* `ENABLE_DEBUG_LOGGING=ON`
|
||||
|
||||
Enable the libssh2_trace() function for showing debug traces.
|
||||
Can be `ON` or `OFF`. Default: `OFF` in Release, `ON` in `Debug`
|
||||
|
||||
* `CLEAR_MEMORY=OFF`
|
||||
|
||||
Disable secure zero memory before freeing it (not recommended).
|
||||
Can be `ON` or `OFF`. Default: `ON`
|
||||
|
||||
Build tools
|
||||
-----------
|
||||
|
||||
The previous examples used CMake to start the build using:
|
||||
|
||||
cmake --build .
|
||||
|
||||
Alternatively, once CMake has configured your project, you can 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 does not 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 do not 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 do not need to worry about
|
||||
setting it up with libssh2's location. Add 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)
|
||||
|
||||
You still have to make libssh2 available on your system first. You can
|
||||
install it in the traditional way shown above, but you do not have to.
|
||||
Instead you can 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 SHA256=<libssh2 archive SHA256>
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
ExternalProject_Add(
|
||||
MyProject DEPENDS libssh2
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
[1] https://www.cmake.org/cmake/resources/software.html
|
||||
[2] https://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html
|
||||
[3] https://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html#package-registry
|
||||
[4] https://blog.kitware.com/wp-content/uploads/2016/01/kitware_quarterly1009.pdf
|
||||
190
vendor/libssh2/docs/Makefile.am
vendored
Normal file
190
vendor/libssh2/docs/Makefile.am
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
EXTRA_DIST = template.3 AUTHORS BINDINGS.md HACKING.md HACKING-CRYPTO \
|
||||
INSTALL_AUTOTOOLS INSTALL_CMAKE.md SECURITY.md TODO CMakeLists.txt
|
||||
|
||||
dist_man_MANS = \
|
||||
libssh2_agent_connect.3 \
|
||||
libssh2_agent_disconnect.3 \
|
||||
libssh2_agent_free.3 \
|
||||
libssh2_agent_get_identity.3 \
|
||||
libssh2_agent_get_identity_path.3 \
|
||||
libssh2_agent_init.3 \
|
||||
libssh2_agent_list_identities.3 \
|
||||
libssh2_agent_set_identity_path.3 \
|
||||
libssh2_agent_sign.3 \
|
||||
libssh2_agent_userauth.3 \
|
||||
libssh2_banner_set.3 \
|
||||
libssh2_base64_decode.3 \
|
||||
libssh2_channel_close.3 \
|
||||
libssh2_channel_direct_streamlocal_ex.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_auth_agent.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_signal_ex.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_crypto_engine.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_callback_set2.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_read_timeout.3 \
|
||||
libssh2_session_get_timeout.3 \
|
||||
libssh2_session_handshake.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_method_pref.3 \
|
||||
libssh2_session_methods.3 \
|
||||
libssh2_session_set_blocking.3 \
|
||||
libssh2_session_set_last_error.3 \
|
||||
libssh2_session_set_read_timeout.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_open_ex_r.3 \
|
||||
libssh2_sftp_open_r.3 \
|
||||
libssh2_sftp_opendir.3 \
|
||||
libssh2_sftp_posix_rename.3 \
|
||||
libssh2_sftp_posix_rename_ex.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_sign_sk.3 \
|
||||
libssh2_trace.3 \
|
||||
libssh2_trace_sethandler.3 \
|
||||
libssh2_userauth_authenticated.3 \
|
||||
libssh2_userauth_banner.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_userauth_publickey_frommemory.3 \
|
||||
libssh2_userauth_publickey_sk.3 \
|
||||
libssh2_version.3
|
||||
100
vendor/libssh2/docs/SECURITY.md
vendored
Normal file
100
vendor/libssh2/docs/SECURITY.md
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
libssh2 security
|
||||
================
|
||||
|
||||
This document is intended to provide guidance on how security vulnerabilities
|
||||
should be handled in the libssh2 project.
|
||||
|
||||
Publishing Information
|
||||
----------------------
|
||||
|
||||
All known and public libssh2 vulnerabilities will be listed on [the libssh2
|
||||
web site](https://libssh2.org/).
|
||||
|
||||
Security vulnerabilities should not be entered in the project's public bug
|
||||
tracker unless the necessary configuration is in place to limit access to the
|
||||
issue to only the reporter and the project's security team.
|
||||
|
||||
Vulnerability Handling
|
||||
----------------------
|
||||
|
||||
The typical process for handling a new security vulnerability is as follows.
|
||||
|
||||
No information should be made public about a vulnerability until it is
|
||||
formally announced at the end of this process. That means, for example that a
|
||||
bug tracker entry must NOT be created to track the issue since that will make
|
||||
the issue public and it should not be discussed on the project's public
|
||||
mailing list. Also messages associated with any commits should not make any
|
||||
reference to the security nature of the commit if done prior to the public
|
||||
announcement.
|
||||
|
||||
- The person discovering the issue, the reporter, reports the vulnerability
|
||||
privately to `libssh2-security@haxx.se`. That is an email alias that reaches
|
||||
a handful of selected and trusted people.
|
||||
|
||||
- Messages that do not relate to the reporting or managing of an undisclosed
|
||||
security vulnerability in libssh2 are ignored and no further action is
|
||||
required.
|
||||
|
||||
- A person in the security team sends an e-mail to the original reporter to
|
||||
acknowledge the report.
|
||||
|
||||
- The security team investigates the report and either rejects it or accepts
|
||||
it.
|
||||
|
||||
- If the report is rejected, the team writes to the reporter to explain why.
|
||||
|
||||
- If the report is accepted, the team writes to the reporter to let him/her
|
||||
know it is accepted and that they are working on a fix.
|
||||
|
||||
- The security team discusses the problem, works out a fix, considers the
|
||||
impact of the problem and suggests a release schedule. This discussion
|
||||
should involve the reporter as much as possible.
|
||||
|
||||
- The release of the information should be "as soon as possible" and is most
|
||||
often synced with an upcoming release that contains the fix. If the
|
||||
reporter, or anyone else, thinks the next planned release is too far away
|
||||
then a separate earlier release for security reasons should be considered.
|
||||
|
||||
- Write a security advisory draft about the problem that explains what the
|
||||
problem is, its impact, which versions it affects, solutions or
|
||||
workarounds, when the release is out and make sure to credit all
|
||||
contributors properly.
|
||||
|
||||
- Request a CVE number from
|
||||
[distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros)
|
||||
when also informing and preparing them for the upcoming public security
|
||||
vulnerability announcement - attach the advisory draft for information. Note
|
||||
that 'distros' will not accept an embargo longer than 14 days.
|
||||
|
||||
- Update the "security advisory" with the CVE number.
|
||||
|
||||
- The security team commits the fix in a private branch. The commit message
|
||||
should ideally contain the CVE number. This fix is usually also distributed
|
||||
to the 'distros' mailing list to allow them to use the fix prior to the
|
||||
public announcement.
|
||||
|
||||
- At the day of the next release, the private branch is merged into the master
|
||||
branch and pushed. Once pushed, the information is accessible to the public
|
||||
and the actual release should follow suit immediately afterwards.
|
||||
|
||||
- The project team creates a release that includes the fix.
|
||||
|
||||
- The project team announces the release and the vulnerability to the world in
|
||||
the same manner we always announce releases. It gets sent to the libssh2
|
||||
mailing list and the oss-security mailing list.
|
||||
|
||||
- The security web page on the web site should get the new vulnerability
|
||||
mentioned.
|
||||
|
||||
LIBSSH2-SECURITY (at haxx dot se)
|
||||
--------------------------------
|
||||
|
||||
Who is on this list? There are a couple of criteria you must meet, and then we
|
||||
might ask you to join the list or you can ask to join it. It really is not very
|
||||
formal. We basically only require that you have a long-term presence in the
|
||||
libssh2 project and you have shown an understanding for the project and its way
|
||||
of working. You must have been around for a good while and you should have no
|
||||
plans in vanishing in the near future.
|
||||
|
||||
We do not make the list of participants public mostly because it tends to vary
|
||||
somewhat over time and a list somewhere will only risk getting outdated.
|
||||
180
vendor/libssh2/docs/TODO
vendored
Normal file
180
vendor/libssh2/docs/TODO
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
Things TODO
|
||||
===========
|
||||
|
||||
* Fix -Wsign-conversion warnings in src
|
||||
|
||||
* 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
|
||||
does not 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 does not
|
||||
exist/work
|
||||
|
||||
* Extend the test suite to actually test lots of aspects of libssh2
|
||||
|
||||
* Update public API to drop casts added to fix compiler warnings
|
||||
|
||||
* 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.
|
||||
|
||||
* for obsolete/weak/insecure algorithms: either stop enabling them by default
|
||||
at build-time, or delete support for them completely.
|
||||
|
||||
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.
|
||||
|
||||
* delete or deprecate libssh2_session_callback_set()
|
||||
|
||||
* bump length arguments in callback functions to size_t/ssize_t
|
||||
|
||||
* 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 replacement)
|
||||
|
||||
* 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() function 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 have not 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,
|
||||
libssh2_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
|
||||
24
vendor/libssh2/docs/libssh2_agent_connect.3
vendored
Normal file
24
vendor/libssh2/docs/libssh2_agent_connect.3
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_connect 3 "23 Dec 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_connect - connect to an ssh-agent
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_agent_connect(LIBSSH2_AGENT *agent);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Connect to an ssh-agent running on the system.
|
||||
|
||||
Call \fBlibssh2_agent_disconnect(3)\fP to close the connection after
|
||||
you are doing using it.
|
||||
.SH RETURN VALUE
|
||||
Returns 0 if succeeded, or a negative value for error.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_init(3)
|
||||
.BR libssh2_agent_disconnect(3)
|
||||
22
vendor/libssh2/docs/libssh2_agent_disconnect.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_agent_disconnect.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_disconnect 3 "23 Dec 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_disconnect - close a connection to an ssh-agent
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_agent_disconnect(LIBSSH2_AGENT *agent);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Close a connection to an ssh-agent.
|
||||
|
||||
.SH RETURN VALUE
|
||||
Returns 0 if succeeded, or a negative value for error.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_connect(3)
|
||||
.BR libssh2_agent_free(3)
|
||||
22
vendor/libssh2/docs/libssh2_agent_free.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_agent_free.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_free 3 "28 May 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_free - free an ssh-agent handle
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
void
|
||||
libssh2_agent_free(LIBSSH2_AGENT *agent);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Free an ssh-agent handle. This function also frees the internal
|
||||
collection of public keys.
|
||||
.SH RETURN VALUE
|
||||
None.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_init(3)
|
||||
.BR libssh2_agent_disconnect(3)
|
||||
36
vendor/libssh2/docs/libssh2_agent_get_identity.3
vendored
Normal file
36
vendor/libssh2/docs/libssh2_agent_get_identity.3
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_get_identity 3 "23 Dec 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_get_identity - get a public key off the collection of public keys managed by ssh-agent
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_agent_get_identity(LIBSSH2_AGENT *agent,
|
||||
struct libssh2_agent_publickey **store,
|
||||
struct libssh2_agent_publickey *prev);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIlibssh2_agent_get_identity(3)\fP allows an application to iterate
|
||||
over all public keys in the collection managed by ssh-agent.
|
||||
|
||||
\fIstore\fP should point to a pointer that gets filled in to point to the
|
||||
public key data.
|
||||
|
||||
\fIprev\fP is a pointer to a previous 'struct libssh2_agent_publickey'
|
||||
as returned by a previous invoke of this function, or NULL to get the
|
||||
first entry in the internal collection.
|
||||
.SH RETURN VALUE
|
||||
Returns 0 if everything is fine and information about a host was stored in
|
||||
the \fIstore\fP struct.
|
||||
|
||||
Returns 1 if it reached the end of public keys.
|
||||
|
||||
Returns negative values for error
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_list_identities(3)
|
||||
.BR libssh2_agent_userauth(3)
|
||||
22
vendor/libssh2/docs/libssh2_agent_get_identity_path.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_agent_get_identity_path.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) Will Cosgrove
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_get_identity_path 3 "6 Mar 2019" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_get_identity_path - gets the custom ssh-agent socket path
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
const char *
|
||||
libssh2_agent_get_identity_path(LIBSSH2_AGENT *agent);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Returns the custom agent identity socket path if set using libssh2_agent_set_identity_path()
|
||||
|
||||
.SH RETURN VALUE
|
||||
Returns the socket path on disk.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.9
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_init(3)
|
||||
.BR libssh2_agent_set_identity_path(3)
|
||||
28
vendor/libssh2/docs/libssh2_agent_init.3
vendored
Normal file
28
vendor/libssh2/docs/libssh2_agent_init.3
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_init 3 "23 Dec 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_init - init an ssh-agent handle
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_AGENT *
|
||||
libssh2_agent_init(LIBSSH2_SESSION *session);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Init an ssh-agent handle. Returns the handle to an internal
|
||||
representation of an ssh-agent connection. After the successful
|
||||
initialization, an application can call \fBlibssh2_agent_connect(3)\fP
|
||||
to connect to a running ssh-agent.
|
||||
|
||||
Call \fBlibssh2_agent_free(3)\fP to free the handle again after you are
|
||||
doing using it.
|
||||
.SH RETURN VALUE
|
||||
Returns a handle pointer or NULL if something went wrong. The returned handle
|
||||
is used as input to all other ssh-agent related functions libssh2 provides.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_connect(3)
|
||||
.BR libssh2_agent_free(3)
|
||||
25
vendor/libssh2/docs/libssh2_agent_list_identities.3
vendored
Normal file
25
vendor/libssh2/docs/libssh2_agent_list_identities.3
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_list_identities 3 "23 Dec 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_list_identities - request an ssh-agent to list of public keys.
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_agent_list_identities(LIBSSH2_AGENT *agent);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Request an ssh-agent to list of public keys, and stores them in the
|
||||
internal collection of the handle. Call
|
||||
\fIlibssh2_agent_get_identity(3)\fP to get a public key off the
|
||||
collection.
|
||||
|
||||
.SH RETURN VALUE
|
||||
Returns 0 if succeeded, or a negative value for error.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_connect(3)
|
||||
.BR libssh2_agent_get_identity(3)
|
||||
22
vendor/libssh2/docs/libssh2_agent_set_identity_path.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_agent_set_identity_path.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) Will Cosgrove
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_set_identity_path 3 "6 Mar 2019" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_set_identity_path - set an ssh-agent socket path on disk
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
void
|
||||
libssh2_agent_set_identity_path(LIBSSH2_AGENT *agent, const char *path);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Allows a custom agent identity socket path instead of the default SSH_AUTH_SOCK env value
|
||||
|
||||
.SH RETURN VALUE
|
||||
Returns void
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.9
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_init(3)
|
||||
.BR libssh2_agent_get_identity_path(3)
|
||||
54
vendor/libssh2/docs/libssh2_agent_sign.3
vendored
Normal file
54
vendor/libssh2/docs/libssh2_agent_sign.3
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_sign 3 "1 Oct 2022" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_sign - sign data, with the help of ssh-agent
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_agent_sign(LIBSSH2_AGENT *agent,
|
||||
struct libssh2_agent_publickey *identity,
|
||||
unsigned char **sig,
|
||||
size_t *s_len,
|
||||
const unsigned char *data,
|
||||
size_t d_len,
|
||||
const char *method,
|
||||
unsigned int method_len);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIagent\fP - ssh-agent handle as returned by
|
||||
.BR libssh2_agent_init(3)
|
||||
|
||||
\fIidentity\fP - Public key to authenticate with, as returned by
|
||||
.BR libssh2_agent_get_identity(3)
|
||||
|
||||
\fIsig\fP - A pointer to a buffer in which to place the signature. The caller
|
||||
is responsible for freeing the signature with LIBSSH2_FREE.
|
||||
|
||||
\fIs_len\fP - A pointer to the length of the sig parameter.
|
||||
|
||||
\fIdata\fP - The data to sign.
|
||||
|
||||
\fId_len\fP - The length of the data parameter.
|
||||
|
||||
\fImethod\fP - A buffer indicating the signing method. This should match the
|
||||
string at the start of identity->blob.
|
||||
|
||||
\fImethod_len\fP - The length of the method parameter.
|
||||
|
||||
Sign data using an ssh-agent. This function can be used in a callback
|
||||
registered with libssh2_session_callback_set2(3) using
|
||||
LIBSSH2_CALLBACK_AUTHAGENT_SIGN to sign an authentication challenge from a
|
||||
server. However, the client is responsible for implementing the code that calls
|
||||
this callback in response to a SSH2_AGENTC_SIGN_REQUEST message.
|
||||
.SH RETURN VALUE
|
||||
Returns 0 if succeeded, or a negative value for error.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.11.0
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_init(3)
|
||||
.BR libssh2_agent_get_identity(3)
|
||||
.BR libssh2_agent_userauth(3)
|
||||
.BR libssh2_session_callback_set2(3)
|
||||
32
vendor/libssh2/docs/libssh2_agent_userauth.3
vendored
Normal file
32
vendor/libssh2/docs/libssh2_agent_userauth.3
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
.\" Copyright (C) Daiki Ueno
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_agent_userauth 3 "23 Dec 2009" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_agent_userauth - authenticate a session with a public key, with the help of ssh-agent
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_agent_userauth(LIBSSH2_AGENT *agent,
|
||||
const char *username,
|
||||
struct libssh2_agent_publickey *identity);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIagent\fP - ssh-agent handle as returned by
|
||||
.BR libssh2_agent_init(3)
|
||||
|
||||
\fIusername\fP - Remote user name to authenticate as.
|
||||
|
||||
\fIidentity\fP - Public key to authenticate with, as returned by
|
||||
.BR libssh2_agent_get_identity(3)
|
||||
|
||||
Attempt public key authentication with the help of ssh-agent.
|
||||
.SH RETURN VALUE
|
||||
Returns 0 if succeeded, or a negative value for error.
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.2
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_agent_init(3)
|
||||
.BR libssh2_agent_get_identity(3)
|
||||
.BR libssh2_agent_sign(3)
|
||||
36
vendor/libssh2/docs/libssh2_banner_set.3
vendored
Normal file
36
vendor/libssh2/docs/libssh2_banner_set.3
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_banner_set 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_banner_set - set the SSH protocol banner for the local client
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This function is \fBDEPRECATED\fP in 1.4.0. Use the
|
||||
\fIlibssh2_session_banner_set(3)\fP function instead!
|
||||
|
||||
\fIsession\fP - Session instance as returned by
|
||||
.BR libssh2_session_init_ex(3)
|
||||
|
||||
\fIbanner\fP - A pointer to a user defined banner
|
||||
|
||||
Set the banner that will be sent to the remote host when the SSH session is
|
||||
started with
|
||||
.BR libssh2_session_handshake(3)
|
||||
This is optional; a banner corresponding to the protocol and libssh2 version
|
||||
will be sent by default.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH AVAILABILITY
|
||||
Marked as deprecated since 1.4.0
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_session_handshake(3)
|
||||
30
vendor/libssh2/docs/libssh2_base64_decode.3
vendored
Normal file
30
vendor/libssh2/docs/libssh2_base64_decode.3
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_base64_decode 3 "23 Dec 2008" "libssh2 1.0" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_base64_decode - decode a base64 encoded string
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_base64_decode(LIBSSH2_SESSION *session, char **dest,
|
||||
unsigned int *dest_len, const char *src,
|
||||
unsigned int src_len);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This function is deemed DEPRECATED and will be removed from libssh2 in a
|
||||
future version. Do not use it!
|
||||
|
||||
Decode a base64 chunk and store it into a newly allocated buffer. 'dest_len'
|
||||
will be set to hold the length of the returned buffer that '*dest' will point
|
||||
to.
|
||||
|
||||
The returned buffer is allocated by this function, but it is not clear how to
|
||||
free that memory!
|
||||
.SH BUGS
|
||||
The memory that *dest points to is allocated by the malloc function libssh2
|
||||
uses, but there is no way for an application to free this data in a safe and
|
||||
reliable way!
|
||||
.SH RETURN VALUE
|
||||
0 if successful, \-1 if any error occurred.
|
||||
29
vendor/libssh2/docs/libssh2_channel_close.3
vendored
Normal file
29
vendor/libssh2/docs/libssh2_channel_close.3
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_close 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_close - close a channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_close(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - active channel stream to set closed status on.
|
||||
|
||||
Close an active data channel. In practice this means sending an SSH_MSG_CLOSE
|
||||
packet to the remote host which serves as instruction that no further data
|
||||
will be sent to it. The remote host may still send data back until it sends
|
||||
its own close message in response. To wait for the remote end to close its
|
||||
connection as well, follow this command with
|
||||
.BR libssh2_channel_wait_closed(3)
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
34
vendor/libssh2/docs/libssh2_channel_direct_streamlocal_ex.3
vendored
Normal file
34
vendor/libssh2/docs/libssh2_channel_direct_streamlocal_ex.3
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_direct_streamlocal_ex 3 "10 Apr 2023" "libssh2 1.11.0" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_direct_streamlocal_ex - Tunnel a UNIX socket connection through an SSH session
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION *session,
|
||||
const char *socket_path,
|
||||
const char *shost, int sport);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIsession\fP - Session instance as returned by
|
||||
.BR libssh2_session_init_ex(3)
|
||||
|
||||
\fIsocket_path\fP - UNIX socket to connect to using the SSH host as a proxy.
|
||||
|
||||
\fIshost\fP - Host to tell the SSH server the connection originated on.
|
||||
|
||||
\fIsport\fP - Port to tell the SSH server the connection originated from.
|
||||
|
||||
Tunnel a UNIX socket connection through the SSH transport via the remote host to
|
||||
a third party. Communication from the client to the SSH server remains
|
||||
encrypted, communication from the server to the 3rd party host travels
|
||||
in cleartext.
|
||||
.SH RETURN VALUE
|
||||
Pointer to a newly allocated LIBSSH2_CHANNEL instance, or NULL on errors.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_session_init_ex(3)
|
||||
22
vendor/libssh2/docs/libssh2_channel_direct_tcpip.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_channel_direct_tcpip.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_direct_tcpip 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_direct_tcpip - convenience macro for \fIlibssh2_channel_direct_tcpip_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_direct_tcpip(LIBSSH2_SESSION *session,
|
||||
const char *host, int port);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_direct_tcpip_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_direct_tcpip_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_direct_tcpip_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_direct_tcpip_ex(3)
|
||||
40
vendor/libssh2/docs/libssh2_channel_direct_tcpip_ex.3
vendored
Normal file
40
vendor/libssh2/docs/libssh2_channel_direct_tcpip_ex.3
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_direct_tcpip_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_direct_tcpip_ex - Tunnel a TCP connection through an SSH session
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session,
|
||||
const char *host, int port,
|
||||
const char *shost, int sport);
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_direct_tcpip(LIBSSH2_SESSION *session,
|
||||
const char *host, int port);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIsession\fP - Session instance as returned by
|
||||
.BR libssh2_session_init_ex(3)
|
||||
|
||||
\fIhost\fP - Third party host to connect to using the SSH host as a proxy.
|
||||
|
||||
\fIport\fP - Port on third party host to connect to.
|
||||
|
||||
\fIshost\fP - Host to tell the SSH server the connection originated on.
|
||||
|
||||
\fIsport\fP - Port to tell the SSH server the connection originated from.
|
||||
|
||||
Tunnel a TCP/IP connection through the SSH transport via the remote host to
|
||||
a third party. Communication from the client to the SSH server remains
|
||||
encrypted, communication from the server to the 3rd party host travels
|
||||
in cleartext.
|
||||
.SH RETURN VALUE
|
||||
Pointer to a newly allocated LIBSSH2_CHANNEL instance, or NULL on errors.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_session_init_ex(3)
|
||||
21
vendor/libssh2/docs/libssh2_channel_eof.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_eof.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_eof - check a channel's EOF status
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_eof(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - active channel stream to set closed status on.
|
||||
|
||||
Check if the remote host has sent an EOF status for the selected stream.
|
||||
.SH RETURN VALUE
|
||||
Returns 1 if the remote host has sent EOF, otherwise 0. Negative on
|
||||
failure.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_close(3)
|
||||
21
vendor/libssh2/docs/libssh2_channel_exec.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_exec.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_exec 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_exec - convenience macro for \fIlibssh2_channel_process_startup(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_exec(LIBSSH2_CHANNEL *channel, const char *command);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_process_startup(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_process_startup(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_process_startup(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_process_startup(3)
|
||||
21
vendor/libssh2/docs/libssh2_channel_flush.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_flush.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_flush 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_flush - convenience macro for \fIlibssh2_channel_flush_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_flush(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_flush_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_flush_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_flush_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_flush_ex(3)
|
||||
34
vendor/libssh2/docs/libssh2_channel_flush_ex.3
vendored
Normal file
34
vendor/libssh2/docs/libssh2_channel_flush_ex.3
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_flush_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_flush_ex - flush a channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel, int streamid);
|
||||
|
||||
int
|
||||
libssh2_channel_flush(LIBSSH2_CHANNEL *channel);
|
||||
|
||||
int
|
||||
libssh2_channel_flush_stderr(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Active channel stream to flush.
|
||||
|
||||
\fIstreamid\fP - Specific substream number to flush. Groups of substreams may
|
||||
be flushed by passing on of the following Constants.
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA\fP: Flush all extended data substreams
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_FLUSH_ALL\fP: Flush all substreams
|
||||
|
||||
Flush the read buffer for a given channel instance. Individual substreams may
|
||||
be flushed by number or using one of the provided macros.
|
||||
.SH RETURN VALUE
|
||||
Return the number of bytes flushed or negative on failure.
|
||||
It returns LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
21
vendor/libssh2/docs/libssh2_channel_flush_stderr.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_flush_stderr.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_flush_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_flush_stderr - convenience macro for \fIlibssh2_channel_flush_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_flush_stderr(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_flush_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_flush_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_flush_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_flush_ex(3)
|
||||
23
vendor/libssh2/docs/libssh2_channel_forward_accept.3
vendored
Normal file
23
vendor/libssh2/docs/libssh2_channel_forward_accept.3
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_forward_accept 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_forward_accept - accept a queued connection
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIlistener\fP is a forwarding listener instance as returned by
|
||||
\fBlibssh2_channel_forward_listen_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
A newly allocated channel instance or NULL on failure.
|
||||
.SH ERRORS
|
||||
When this function returns NULL use \fIlibssh2_session_last_errno(3)\fP to
|
||||
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
|
||||
.BR libssh2_channel_forward_listen_ex(3)
|
||||
28
vendor/libssh2/docs/libssh2_channel_forward_cancel.3
vendored
Normal file
28
vendor/libssh2/docs/libssh2_channel_forward_cancel.3
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_forward_cancel 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_forward_cancel - cancel a forwarded TCP port
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIlistener\fP - Forwarding listener instance as returned by
|
||||
.BR libssh2_channel_forward_listen_ex(3)
|
||||
|
||||
Instruct the remote host to stop listening for new connections on a previously
|
||||
requested host/port.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_forward_listen_ex(3)
|
||||
21
vendor/libssh2/docs/libssh2_channel_forward_listen.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_forward_listen.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_forward_listen 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_forward_listen - convenience macro for \fIlibssh2_channel_forward_listen_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_forward_listen(LIBSSH2_SESSION *session, int port);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_forward_listen_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_forward_listen_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_forward_listen_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_forward_listen_ex(3)
|
||||
51
vendor/libssh2/docs/libssh2_channel_forward_listen_ex.3
vendored
Normal file
51
vendor/libssh2/docs/libssh2_channel_forward_listen_ex.3
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_forward_listen_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_forward_listen_ex - listen to inbound connections
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_LISTENER *
|
||||
libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session,
|
||||
char *host, int port,
|
||||
int *bound_port, int queue_maxsize);
|
||||
|
||||
LIBSSH2_LISTENER *
|
||||
libssh2_channel_forward_listen(LIBSSH2_SESSION *session, int port);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Instruct the remote SSH server to begin listening for inbound TCP/IP
|
||||
connections. New connections will be queued by the library until accepted by
|
||||
\fIlibssh2_channel_forward_accept(3)\fP.
|
||||
|
||||
\fIsession\fP - instance as returned by libssh2_session_init().
|
||||
|
||||
\fIhost\fP - specific address to bind to on the remote host. Binding to
|
||||
0.0.0.0 (default when NULL is passed) will bind to all available addresses.
|
||||
|
||||
\fIport\fP - port to bind to on the remote host. When 0 is passed, the remote
|
||||
host will select the first available dynamic port.
|
||||
|
||||
\fIbound_port\fP - Populated with the actual port bound on the remote
|
||||
host. Useful when requesting dynamic port numbers.
|
||||
|
||||
\fIqueue_maxsize\fP - Maximum number of pending connections to queue before
|
||||
rejecting further attempts.
|
||||
|
||||
\fIlibssh2_channel_forward_listen(3)\fP is a macro.
|
||||
.SH RETURN VALUE
|
||||
A newly allocated LIBSSH2_LISTENER instance or NULL on failure.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
|
||||
\fILIBSSH2_ERROR_PROTO\fP - An invalid SSH protocol response was received on the socket.
|
||||
|
||||
\fILIBSSH2_ERROR_REQUEST_DENIED\fP - The remote server refused the request.
|
||||
|
||||
\fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call would block.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_forward_accept(3)
|
||||
26
vendor/libssh2/docs/libssh2_channel_free.3
vendored
Normal file
26
vendor/libssh2/docs/libssh2_channel_free.3
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_free 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_free - free all resources associated with a channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_free(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Channel stream to free.
|
||||
|
||||
Release all resources associated with a channel stream. If the channel has
|
||||
not yet been closed with
|
||||
.BR libssh2_channel_close(3)
|
||||
, it will be called automatically so that the remote end may know that it
|
||||
can safely free its own resources.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_close(3)
|
||||
39
vendor/libssh2/docs/libssh2_channel_get_exit_signal.3
vendored
Normal file
39
vendor/libssh2/docs/libssh2_channel_get_exit_signal.3
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_get_exit_signal 3 "4 Oct 2010" "libssh2 1.2.8" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_get_exit_signal - get the remote exit signal
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#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);
|
||||
.fi
|
||||
.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.
|
||||
20
vendor/libssh2/docs/libssh2_channel_get_exit_status.3
vendored
Normal file
20
vendor/libssh2/docs/libssh2_channel_get_exit_status.3
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_get_exit_status 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_get_exit_status - get the remote exit code
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Closed channel stream to retrieve exit status from.
|
||||
|
||||
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
|
||||
available if the remote end has not yet set its status to closed.
|
||||
.SH RETURN VALUE
|
||||
Returns 0 on failure, otherwise the \fIExit Status\fP reported by remote host
|
||||
39
vendor/libssh2/docs/libssh2_channel_handle_extended_data.3
vendored
Normal file
39
vendor/libssh2/docs/libssh2_channel_handle_extended_data.3
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_handle_extended_data 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_handle_extended_data - set extended data handling mode
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
void
|
||||
libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel,
|
||||
int ignore_mode);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This function is \fBDEPRECATED\fP in 1.1.0. Use the
|
||||
\fIlibssh2_channel_handle_extended_data2(3)\fP function instead!
|
||||
|
||||
\fIchannel\fP - Active channel stream to change extended data handling on.
|
||||
|
||||
\fIignore_mode\fP - One of the three LIBSSH2_CHANNEL_EXTENDED_DATA_* Constants.
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL\fP: Queue extended data for eventual
|
||||
reading
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_EXTENDED_DATA_MERGE\fP: Treat extended data and ordinary
|
||||
data the same. Merge all substreams such that calls to
|
||||
\fIlibssh2_channel_read(3)\fP will pull from all substreams on a
|
||||
first-in/first-out basis.
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE\fP: Discard all extended data as it
|
||||
arrives.
|
||||
|
||||
Change how a channel deals with extended data packets. By default all extended
|
||||
data is queued until read by \fIlibssh2_channel_read_ex(3)\fP
|
||||
.SH RETURN VALUE
|
||||
None.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_handle_extended_data2(3)
|
||||
.BR libssh2_channel_read_ex(3)
|
||||
37
vendor/libssh2/docs/libssh2_channel_handle_extended_data2.3
vendored
Normal file
37
vendor/libssh2/docs/libssh2_channel_handle_extended_data2.3
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_handle_extended_data2 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_handle_extended_data2 - set extended data handling mode
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_handle_extended_data2(LIBSSH2_CHANNEL *channel,
|
||||
int ignore_mode);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Active channel stream to change extended data handling on.
|
||||
|
||||
\fIignore_mode\fP - One of the three LIBSSH2_CHANNEL_EXTENDED_DATA_* Constants.
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL\fP: Queue extended data for eventual
|
||||
reading
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_EXTENDED_DATA_MERGE\fP: Treat extended data and ordinary
|
||||
data the same. Merge all substreams such that calls to
|
||||
.BR libssh2_channel_read(3)
|
||||
will pull from all substreams on a first-in/first-out basis.
|
||||
.br
|
||||
\fBLIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE\fP: Discard all extended data as it
|
||||
arrives.
|
||||
|
||||
Change how a channel deals with extended data packets. By default all
|
||||
extended data is queued until read by
|
||||
.BR libssh2_channel_read_ex(3)
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or LIBSSH2_ERROR_EAGAIN when it would otherwise block.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_handle_extended_data(3)
|
||||
.BR libssh2_channel_read_ex(3)
|
||||
25
vendor/libssh2/docs/libssh2_channel_ignore_extended_data.3
vendored
Normal file
25
vendor/libssh2/docs/libssh2_channel_ignore_extended_data.3
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_ignore_extended_data 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_ignore_extended_data - convenience macro for \fIlibssh2_channel_handle_extended_data(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
void
|
||||
libssh2_channel_ignore_extended_data(LIBSSH2_CHANNEL *channel,
|
||||
int ignore_mode);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This function is \fBDEPRECATED\fP in 0.3.0. 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
|
||||
underlying function \fIlibssh2_channel_handle_extended_data(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_handle_extended_data(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_handle_extended_data(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_handle_extended_data(3)
|
||||
58
vendor/libssh2/docs/libssh2_channel_open_ex.3
vendored
Normal file
58
vendor/libssh2/docs/libssh2_channel_open_ex.3
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_open_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_open_ex - establish a generic session channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type,
|
||||
unsigned int channel_type_len,
|
||||
unsigned int window_size,
|
||||
unsigned int packet_size,
|
||||
const char *message, unsigned int message_len);
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_open_session(session);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIsession\fP - Session instance as returned by
|
||||
.BR libssh2_session_init_ex(3)
|
||||
|
||||
\fIchannel_type\fP - Channel type to open. Typically one of session,
|
||||
direct-tcpip, or tcpip-forward. The SSH2 protocol allowed for additional
|
||||
types including local, custom channel types.
|
||||
|
||||
\fIchannel_type_len\fP - Length of channel_type
|
||||
|
||||
\fIwindow_size\fP - Maximum amount of unacknowledged data remote host is
|
||||
allowed to send before receiving an SSH_MSG_CHANNEL_WINDOW_ADJUST packet.
|
||||
|
||||
\fIpacket_size\fP - Maximum number of bytes remote host is allowed to send
|
||||
in a single SSH_MSG_CHANNEL_DATA or SSG_MSG_CHANNEL_EXTENDED_DATA packet.
|
||||
|
||||
\fImessage\fP - Additional data as required by the selected channel_type.
|
||||
|
||||
\fImessage_len\fP - Length of message parameter.
|
||||
|
||||
Allocate a new channel for exchanging data with the server. This method is
|
||||
typically called through its macroized form:
|
||||
.BR libssh2_channel_open_session(3)
|
||||
or via
|
||||
.BR libssh2_channel_direct_tcpip(3)
|
||||
or
|
||||
.BR libssh2_channel_forward_listen(3)
|
||||
.SH RETURN VALUE
|
||||
Pointer to a newly allocated LIBSSH2_CHANNEL instance, or NULL on errors.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
|
||||
\fILIBSSH2_ERROR_CHANNEL_FAILURE\fP -
|
||||
|
||||
\fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call would block.
|
||||
.SH SEE ALSO
|
||||
Add related functions
|
||||
21
vendor/libssh2/docs/libssh2_channel_open_session.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_open_session.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_open_session 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_open_session - convenience macro for \fIlibssh2_channel_open_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
LIBSSH2_CHANNEL *
|
||||
libssh2_channel_open_session(LIBSSH2_SESSION *session);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_open_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_open_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_open_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
42
vendor/libssh2/docs/libssh2_channel_process_startup.3
vendored
Normal file
42
vendor/libssh2/docs/libssh2_channel_process_startup.3
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_process_startup 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_process_startup - request a shell on a channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel,
|
||||
const char *request,
|
||||
unsigned int request_len,
|
||||
const char *message,
|
||||
unsigned int message_len);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Active session channel instance.
|
||||
|
||||
\fIrequest\fP - Type of process to startup. The SSH2 protocol currently
|
||||
defines shell, exec, and subsystem as standard process services.
|
||||
|
||||
\fIrequest_len\fP - Length of request parameter.
|
||||
|
||||
\fImessage\fP - Request specific message data to include.
|
||||
|
||||
\fImessage_len\fP - Length of message parameter.
|
||||
|
||||
Initiate a request on a session type channel such as returned by
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
|
||||
\fILIBSSH2_ERROR_CHANNEL_REQUEST_DENIED\fP -
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
22
vendor/libssh2/docs/libssh2_channel_read.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_channel_read.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_read 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_read - convenience macro for \fIlibssh2_channel_read_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
ssize_t
|
||||
libssh2_channel_read(LIBSSH2_CHANNEL *channel,
|
||||
char *buf, size_t buflen);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_read_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_read_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_read_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_read_ex(3)
|
||||
50
vendor/libssh2/docs/libssh2_channel_read_ex.3
vendored
Normal file
50
vendor/libssh2/docs/libssh2_channel_read_ex.3
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_read_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_read_ex - read data from a channel stream
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
ssize_t
|
||||
libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel, int stream_id,
|
||||
char *buf, size_t buflen);
|
||||
|
||||
ssize_t
|
||||
libssh2_channel_read(LIBSSH2_CHANNEL *channel,
|
||||
char *buf, size_t buflen);
|
||||
|
||||
ssize_t
|
||||
libssh2_channel_read_stderr(LIBSSH2_CHANNEL *channel,
|
||||
char *buf, size_t buflen);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Attempt to read data from an active 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 identified by the selected \fIstream_id\fP. The SSH2 protocol
|
||||
currently defines a stream ID of 1 to be the stderr substream.
|
||||
|
||||
\fIchannel\fP - active channel stream to read from.
|
||||
|
||||
\fIstream_id\fP - substream ID number (e.g. 0 or SSH_EXTENDED_DATA_STDERR)
|
||||
|
||||
\fIbuf\fP - pointer to storage buffer to read data into
|
||||
|
||||
\fIbuflen\fP - size of the buf storage
|
||||
|
||||
\fIlibssh2_channel_read(3)\fP and \fIlibssh2_channel_read_stderr(3)\fP are
|
||||
macros.
|
||||
.SH RETURN VALUE
|
||||
Actual number of bytes read or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
|
||||
Note that a return value of zero (0) can in fact be a legitimate value and
|
||||
only signals that no payload data was read. It is not an error.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
|
||||
\fILIBSSH2_ERROR_CHANNEL_CLOSED\fP - The channel has been closed.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_poll_channel_read(3)
|
||||
22
vendor/libssh2/docs/libssh2_channel_read_stderr.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_channel_read_stderr.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_read_stderr 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_read_stderr - convenience macro for \fIlibssh2_channel_read_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
ssize_t
|
||||
libssh2_channel_read_stderr(LIBSSH2_CHANNEL *channel,
|
||||
char *buf, size_t buflen);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_read_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_read_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_read_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_read_ex(3)
|
||||
32
vendor/libssh2/docs/libssh2_channel_receive_window_adjust.3
vendored
Normal file
32
vendor/libssh2/docs/libssh2_channel_receive_window_adjust.3
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_receive_window_adjust 3 "15 Mar 2009" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_receive_window_adjust - adjust the channel window
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
unsigned long
|
||||
libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL * channel,
|
||||
unsigned long adjustment,
|
||||
unsigned char force);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This function is \fBDEPRECATED\fP in 1.1.0. Use the
|
||||
\fIlibssh2_channel_receive_window_adjust2(3)\fP function instead!
|
||||
|
||||
Adjust the receive window for a channel by adjustment bytes. If the amount to
|
||||
be adjusted is less than LIBSSH2_CHANNEL_MINADJUST and force is 0 the
|
||||
adjustment amount will be queued for a later packet.
|
||||
.SH RETURN VALUE
|
||||
Returns the new size of the receive window (as understood by remote end). Note
|
||||
that the window value sent over the wire is strictly 32bit, but this API is
|
||||
made to return a 'long' which may not be 32 bit on all platforms.
|
||||
.SH ERRORS
|
||||
In 1.0 and earlier, this function returns LIBSSH2_ERROR_EAGAIN for
|
||||
non-blocking channels where it would otherwise block. However, that is a
|
||||
negative number and this function only returns an unsigned value and this then
|
||||
leads to a very strange value being returned.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_window_read_ex(3)
|
||||
30
vendor/libssh2/docs/libssh2_channel_receive_window_adjust2.3
vendored
Normal file
30
vendor/libssh2/docs/libssh2_channel_receive_window_adjust2.3
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_receive_window_adjust2 3 "26 Mar 2009" "libssh2 1.1" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_receive_window_adjust2 - adjust the channel window
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_receive_window_adjust2(LIBSSH2_CHANNEL * channel,
|
||||
unsigned long adjustment,
|
||||
unsigned char force,
|
||||
unsigned int *window);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Adjust the receive window for a channel by adjustment bytes. If the amount to
|
||||
be adjusted is less than LIBSSH2_CHANNEL_MINADJUST and force is 0 the
|
||||
adjustment amount will be queued for a later packet.
|
||||
|
||||
This function stores the new size of the receive window (as understood by
|
||||
remote end) in the variable 'window' points to.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success and a negative value on error. If used in non-blocking
|
||||
mode it will return LIBSSH2_ERROR_EAGAIN when it would otherwise block.
|
||||
.SH ERRORS
|
||||
.SH AVAILABILITY
|
||||
Added in libssh2 1.1 since the previous API has deficiencies.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_window_read_ex(3)
|
||||
24
vendor/libssh2/docs/libssh2_channel_request_auth_agent.3
vendored
Normal file
24
vendor/libssh2/docs/libssh2_channel_request_auth_agent.3
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_request_auth_agent 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_request_auth_agent - request agent forwarding for a session
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_request_auth_agent(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Request that agent forwarding be enabled for this SSH session. This sends the
|
||||
request over this specific channel, which causes the agent listener to be
|
||||
started on the remote side upon success. This agent listener will then run
|
||||
for the duration of the SSH session.
|
||||
|
||||
\fIchannel\fP - Previously opened channel instance such as returned by
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
21
vendor/libssh2/docs/libssh2_channel_request_pty.3
vendored
Normal file
21
vendor/libssh2/docs/libssh2_channel_request_pty.3
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_request_pty 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_request_pty - convenience macro for \fIlibssh2_channel_request_pty_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_request_pty(LIBSSH2_SESSION *session, const char *term);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_request_pty_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_request_pty_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_request_pty_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_request_pty_ex(3)
|
||||
54
vendor/libssh2/docs/libssh2_channel_request_pty_ex.3
vendored
Normal file
54
vendor/libssh2/docs/libssh2_channel_request_pty_ex.3
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_request_pty_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_request_pty_ex - short function description
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel, const char *term,
|
||||
unsigned int term_len,
|
||||
const char *modes, unsigned int modes_len,
|
||||
int width, int height,
|
||||
int width_px, int height_px);
|
||||
|
||||
int
|
||||
libssh2_channel_request_pty(LIBSSH2_CHANNEL *channel, const char *term);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Previously opened channel instance such as returned by
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
|
||||
\fIterm\fP - Terminal emulation (e.g. vt102, ansi, etc...)
|
||||
|
||||
\fIterm_len\fP - Length of term parameter
|
||||
|
||||
\fImodes\fP - Terminal mode modifier values
|
||||
|
||||
\fImodes_len\fP - Length of modes parameter.
|
||||
|
||||
\fIwidth\fP - Width of pty in characters
|
||||
|
||||
\fIheight\fP - Height of pty in characters
|
||||
|
||||
\fIwidth_px\fP - Width of pty in pixels
|
||||
|
||||
\fIheight_px\fP - Height of pty in pixels
|
||||
|
||||
Request a PTY on an established channel. Note that this does not make sense
|
||||
for all channel types and may be ignored by the server despite returning
|
||||
success.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
|
||||
\fILIBSSH2_ERROR_CHANNEL_REQUEST_DENIED\fP -
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
22
vendor/libssh2/docs/libssh2_channel_request_pty_size.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_channel_request_pty_size.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_request_pty_size 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_request_pty_size - convenience macro for \fIlibssh2_channel_request_pty_size_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_request_pty_size(LIBSSH2_CHANNEL *channel,
|
||||
int width, int height);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_request_pty_size_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_request_pty_size_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_request_pty_size_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_request_pty_size_ex(3)
|
||||
12
vendor/libssh2/docs/libssh2_channel_request_pty_size_ex.3
vendored
Normal file
12
vendor/libssh2/docs/libssh2_channel_request_pty_size_ex.3
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_request_pty_size_ex 3 "1 Jun 2007" "libssh2" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_request_pty_size_ex - TODO
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.SH RETURN VALUE
|
||||
.SH ERRORS
|
||||
.SH SEE ALSO
|
||||
24
vendor/libssh2/docs/libssh2_channel_send_eof.3
vendored
Normal file
24
vendor/libssh2/docs/libssh2_channel_send_eof.3
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_send_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_send_eof - send EOF to remote server
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Tell the remote host that no further data will be sent on the specified
|
||||
channel. Processes typically interpret this as a closed stdin descriptor.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_wait_eof(3)
|
||||
.BR libssh2_channel_eof(3)
|
||||
27
vendor/libssh2/docs/libssh2_channel_set_blocking.3
vendored
Normal file
27
vendor/libssh2/docs/libssh2_channel_set_blocking.3
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_set_blocking 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_set_blocking - set or clear blocking mode on channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
void
|
||||
libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel, int blocking);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - channel stream to set or clean blocking status on.
|
||||
|
||||
\fIblocking\fP - Set to a non-zero value to make the channel block, or zero to
|
||||
make it non-blocking.
|
||||
|
||||
Currently this is a short cut call to
|
||||
.BR libssh2_session_set_blocking(3)
|
||||
and therefore will affect the session and all channels.
|
||||
.SH RETURN VALUE
|
||||
None
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_session_set_blocking(3)
|
||||
.BR libssh2_channel_read_ex(3)
|
||||
.BR libssh2_channel_write_ex(3)
|
||||
22
vendor/libssh2/docs/libssh2_channel_setenv.3
vendored
Normal file
22
vendor/libssh2/docs/libssh2_channel_setenv.3
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_setenv 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_setenv - convenience macro for \fIlibssh2_channel_setenv_ex(3)\fP calls
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_setenv(LIBSSH2_CHANNEL *channel,
|
||||
const char *varname, const char *value);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
This is a macro defined in a public libssh2 header file that is using the
|
||||
underlying function \fIlibssh2_channel_setenv_ex(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
See \fIlibssh2_channel_setenv_ex(3)\fP
|
||||
.SH ERRORS
|
||||
See \fIlibssh2_channel_setenv_ex(3)\fP
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_setenv_ex(3)
|
||||
47
vendor/libssh2/docs/libssh2_channel_setenv_ex.3
vendored
Normal file
47
vendor/libssh2/docs/libssh2_channel_setenv_ex.3
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
.\" Copyright (C) The libssh2 project and its contributors.
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.TH libssh2_channel_setenv_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2"
|
||||
.SH NAME
|
||||
libssh2_channel_setenv_ex - set an environment variable on the channel
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <libssh2.h>
|
||||
|
||||
int
|
||||
libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel,
|
||||
char *varname, unsigned int varname_len,
|
||||
const char *value, unsigned int value_len);
|
||||
|
||||
int
|
||||
libssh2_channel_setenv(LIBSSH2_CHANNEL *channel,
|
||||
char *varname, const char *value);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fIchannel\fP - Previously opened channel instance such as returned by
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
|
||||
\fIvarname\fP - Name of environment variable to set on the remote
|
||||
channel instance.
|
||||
|
||||
\fIvarname_len\fP - Length of passed varname parameter.
|
||||
|
||||
\fIvalue\fP - Value to set varname to.
|
||||
|
||||
\fIvalue_len\fP - Length of value parameter.
|
||||
|
||||
Set an environment variable in the remote channel's process space. Note that
|
||||
this does not make sense for all channel types and may be ignored by the
|
||||
server despite returning success.
|
||||
.SH RETURN VALUE
|
||||
Return 0 on success or negative on failure. It returns
|
||||
LIBSSH2_ERROR_EAGAIN when it would otherwise block. While
|
||||
LIBSSH2_ERROR_EAGAIN is a negative number, it is not really a failure per se.
|
||||
|
||||
.SH ERRORS
|
||||
\fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed.
|
||||
|
||||
\fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket.
|
||||
|
||||
\fILIBSSH2_ERROR_CHANNEL_REQUEST_DENIED\fP -
|
||||
.SH SEE ALSO
|
||||
.BR libssh2_channel_open_ex(3)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user