/// <summary> /// When marking requests where you want to define VAPID details, call this method /// before sendNotifications() or pass in the details and options to /// sendNotification. /// </summary> /// <param name="vapidDetails"></param> public void SetVapidDetails(VapidDetails vapidDetails) { VapidHelper.ValidateSubject(vapidDetails.Subject); VapidHelper.ValidatePublicKey(vapidDetails.PublicKey); VapidHelper.ValidatePrivateKey(vapidDetails.PrivateKey); _vapidDetails = vapidDetails; }
public IActionResult GenerateKeys() { VapidHelper.ValidateSubject("mailto:[email protected]"); var keys = VapidHelper.GenerateVapidKeys(); VapidHelper.ValidatePublicKey(keys.PublicKey); VapidHelper.ValidatePrivateKey(keys.PrivateKey); ViewBag.PublicKey = keys.PublicKey; ViewBag.PrivateKey = keys.PrivateKey; return(View()); }
/// <summary> /// Sets the vapid details. /// </summary> /// <param name="p_options">Web push options.</param> private async Task SetVapidDetails(IOptions <WebPushOptions> p_options) { bool v_validSubject = true; string v_vapidSubject; string v_vapidPublicKey; string v_vapidPrivateKey; try { VapidHelper.ValidateSubject(p_options.Value.VapidSubject); } catch (Exception ex) { Logger.LogWarning(ex, "Vapid subject is not valid"); v_validSubject = false; } if (!v_validSubject && String.IsNullOrWhiteSpace(GcmAPIKey)) { throw new ApplicationException("You must set a valid vapid subject or GCM API Key"); } if (v_validSubject) { v_vapidSubject = p_options.Value.VapidSubject; try { VapidHelper.ValidatePublicKey(p_options.Value.VapidPublicKey); VapidHelper.ValidatePrivateKey(p_options.Value.VapidPrivateKey); v_vapidPublicKey = p_options.Value.VapidPublicKey; v_vapidPrivateKey = p_options.Value.VapidPrivateKey; } catch (Exception ex) { Logger.LogError(ex, "Your Vapid keys are not valid. Using auto generated keys."); var v_tempVapid = VapidHelper.GenerateVapidKeys(); v_vapidPublicKey = v_tempVapid.PublicKey; v_vapidPrivateKey = v_tempVapid.PrivateKey; Logger.LogInformation("Flushing existing devices"); IEnumerable <Device> v_devices = this.DbContext.Devices; this.DbContext.RemoveRange(v_devices); await this.DbContext.SaveChangesAsync(); } VapidDetails = new VapidDetails(v_vapidSubject, v_vapidPublicKey, v_vapidPrivateKey); } }