title: Is the VAPID public key the same as applicationServerKey client-side?
body: <p>On the client-side, to subscribe to web push notifications, you need to call <code>subscribe</code> with the <code>applicationServerKey</code> option, like this:</p>
  
  <pre><code>var serviceWorkerRegistration = ...
  serviceWorkerRegistration.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: urlB64ToUint8Array("......")
  }).then(function(subscription) {
     ...
  })
  </code></pre>
  
  <p>You can send the <code>subscription</code> object to the server, where it can be saved.</p>
  
  <p>To send a push message to the subscriber, the server needs to post to the URL indicated by the key <code>endpoint</code> in the object <code>subscription</code>. The server needs to identify itself to the provider (Mozilla or Google or whoever) using VAPID. For instance, using the Python library <code>pywebpush</code>, this call would be made:</p>
  
  <pre><code>import pywebpush
  pywebpush.webpush(
      subscription,
      data,
      vapid_private_key="path_to_private_key.pem",
      vapid_claims={"sub": "mailto:example@example.com"},
  )
  </code></pre>
  
  <h2>Here's my question:</h2>
  
  <p>Is the private VAPID key used to send the push message the one that corresponds to the public key passed to <code>serviceWorkerRegistration.pushManager.subscribe</code> on the client-side? Or does it belong to a separate keypair? My intuition tells me it should belong to the same keypair, but the term VAPID is only ever mentioned when talking about sending push messages, and not when subscribing, so I'm not confident that that assumption is correct.</p>