summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorojacobson <ojacobson@noreply.codeberg.org>2025-10-28 20:12:08 +0100
committerojacobson <ojacobson@noreply.codeberg.org>2025-10-28 20:12:08 +0100
commitf866e480447746ce4958e5475d3c9e407812231f (patch)
treefc97b7aa36a20a5af58a692e814cbd9fea0348cc /src/boot
parent4a91792e023a5877f8ac9b8a352e99c4486d698f (diff)
parent11f4f36a689b6447c9898a2840418e581cb3eb11 (diff)
Use PKCS8 PEM, not raw SEC1 bytes, to store VAPID keys.
The `web-push` crate's VAPID signing support requires a private key. The `p256` crate is more than capable of generating one, but the easiest way to get a key from a `p256::ecdsa::SigningKey` to a `web_push::PartialVapidSignature` is via PKCS #8 PEM, not via the bytes. Since we'll need it in that form anyways, store it that way, so that we don't have to decode it using `p256`, re-encode to PEM, then decode to `PartialVapidSignature`. The migration in this commit invalidates existing VAPID keys. We could include support for re-encoding them on read, but there's little point: this code is still in flux anyways, and only development deployments exist. By the time this is final, the schema will have settled. Merges pem-stored-vapid into push-notify.
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/app.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/boot/app.rs b/src/boot/app.rs
index 8da3e90..88255b0 100644
--- a/src/boot/app.rs
+++ b/src/boot/app.rs
@@ -78,6 +78,7 @@ pub enum Error {
Database(#[from] sqlx::Error),
Name(#[from] name::Error),
Ecdsa(#[from] p256::ecdsa::Error),
+ Pkcs8(#[from] p256::pkcs8::Error),
}
impl From<user::repo::LoadError> for Error {
@@ -106,6 +107,7 @@ impl From<vapid::repo::Error> for Error {
match error {
Error::Database(error) => error.into(),
Error::Ecdsa(error) => error.into(),
+ Error::Pkcs8(error) => error.into(),
}
}
}