From: | Florents Tselai <florents(dot)tselai(at)gmail(dot)com> |
---|---|
To: | Aleksander Alekseev <aleksander(at)timescale(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Przemysław Sztoch <przemyslaw(at)sztoch(dot)pl>, Daniel Gustafsson <daniel(at)yesql(dot)se> |
Subject: | Re: encode/decode support for base64url |
Date: | 2025-03-08 22:27:42 |
Message-ID: | 2A234F6B-E7F8-443B-A2D6-FF31C4A29D9C@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On 7 Mar 2025, at 4:40 PM, Aleksander Alekseev <aleksander(at)timescale(dot)com> wrote:
>
> Hi,
>
>>> Sometimes support for base64url from RFC 4648 would be useful.
>>> Does anyone else need a patch like this?
>>
>> While not a frequent ask, it has been mentioned in the past. I think it would
>> make sense to add so please do submit a patch for it for consideration.
>
> IMO it would be nice to have.
>
> Would you like to submit such a patch or are you merely suggesting an
> idea for others to implement?
>
> --
> Best regards,
> Aleksander Alekseev
>
>
Just to confirm:
In a plan SQL flavor, we’re talking about something like this, correct?
CREATE FUNCTION base64url_encode(input bytea) RETURNS text AS $$
SELECT regexp_replace(
replace(replace(encode(input, 'base64'), '+', '-'), '/', '_'),
'=+$', '', 'g'
);
$$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION base64url_decode(input text) RETURNS bytea AS $$
SELECT decode(
rpad(replace(replace(input, '-', '+'), '_', '/'), (length(input) + 3) & ~3, '='),
'base64'
);
$$ LANGUAGE sql IMMUTABLE;
With minimal testing, this yields the same results with https://base64.guru/standards/base64url/encode
select base64url_encode('post+gres')
base64url_encode
------------------
cG9zdCtncmVz
(1 row)
From | Date | Subject | |
---|---|---|---|
Next Message | Tomas Vondra | 2025-03-08 22:48:22 | Re: strange valgrind reports about wrapper_handler on 64-bit arm |
Previous Message | Tom Lane | 2025-03-08 22:26:40 | Re: pg16 && GSSAPI && Heimdal/Macos |