Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F12554243
digest_plug.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
881 B
Referenced Files
None
Subscribers
None
digest_plug.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.Plugs.DigestPlug
do
alias
Plug.Conn
require
Logger
def
read_body
(
conn
,
opts
)
do
digest_algorithm
=
with
[
digest_header
]
<-
Conn
.
get_req_header
(
conn
,
"digest"
)
do
digest_header
|>
String
.
split
(
"="
,
parts
:
2
)
|>
List
.
first
()
else
_
->
"SHA-256"
end
unless
String
.
downcase
(
digest_algorithm
)
==
"sha-256"
do
raise
ArgumentError
,
message
:
"invalid value for digest algorithm, got:
#{
digest_algorithm
}
"
end
{
:ok
,
body
,
conn
}
=
Conn
.
read_body
(
conn
,
opts
)
encoded_digest
=
:crypto
.
hash
(
:sha256
,
body
)
|>
Base
.
encode64
()
{
:ok
,
body
,
Conn
.
assign
(
conn
,
:digest
,
"
#{
digest_algorithm
}
=
#{
encoded_digest
}
"
)}
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sat, Nov 15, 3:14 AM (1 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
633144
Default Alt Text
digest_plug.ex (881 B)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment