Introduction

I’m thrilled to share that I’ve been selected for Google Summer of Code (GSoC) 2025, and I will be contributing to the libssh organization! In this blog, I want to share my path to GSoC, my project details, and what lies ahead.


How It All Began

Like many others in the open-source community, I started by exploring projects that aligned with my interests. I’ve always been passionate about security, networking, and low-level systems programming. When I stumbled upon libssh — a C library implementing the SSH protocol — I knew I had found something exciting.

I started reading the codebase, exploring existing issues, and interacting with the community on their matrix channel. Although I was initially intimidated by such a huge codebase, I tried to focus only on the relevant parts for each issue that I was working on. This way, I was able to understand parts of the codebase slowly and managed to make several contributions to libssh which can be found here.


My Project: FIDO Support in libssh

The goal of my project is to add support for FIDO/U2F keys on the client side of libssh using the libfido2 library. FIDO (Fast IDentity Online) keys offer hardware-based two-factor and passwordless authentication, which is gaining traction in modern secure systems.

This project involves:

  • Parsing and handling FIDO public key types (e.g., sk-ecdsa-sha2-nistp256@openssh.com)
  • Verifying signatures using the libfido2 API
  • Adding necessary key parsing, serialization, and signature verification logic
  • Maintaining compatibility with existing OpenSSH-style FIDO key formats
  • Writing comprehensive unit tests and documentation

Why This Matters

SSH is ubiquitous in secure remote communications, and libssh is used in several production-grade applications. By enabling FIDO support, we’re:

  • Enhancing user security with phishing-resistant keys
  • Aligning libssh with modern authentication trends
  • Enabling developers to use hardware-backed keys for SSH communication

The Road Ahead

The coding period will span 12 weeks, and my milestones are structured as follows:

  1. Community Bonding – Deep dive into libssh’s internals, get feedback from mentors
  2. Phase 1 – Implement FIDO key loading and serialization
  3. Phase 2 – Add signature verification and user interaction logic via libfido2
  4. Final Phase – Write tests, polish the implementation, and get merged!

Throughout this period, I’ll be regularly blogging and documenting my progress. I hope these posts will help others looking to get into open source or curious about SSH internals.


Gratitude

I am incredibly thankful to my mentors from libssh for believing in my proposal, and to Google for this wonderful platform. I also thank my peers and seniors at SDSLabs and IIT Roorkee who guided me throughout the application process.