1- import { UnauthorizedHttpError , type AlgJwk , BadRequestHttpError , InternalServerError } from '@solid/community-server' ;
2- import { httpbis , type SigningKey , type Request as SignRequest } from 'http-message-signatures' ;
1+ import { UnauthorizedHttpError , type AlgJwk , BadRequestHttpError } from '@solid/community-server' ;
2+ import { httpbis , type SigningKey , type Request as SignRequest , defaultParams } from 'http-message-signatures' ;
33import { verifyMessage } from 'http-message-signatures/lib/httpbis' ;
44import { type SignatureParameters , type VerifierFinder , type VerifyingKey } from 'http-message-signatures/lib/types' ;
55import { HttpHandlerRequest } from './http/models/HttpHandler' ;
@@ -17,12 +17,13 @@ export async function signRequest(
1717 id : jwk . kid ,
1818 alg : jwk . alg ,
1919 async sign ( data : BufferSource ) {
20- const key = await crypto . subtle . importKey ( 'jwk' , jwk , jwk . alg , false , [ 'sign' , 'verify' ] ) ;
21- return Buffer . from ( await crypto . subtle . sign ( jwk . alg , key , data ) ) ;
20+ const params = algMap [ jwk . alg ] ;
21+ const key = await crypto . subtle . importKey ( 'jwk' , jwk , params , false , [ 'sign' ] ) ;
22+ return Buffer . from ( await crypto . subtle . sign ( params , key , data ) ) ;
2223 } ,
2324 } ;
2425
25- return await httpbis . signMessage < RequestInit & SignRequest > ( { key } , { ...request , url } ) ;
26+ return await httpbis . signMessage ( { key, fields : [ '@target-uri' , '@method' ] } , { ...request , url } ) ;
2627}
2728
2829export async function extractRequestSigner ( request : HttpHandlerRequest ) : Promise < string > {
@@ -40,11 +41,7 @@ export async function extractRequestSigner(request: HttpHandlerRequest): Promise
4041 throw new UnauthorizedHttpError ( ) ;
4142 }
4243
43- const signer = params . cred ;
44-
45- if ( ! signer ) throw new UnauthorizedHttpError ( 'No valid HTTPSig authorization header found.' ) ;
46-
47- return signer ;
44+ return params . cred ;
4845}
4946
5047export async function verifyRequest (
@@ -66,11 +63,9 @@ export async function verifyRequest(
6663 domain : signer ! ,
6764 alg : alg ?? '' ,
6865 kid : keyid ?? '' ,
69- } )
66+ } ) ;
7067
7168 if ( ! alg ) throw new BadRequestHttpError ( 'Invalid HTTP message Signature parameters.' ) ;
72- // if (alg === 'EdDSA') throw new InternalServerError('EdDSA signing is not supported');
73- // if (alg === 'ES256K') throw new InternalServerError('ES256K signing is not supported');
7469
7570 const verifier : VerifyingKey = {
7671 id : keyid ,
0 commit comments