@@ -176,7 +176,9 @@ async function verify (
176176 signature :string
177177) :Promise < boolean > {
178178 return await compare ( signature , await sign (
179- typeof data === 'string' ? fromString ( data ) : data ,
179+ ( typeof data === 'string' ?
180+ fromString ( data ) :
181+ data ) as Uint8Array < ArrayBuffer > ,
180182 key
181183 ) )
182184}
@@ -186,26 +188,34 @@ async function verify (
186188 *
187189 * @returns {string }
188190 */
189- export async function sign ( data :string | Uint8Array , key :string , opts ?:Partial < {
190- algorithm :'sha-256' | 'sha-512' ;
191- } > ) :Promise < string > {
191+ export async function sign (
192+ data :string | Uint8Array < ArrayBuffer > ,
193+ key :string ,
194+ opts ?:Partial < {
195+ algorithm :'sha-256' | 'sha-512' ;
196+ } >
197+ ) :Promise < string > {
192198 const algorithm = opts ?. algorithm || 'sha-256'
193199
194200 // this gets called with `sessionDataAsJSON` for data param,
195201 // so if string, it is not base64 encoded
196202
197203 const signingKey = await webcrypto . subtle . importKey (
198204 'raw' ,
199- fromString ( key , 'base64' ) ,
205+ ( fromString ( key , 'base64' ) ) as Uint8Array < ArrayBuffer > ,
200206 { name : 'HMAC' , hash : algorithm } ,
201207 false ,
202208 [ 'sign' , 'verify' ]
203209 )
204210
211+ const _data = typeof data === 'string' ?
212+ fromString ( data ) as Uint8Array < ArrayBuffer > :
213+ data
214+
205215 const sig = await webcrypto . subtle . sign (
206216 'HMAC' ,
207217 signingKey ,
208- typeof data === 'string' ? fromString ( data ) : data
218+ _data
209219 )
210220 const sigString = toString ( new Uint8Array ( sig ) , 'base64' )
211221
0 commit comments