Re: encode/decode support for base64url - Mailing list pgsql-hackers

From David E. Wheeler
Subject Re: encode/decode support for base64url
Date
Msg-id 961242C4-01FE-473E-B7E1-B5AB0B6E3738@justatheory.com
Whole thread Raw
In response to Re: encode/decode support for base64url  (Florents Tselai <florents.tselai@gmail.com>)
List pgsql-hackers
On Jul 10, 2025, at 16:38, Florents Tselai <florents.tselai@gmail.com> wrote:

> Why isn’t this sufficient?
>
> static uint64
> pg_base64_encode_internal(const char *src, size_t len, char *dst, bool url)
> {
> const char *alphabet = url ? _base64url : _base64;

Ah, it is. I hadn’t got that far. I was tripped up to see this in your patch:

```patch
+static uint64
+pg_base64url_encode(const char *src, size_t len, char *dst)
+{
+    uint64 encoded_len;
+    if (len == 0)
+        return 0;
+
+    encoded_len = pg_base64_encode(src, len, dst);
+
+    /* Convert Base64 to Base64URL */
+    for (uint64 i = 0; i < encoded_len; i++) {
+        if (dst[i] == '+')
+            dst[i] = '-';
+        else if (dst[i] == '/')
+            dst[i] = '_';
+    }
+
+    /* Trim '=' padding */
+    while (encoded_len > 0 && dst[encoded_len - 1] == '=')
+        encoded_len--;
+
+    return encoded_len;
+}
```

I didn’t realize it was a set of patches for stuff you did and then later undid. Could you flatten the patch into just
what’schanged at the end? 

Best,

David



Attachment

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: 18beta2 next week
Next
From: Andres Freund
Date:
Subject: Re: Some ExecSeqScan optimizations