mirror of
https://github.com/hanzoai/jose.git
synced 2026-09-24 17:00:01 +00:00
31 lines
885 B
TypeScript
31 lines
885 B
TypeScript
import { JOSENotSupported } from '../util/errors.ts'
|
|
|
|
export default function subtleDsa(alg: string, algorithm: KeyAlgorithm | EcKeyAlgorithm) {
|
|
const hash = `SHA-${alg.slice(-3)}`
|
|
switch (alg) {
|
|
case 'HS256':
|
|
case 'HS384':
|
|
case 'HS512':
|
|
return { hash, name: 'HMAC' }
|
|
case 'PS256':
|
|
case 'PS384':
|
|
case 'PS512':
|
|
// @ts-expect-error
|
|
return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 }
|
|
case 'RS256':
|
|
case 'RS384':
|
|
case 'RS512':
|
|
return { hash, name: 'RSASSA-PKCS1-v1_5' }
|
|
case 'ES256':
|
|
case 'ES384':
|
|
case 'ES512':
|
|
return { hash, name: 'ECDSA', namedCurve: (<EcKeyAlgorithm>algorithm).namedCurve }
|
|
case 'EdDSA':
|
|
return { name: algorithm.name }
|
|
default:
|
|
throw new JOSENotSupported(
|
|
`alg ${alg} is not supported either by JOSE or your javascript runtime`,
|
|
)
|
|
}
|
|
}
|