Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85648376
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/test/mystery.key b/test/mystery.key
new file mode 100644
index 0000000..ecb3e4b
--- /dev/null
+++ b/test/mystery.key
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnGb42rPZIapY4Hfhxrgn
+xKVJczBkfDviCrrYaYjfGxawSw93dWTUlenCVTymJo8meBlFgIQ70ar4rUbzl6GX
+MYvRdku072d1WpglNHXkjKPkXQgngFDrh2sGKtNB/cEtJcAPRO8OiCgPFqRtMiNM
+c8VdPfPdZuHEIZsJ/aUM38EnqHi9YnVDQik2xxDe3wPghOhqjxUM6eLC9jrjI+7i
+aIaEygUdyst9qVg8e2FGQlwAeS2Eh8ygCxn+bBlT5OyV59jSzbYfbhtF2qnWHtZy
+kL7KOOwhIfGs7O9SoR2ZVpTEQ4HthNzainIe/6iCR5HGrao/T8dygweXFYRv+k5A
+PQIDAQAB
+-----END PUBLIC KEY-----
diff --git a/test/real_world_signatures_test.exs b/test/real_world_signatures_test.exs
new file mode 100644
index 0000000..fd82371
--- /dev/null
+++ b/test/real_world_signatures_test.exs
@@ -0,0 +1,150 @@
+# Pleroma: A lightweight social networking server
+# SPDX-FileCopyrightText: 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: LGPL-3.0-only
+
+defmodule HTTPSignatures.RealWorldSignaturesTest do
+ use ExUnit.Case
+
+ defp public_key(filename) do
+ "test/#{filename}"
+ |> File.read!()
+ |> :public_key.pem_decode()
+ |> hd()
+ |> :public_key.pem_entry_decode()
+ end
+
+ defp signed_conn(signature, request_target, headers) do
+ %{
+ req_headers: [
+ {"signature", signature},
+ {"(request-target)", request_target} | headers
+ ]
+ }
+ end
+
+ describe "Akkoma-collected real-world fixtures" do
+ test "validates mystery key fixture" do
+ conn =
+ signed_conn(
+ "keyId=\"http://example.org/mystery/key\",algorithm=\"rsa-sha256\",headers=\"(request-target) user-agent host date digest content-type\",signature=\"i0FQvr51sj9BoWAKydySUAO1RDxZmNY6g7M62IA7VesbRSdFZZj9/fZapLp6YSuvxUF0h80ZcBEq9GzUDY3Chi9lx6yjpUAS2eKb+Am/hY3aswhnAfYd6FmIdEHzsMrpdKIRqO+rpQ2tR05LwiGEHJPGS0p528NvyVxrxMT5H5yZS5RnxY5X2HmTKEgKYYcvujdv7JWvsfH88xeRS7Jlq5aDZkmXvqoR4wFyfgnwJMPLel8P/BUbn8BcXglH/cunR0LUP7sflTxEz+Rv5qg+9yB8zgBsB4C0233WpcJxjeD6Dkq0EcoJObBR56F8dcb7NQtUDu7x6xxzcgSd7dHm5w==\"",
+ "post /users/demiurge/inbox",
+ [
+ {"host", "localtesting.pleroma.lol"},
+ {"connection", "close"},
+ {"content-length", "2316"},
+ {"user-agent", "http.rb/2.2.2 (Mastodon/2.1.0.rc3; +http://mastodon.example.org/)"},
+ {"date", "Sun, 10 Dec 2017 14:23:49 GMT"},
+ {"digest", "SHA-256=x/bHADMW8qRrq2NdPb5P9fl0lYpKXXpe5h5maCIL0nM="},
+ {"content-type", "application/activity+json"}
+ ]
+ )
+
+ assert HTTPSignatures.validate_conn(conn, public_key("mystery.key"))
+ end
+
+ test "validates Mastodon admin fixture" do
+ conn =
+ signed_conn(
+ "keyId=\"http://mastodon.example.org/users/admin#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) user-agent host date digest content-type\",signature=\"qXKqpQXUpC3d9bZi2ioEeAqP8nRMD021CzH1h6/w+LRk4Hj31ARJHDwQM+QwHltwaLDUepshMfz2WHSXAoLmzWtvv7xRwY+mRqe+NGk1GhxVZ/LSrO/Vp7rYfDpfdVtkn36LU7/Bzwxvvaa4ZWYltbFsRBL0oUrqsfmJFswNCQIG01BB52BAhGSCORHKtQyzo1IZHdxl8y80pzp/+FOK2SmHkqWkP9QbaU1qTZzckL01+7M5btMW48xs9zurEqC2sM5gdWMQSZyL6isTV5tmkTZrY8gUFPBJQZgihK44v3qgfWojYaOwM8ATpiv7NG8wKN/IX7clDLRMA8xqKRCOKw==\"",
+ "post /users/demiurge/inbox",
+ [
+ {"host", "localtesting.pleroma.lol"},
+ {"x-forwarded-for", "127.0.0.1"},
+ {"connection", "close"},
+ {"content-length", "2307"},
+ {"user-agent", "http.rb/2.2.2 (Mastodon/2.1.0.rc3; +http://mastodon.example.org/)"},
+ {"date", "Sun, 11 Feb 2018 17:12:01 GMT"},
+ {"digest", "SHA-256=UXsAnMtR9c7mi1FOf6HRMtPgGI1yi2e9nqB/j4rZ99I="},
+ {"content-type", "application/activity+json"}
+ ]
+ )
+
+ assert HTTPSignatures.validate_conn(conn, public_key("admin@mastodon.example.org.key"))
+ end
+
+ test "validates first niu.moe fixture" do
+ conn =
+ signed_conn(
+ "keyId=\"https://niu.moe/users/rye#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) user-agent host date digest content-type\",signature=\"wtxDg4kIpW7nsnUcVJhBk6SgJeDZOocr8yjsnpDRqE52lR47SH6X7G16r7L1AUJdlnbfx7oqcvomoIJoHB3ghP6kRnZW6MyTMZ2jPoi3g0iC5RDqv6oAmDSO14iw6U+cqZbb3P/odS5LkbThF0UNXcfenVNfsKosIJycFjhNQc54IPCDXYq/7SArEKJp8XwEgzmiC2MdxlkVIUSTQYfjM4EG533cwlZocw1mw72e5mm/owTa80BUZAr0OOuhoWARJV9btMb02ZyAF6SCSoGPTA37wHyfM1Dk88NHf7Z0Aov/Fl65dpRM+XyoxdkpkrhDfH9qAx4iuV2VEWddQDiXHA==\"",
+ "post /inbox",
+ [
+ {"x-forwarded-for", "149.202.73.191"},
+ {"host", "testing.pleroma.lol"},
+ {"x-cluster-client-ip", "149.202.73.191"},
+ {"connection", "upgrade"},
+ {"content-length", "2396"},
+ {"user-agent", "http.rb/3.0.0 (Mastodon/2.2.0; +https://niu.moe/)"},
+ {"date", "Sun, 18 Feb 2018 20:31:51 GMT"},
+ {"digest", "SHA-256=dzH+vLyhxxALoe9RJdMl4hbEV9bGAZnSfddHQzeidTU="},
+ {"content-type", "application/activity+json"}
+ ]
+ )
+
+ assert HTTPSignatures.validate_conn(conn, public_key("rye@niu.moe.key"))
+ end
+
+ test "validates second niu.moe fixture" do
+ conn =
+ signed_conn(
+ "keyId=\"https://niu.moe/users/rye#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) user-agent host date digest content-type\",signature=\"IN6fHD8pLiDEf35dOaRHzJKc1wBYh3/Yq0ItaNGxUSbJTd2xMjigZbcsVKzvgYYjglDDN+disGNeD+OBKwMqkXWaWe/lyMc9wHvCH5NMhpn/A7qGLY8yToSt4vh8ytSkZKO6B97yC+Nvy6Fz/yMbvKtFycIvSXCq417cMmY6f/aG+rtMUlTbKO5gXzC7SUgGJCtBPCh1xZzu5/w0pdqdjO46ePNeR6JyJSLLV4hfo3+p2n7SRraxM4ePVCUZqhwS9LPt3Zdhy3ut+IXCZgMVIZggQFM+zXLtcXY5HgFCsFQr5WQDu+YkhWciNWtKFnWfAsnsg5sC330lZ/0Z8Z91yA==\"",
+ "post /inbox",
+ [
+ {"x-forwarded-for", "149.202.73.191"},
+ {"host", "testing.pleroma.lol"},
+ {"x-cluster-client-ip", "149.202.73.191"},
+ {"connection", "upgrade"},
+ {"content-length", "2342"},
+ {"user-agent", "http.rb/3.0.0 (Mastodon/2.2.0; +https://niu.moe/)"},
+ {"date", "Sun, 18 Feb 2018 21:44:46 GMT"},
+ {"digest", "SHA-256=vS8uDOJlyAu78cF3k5EzrvaU9iilHCX3chP37gs5sS8="},
+ {"content-type", "application/activity+json"}
+ ]
+ )
+
+ assert HTTPSignatures.validate_conn(conn, public_key("rye@niu.moe.key"))
+ end
+
+ test "validates Bridgy Fed fixture" do
+ conn =
+ signed_conn(
+ ~s|keyId="https://fed.brid.gy/snarfed.org#key",algorithm="rsa-sha256",signature="pezDShRpsN8sErE5xOPWh4iJOzi2nz7IcwxtCYEQ3KfqezkQIGFb9lxCwgUZDUdueX6R/eUXGJ5S5GdzjEMbs90iIzaqvN2fRmhs3VHgd7Y1O8bMJGfkOz5i6JllyPMgfFT9937147ATmGTmo7h4NhE5XgQ6VwNijNuBhLGOZsCLYqldpuyGuHXyLOmGHsIL/tBf0LBKPMyE6S70hEmh6Zx7nQeW5Kt9CTZIxnSbeFrg2HMiMaFRM5gWtPTH5N6Jr6SGal/vXT9VrN1wjwZI83y45aHmpnU7VImSWGWyXxcveHvspXtDciWAPNU8ng6aglYVgWrLaQz70ApRb10fXg==",headers="date host digest (request-target)"|,
+ "post /users/Oneric/inbox",
+ [
+ {"user-agent", "Bridgy Fed (https://fed.brid.gy/)"},
+ {"date", "Mon, 15 Jul 2024 04:35:16 GMT"},
+ {"host", "akko.wtf"},
+ {"content-type",
+ "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""},
+ {"digest", "SHA-256=aD6VWn+4CUs5hBeEjAiSdRjga/h5Qnub0gLVSqSosSk="}
+ ]
+ )
+
+ assert HTTPSignatures.validate_conn(conn, public_key("snarfed@fed.brid.gy.key"))
+ end
+
+ test "validates mst3k interlinked fixture" do
+ conn =
+ signed_conn(
+ "keyId=\"https://mst3k.interlinked.me/users/luciferMysticus#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) user-agent host date digest content-type\",signature=\"CTYdK5a6lYMxzmqjLOpvRRASoxo2Rqib2VrAvbR5HaTn80kiImj15pCpAyx8IZp53s0Fn/y8MjCTzp+absw8kxx0k2sQAXYs2iy6xhdDUe7iGzz+XLAEqLyZIZfecynaU2nb3Z2XnFDjhGjR1vj/JP7wiXpwp6o1dpDZj+KT2vxHtXuB9585V+sOHLwSB1cGDbAgTy0jx/2az2EGIKK2zkw1KJuAZm0DDMSZalp/30P8dl3qz7DV2EHdDNfaVtrs5BfbDOZ7t1hCcASllzAzgVGFl0BsrkzBfRMeUMRucr111ZG+c0BNOEtJYOHSyZsSSdNknElggCJekONYMYk5ZA==\"",
+ "post /inbox",
+ [
+ {"host", "soc.canned-death.us"},
+ {"user-agent", "http.rb/3.0.0 (Mastodon/2.2.0; +https://mst3k.interlinked.me/)"},
+ {"date", "Sun, 11 Mar 2018 12:19:36 GMT"},
+ {"digest", "SHA-256=V7Hl6qDK2m8WzNsjzNYSBISi9VoIXLFlyjF/a5o1SOc="},
+ {"content-type", "application/activity+json"},
+ {"x-forwarded-for", "2607:5300:203:2899::31:1337"},
+ {"x-forwarded-host", "soc.canned-death.us"},
+ {"x-forwarded-server", "soc.canned-death.us"},
+ {"connection", "Keep-Alive"},
+ {"content-length", "2006"}
+ ]
+ )
+
+ assert HTTPSignatures.validate_conn(
+ conn,
+ public_key("lucifermysticus@mst3k.interlinked.me.key")
+ )
+ end
+ end
+end
diff --git a/test/snarfed@fed.brid.gy.key b/test/snarfed@fed.brid.gy.key
new file mode 100644
index 0000000..56c8999
--- /dev/null
+++ b/test/snarfed@fed.brid.gy.key
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxi54qQrNQOcOnUftXBQm
+9BJoSCTOF6ffbVL+zXkEgktubVy5XD1Hli07CgvpDBz9jlKJNp1BJ2G0lpn0QBtW
+YvViPwlsgB1tsheChL3KtWTrnNl01+2lbYD2kgdTDXc/j/1BkL7ootHulE8jdjfK
+dNUUFoTmzF/5wgueNYMWNnWVSzGUVGyDo6TPYV6tmso3QRi0Cr5Sk28VqJ49oT5K
+bCv4eMrGJifbmVK4fhuTndQWeq1919pxnUByP5rsOBoj9b3YshygiWQAjaqV8W7W
++kfybE4dGx4Cyj02HcgPlhgGexhSWo6Fpe9IvZGrKquql+kLyWRXvW5eQhb+l4bx
+lwIDAQAB
+-----END PUBLIC KEY-----
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, Aug 28, 9:32 AM (2 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1734393
Default Alt Text
(9 KB)
Attached To
Mode
R18 http_signatures
Attached
Detach File
Event Timeline
Log In to Comment