An open API service indexing awesome lists of open source software.

https://github.com/robinrodricks/fluentftp.gnutls

Premiere .NET wrapper for GnuTLS along with integration into FluentFTP
https://github.com/robinrodricks/fluentftp.gnutls

Last synced: about 1 year ago
JSON representation

Premiere .NET wrapper for GnuTLS along with integration into FluentFTP

Awesome Lists containing this project

README

          

![FluentFTP](https://raw.githubusercontent.com/robinrodricks/FluentFTP.GnuTLS/main/.github/logo.png)

[![Version](https://img.shields.io/nuget/vpre/FluentFTP.GnuTLS.svg)](https://www.nuget.org/packages/FluentFTP.GnuTLS)
[![Downloads](https://img.shields.io/nuget/dt/FluentFTP.GnuTLS.svg)](https://www.nuget.org/packages/FluentFTP.GnuTLS)
[![GitHub contributors](https://img.shields.io/github/contributors/robinrodricks/FluentFTP.GnuTLS.svg)](https://github.com/robinrodricks/FluentFTP.GnuTLS/graphs/contributors)
[![License](https://img.shields.io/github/license/robinrodricks/FluentFTP.GnuTLS.svg)](https://github.com/robinrodricks/FluentFTP.GnuTLS/blob/master/LICENSE)

Premiere .NET wrapper for GnuTLS that provides streams to integrate with FluentFTP.

## Package
Published as [FluentFTP.GnuTLS](https://www.nuget.org/packages/FluentFTP.GnuTLS).

## Docs
See [FluentFTP Wiki](https://github.com/robinrodricks/FluentFTP/wiki/FTPS-Connection-using-GnuTLS).

## Developer Setup

According to the GnuTLS LGPL license, you need to be able to obtain the
source code of the original GnuTLS library or the source code of any derivate
or modification of the GnuTLS library.

The `FluentFTP.GnuTLS` wrapper uses the ORIGINAL unmodified GnuTLS library as a `.dll`
that is dynamically linked.

As of this writing, the GnuTLS library version needed is 3.8.0.

This guide is for building GnuTLS-30.dll and its dependencies from their respective
original official source.

### 1. Setup and use a fresh install of WSL2 using Debian Bullseye (Debian 11)

Read up on how to export, import, de-register and download WSL2 images for use on your
Windows PC.

Do NOT use an existing Debian 11 image. Export it in order to save it and install a fresh one.

### 2. Preparation

Perform the following steps in WSL2(Debian 11), work as root or use sudo appropriately:

Perform this once:

> mkdir mkgnutls && cd mkgnutls

> apt-get install wget git subversion gettext lzip automake autoconf autogen autopoint \
libtool make colormake pkg-config wx-common mingw-w64 mingw-w64-tools

> mkdir sources && mkdir builds && mkdir builds/gnutls && mkdir builds/gnutls/client64

### 3. Building

In order to download the sources, build and install these libraries, use the scripts in the `Libs/Build` folder.

- libgmp: ``run step1.sh``
- libnettle: ``run step2.sh``
- libgnutls: ``run step3.sh``

### 4. Optionally strip symbols from `.dll`

- ``run step4.sh``

### 5. Finalize

You will find the compiled binary files in the folder `mkgnutls/builds/gnutls/client64/bin`:

- `libgmp-10.dll`
- `libnettle-8.dll`
- `libhogweed-6.dll`
- `libgnutls-30.dll`
- `libgcc_s_seh-1.dll` (part of the `mingw-w64` toolchain)
- `libwinpthread-1.dll` (part of the `mingw-w64` toolchain)

### 6. Build FluentFTP.GnuTLS

Use Visual Studio to build `FluentFTP.GnuTLS`, which will include the Windows DLLs and Linux binaries in the package.