Skip to content

Commit 1f13435

Browse files
committed
feat: expose decode header utility
1 parent 89f2ce3 commit 1f13435

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

packages/jsonwebtoken/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,3 +351,4 @@ module.exports.sign = nativeBinding.sign
351351
module.exports.signSync = nativeBinding.signSync
352352
module.exports.verify = nativeBinding.verify
353353
module.exports.verifySync = nativeBinding.verifySync
354+
module.exports.decodeHader = nativeBinding.decodeHader

packages/jsonwebtoken/src/decode.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
use napi::{bindgen_prelude::*};
2+
use napi_derive::napi;
3+
4+
use crate::{header::Header};
5+
6+
#[napi]
7+
pub fn decode_header(
8+
token: &str
9+
) -> Header {
10+
let result = jsonwebtoken::decode_header(&token);
11+
12+
let header = Header::from(result.unwrap());
13+
}

packages/jsonwebtoken/src/header.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,22 @@ impl From<&Header> for jsonwebtoken::Header {
7373
}
7474
}
7575

76+
impl From<jsonwebtoken::Header> for Header {
77+
#[inline]
78+
fn from(value: &jsonwebtoken::Header) -> Header {
79+
Header {
80+
algorithm: value.alg.into(),
81+
content_type: value.cty.clone(),
82+
json_key_url: value.jku.clone(),
83+
key_id: value.kid.clone(),
84+
x5_url: value.x5u.clone(),
85+
x5_cert_chain: value.x5c.clone(),
86+
x5_cert_thumbprint: value.x5t.clone(),
87+
x5t_s256_cert_thumbprint: value.x5t_s256.clone(),
88+
}
89+
}
90+
}
91+
7692
impl Header {
7793
#[inline]
7894
pub fn merge(self, other: Self) -> Self {

packages/jsonwebtoken/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33

44
/// Explicit extern crate to use allocator.
55
extern crate global_alloc;
6+
extern crate core;
67

78
mod algorithm;
89
mod claims;
10+
mod decode;
911
mod header;
1012
mod sign;
1113
mod validation;
1214
mod verify;
1315

1416
pub use algorithm::Algorithm;
1517
pub use claims::Claims;
18+
pub use decode::{decode_header};
1619
pub use header::Header;
1720
pub use sign::{sign, sign_sync};
1821
pub use validation::Validation;

0 commit comments

Comments
 (0)