Class: Fediverse::Signature::Rfc9421
- Inherits:
-
Object
- Object
- Fediverse::Signature::Rfc9421
- Defined in:
- lib/fediverse/signature/rfc9421.rb
Class Method Summary collapse
Class Method Details
.sign(sender:, request:) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fediverse/signature/rfc9421.rb', line 11 def sign(sender:, request:) request.headers['Content-Digest'] = digest(request.body) if request.body Linzer.sign!( request, key: linzer_private_key(sender), components: components(request), params: { created: Time.now.to_i, alg: 'rsa-v1_5-sha256', } ) request end |
.verify!(request:) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fediverse/signature/rfc9421.rb', line 25 def verify!(request:) # Do we have a signature to verify? return false if !request.headers.key?('Signature-Input') || !request.headers.key?('Signature') # Verify the signature Linzer.verify!(request) do |key_id| sender = Fedipub::Actor.find_or_create_by_federation_url(key_id.split('#', 2).first) raise Fediverse::Signature::BadSignature if sender.nil? linzer_public_key(sender) end rescue Linzer::Error raise Fediverse::Signature::BadSignature end |