@@ -106,39 +106,58 @@ fn ec_x_y() {
106106#[ cfg( feature = "use_pem" ) ]
107107#[ test]
108108#[ wasm_bindgen_test]
109- fn es256k ( ) {
109+ fn es256k_pem ( ) {
110+ let privkey = include_str ! ( "private_es256k_key.pem" ) ;
111+ let pubkey = include_str ! ( "public_es256k_key.pem" ) ;
112+
113+ let my_claims = Claims {
114+ sub : "[email protected] " . to_string ( ) , 115+ company : "ACME" . to_string ( ) ,
116+ exp : OffsetDateTime :: now_utc ( ) . unix_timestamp ( ) + 10000 ,
117+ } ;
118+
119+ let encrypted = encode (
120+ & Header :: new ( Algorithm :: ES256K ) ,
121+ & my_claims,
122+ & EncodingKey :: from_ec_pem ( privkey. as_ref ( ) ) . unwrap ( ) ,
123+ )
124+ . unwrap ( ) ;
125+
126+ let res = decode :: < Claims > (
127+ & encrypted,
128+ & DecodingKey :: from_ec_pem ( pubkey. as_ref ( ) ) . unwrap ( ) ,
129+ & Validation :: new ( Algorithm :: ES256K ) ,
130+ ) ;
131+ assert ! ( res. is_ok( ) ) ;
132+ }
133+
134+ #[ cfg( feature = "use_pem" ) ]
135+ #[ test]
136+ #[ wasm_bindgen_test]
137+ fn es256k_jwk ( ) {
110138 use jsonwebtoken:: jwk:: Jwk ;
111- use k256:: schnorr:: SigningKey ;
112- use serde_json:: json;
113139
114- // Private key errors out with invalid format or something?
115140 let privkey = include_str ! ( "private_es256k_key.pem" ) ;
141+ let pubkey = include_str ! ( "public_es256k_jwk.json" ) ;
142+ let jwk: Jwk = serde_json:: from_str ( pubkey) . unwrap ( ) ;
143+
116144 let my_claims = Claims {
117145 sub : "[email protected] " . to_string ( ) , 118146 company : "ACME" . to_string ( ) ,
119147 exp : OffsetDateTime :: now_utc ( ) . unix_timestamp ( ) + 10000 ,
120148 } ;
121149
122- let jwk: Jwk = serde_json:: from_value ( json ! ( {
123- "kty" : "EC" ,
124- "x" : "PIfJJc3sLXFLWsO6M-Hu7EUpdR56biBrImow8kA4SzY" ,
125- "y" : "iwxBRgkMP8Pi9cBtINdqictnRuswTOzYiwS4l53x9Rk" ,
126- "crv" : "secp256k1" ,
127- "kid" : "ec01" ,
128- "alg" : "ES256K" ,
129- "use" : "sig"
130- } ) ) . unwrap ( ) ;
131-
132150 let encrypted = encode (
133151 & Header :: new ( Algorithm :: ES256K ) ,
134152 & my_claims,
135153 & EncodingKey :: from_ec_pem ( privkey. as_ref ( ) ) . unwrap ( ) ,
136154 )
137155 . unwrap ( ) ;
156+
138157 let res = decode :: < Claims > (
139158 & encrypted,
140159 & DecodingKey :: from_jwk ( & jwk) . unwrap ( ) ,
141- & Validation :: new ( Algorithm :: ES256 ) ,
160+ & Validation :: new ( Algorithm :: ES256K ) ,
142161 ) ;
143162 assert ! ( res. is_ok( ) ) ;
144163}
0 commit comments