summaryrefslogtreecommitdiff
path: root/src/vapid/repo.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/vapid/repo.rs')
-rw-r--r--src/vapid/repo.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/vapid/repo.rs b/src/vapid/repo.rs
index 4ac5286..98b3bae 100644
--- a/src/vapid/repo.rs
+++ b/src/vapid/repo.rs
@@ -1,4 +1,7 @@
-use p256::{NistP256, ecdsa::SigningKey, elliptic_curve::FieldBytes};
+use p256::{
+ ecdsa::SigningKey,
+ pkcs8::{DecodePrivateKey as _, EncodePrivateKey as _, LineEnding},
+};
use sqlx::{Sqlite, SqliteConnection, Transaction};
use super::{
@@ -76,8 +79,8 @@ impl Vapid<'_> {
}
pub async fn store_signing_key(&mut self, key: &SigningKey) -> Result<(), Error> {
- let key = key.to_bytes();
- let key = key.as_slice();
+ let key = key.to_pkcs8_pem(LineEnding::CRLF)?;
+ let key = key.as_str();
sqlx::query!(
r#"
insert into vapid_signing_key (key)
@@ -97,14 +100,13 @@ impl Vapid<'_> {
select
key.changed_at as "changed_at: DateTime",
key.changed_sequence as "changed_sequence: Sequence",
- signing.key as "key: Vec<u8>"
+ signing.key
from vapid_key as key
join vapid_signing_key as signing
"#
)
.map(|row| {
- let key = FieldBytes::<NistP256>::from_slice(&row.key);
- let key = SigningKey::from_bytes(key)?;
+ let key = SigningKey::from_pkcs8_pem(&row.key)?;
let key = key.verifying_key().to_owned();
let changed = Instant::new(row.changed_at, row.changed_sequence);
@@ -122,6 +124,7 @@ impl Vapid<'_> {
#[error(transparent)]
pub enum Error {
Ecdsa(#[from] p256::ecdsa::Error),
+ Pkcs8(#[from] p256::pkcs8::Error),
Database(#[from] sqlx::Error),
}