UNPKG

1.53 kBJavaScriptView Raw
1const errors = require('../errors')
2
3const importKey = require('./import')
4
5const RSAKey = require('./key/rsa')
6const ECKey = require('./key/ec')
7const OKPKey = require('./key/okp')
8const OctKey = require('./key/oct')
9
10const generate = async (kty, crvOrSize, params, generatePrivate = true) => {
11 switch (kty) {
12 case 'RSA':
13 return importKey(
14 await RSAKey.generate(crvOrSize, generatePrivate),
15 params
16 )
17 case 'EC':
18 return importKey(
19 await ECKey.generate(crvOrSize, generatePrivate),
20 params
21 )
22 case 'OKP':
23 return importKey(
24 await OKPKey.generate(crvOrSize, generatePrivate),
25 params
26 )
27 case 'oct':
28 return importKey(
29 await OctKey.generate(crvOrSize, generatePrivate),
30 params
31 )
32 default:
33 throw new errors.JOSENotSupported(`unsupported key type: ${kty}`)
34 }
35}
36
37const generateSync = (kty, crvOrSize, params, generatePrivate = true) => {
38 switch (kty) {
39 case 'RSA':
40 return importKey(RSAKey.generateSync(crvOrSize, generatePrivate), params)
41 case 'EC':
42 return importKey(ECKey.generateSync(crvOrSize, generatePrivate), params)
43 case 'OKP':
44 return importKey(OKPKey.generateSync(crvOrSize, generatePrivate), params)
45 case 'oct':
46 return importKey(OctKey.generateSync(crvOrSize, generatePrivate), params)
47 default:
48 throw new errors.JOSENotSupported(`unsupported key type: ${kty}`)
49 }
50}
51
52module.exports.generate = generate
53module.exports.generateSync = generateSync