Implement public key encoding

This commit is contained in:
Nicolas Mowen 2024-07-20 11:25:44 -06:00
parent afe2032085
commit 5398a661ff
2 changed files with 12 additions and 2 deletions

View File

@ -3,6 +3,7 @@
import logging
import os
from cryptography.hazmat.primitives import serialization
from flask import (
Blueprint,
current_app,
@ -11,7 +12,7 @@ from flask import (
request,
)
from peewee import DoesNotExist
from py_vapid import Vapid01
from py_vapid import Vapid01, utils
from frigate.const import CONFIG_DIR
from frigate.models import User
@ -30,7 +31,10 @@ def get_vapid_pub_key():
)
key = Vapid01.from_file(os.path.join(CONFIG_DIR, "notifications.pem"))
return jsonify(key.public_key), 200
raw_pub = key.public_key.public_bytes(
serialization.Encoding.X962, serialization.PublicFormat.UncompressedPoint
)
return jsonify(utils.b64urlencode(raw_pub)), 200
@NotificationBp.route("/notifications/register", methods=["POST"])

View File

@ -13,6 +13,12 @@ const NOTIFICATION_SERVICE_WORKER = "notifications-worker.ts";
export default function NotificationView() {
const { data: config } = useSWR<FrigateConfig>("config");
// notification key handling
const { data: publicKey } = useSWR(
config?.notifications?.enabled ? "notifications/pubkey" : null,
);
// notification state
const [notificationsSubscribed, setNotificationsSubscribed] =