From 534e5a9d3c9349f0d5d1e11fd399581d86d96654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Wed, 25 Sep 2024 00:20:30 +0200 Subject: [PATCH] Gracefully handle wrong capitalization of username --- app/controllers/web_key_directory_controller.rb | 2 +- spec/requests/web_key_directory_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/controllers/web_key_directory_controller.rb b/app/controllers/web_key_directory_controller.rb index 730fe1d..d25c899 100644 --- a/app/controllers/web_key_directory_controller.rb +++ b/app/controllers/web_key_directory_controller.rb @@ -3,7 +3,7 @@ class WebKeyDirectoryController < WellKnownController # /.well-known/openpgpkey/hu/:hashed_username(.txt) def show - @user = User.find_by(cn: params[:l]) + @user = User.find_by(cn: params[:l].downcase) if @user.nil? || @user.pgp_pubkey.empty? || diff --git a/spec/requests/web_key_directory_spec.rb b/spec/requests/web_key_directory_spec.rb index 627c89a..1d8f083 100644 --- a/spec/requests/web_key_directory_spec.rb +++ b/spec/requests/web_key_directory_spec.rb @@ -64,6 +64,15 @@ RSpec.describe "OpenPGP Web Key Directory", type: :request do expect(response.body).to eq(expected_binary_data) end + context "with wrong capitalization of username" do + it "returns the pubkey as ASCII Armor plain text" do + get "/.well-known/openpgpkey/hu/yuca4ky39mhwkjo78qb8zjgbfj1hg3yf?l=JimmY" + expect(response).to have_http_status(:ok) + expected_binary_data = File.binread("#{Rails.root}/spec/fixtures/files/pgp_key_valid_jimmy.pem") + expect(response.body).to eq(expected_binary_data) + end + end + context "with .txt extension" do it "returns the pubkey as ASCII Armor plain text" do get "/.well-known/openpgpkey/hu/yuca4ky39mhwkjo78qb8zjgbfj1hg3yf.txt?l=jimmy"