3
3
* SPDX-License-Identifier: MIT
4
4
*/
5
5
6
- import { webcrypto } from 'node:crypto' ;
7
6
import { encodeArrayBufferToBase64 , getWebcrypto , splitPer64Chars } from './utils' ;
8
- import { ECNamedCurve } from './types' ;
7
+ import type { ECNamedCurve } from './types' ;
9
8
10
- export async function exportPublicKeyPem ( key : webcrypto . CryptoKey ) {
9
+ export async function exportPublicKeyPem ( key : CryptoKey ) {
11
10
const ab = await ( await getWebcrypto ( ) ) . subtle . exportKey ( 'spki' , key ) ;
12
11
return '-----BEGIN PUBLIC KEY-----\n' +
13
12
splitPer64Chars ( encodeArrayBufferToBase64 ( ab ) ) . join ( '\n' ) +
14
13
'\n-----END PUBLIC KEY-----\n' ;
15
14
}
16
15
17
- export async function exportPrivateKeyPem ( key : webcrypto . CryptoKey ) {
16
+ export async function exportPrivateKeyPem ( key : CryptoKey ) {
18
17
const ab = await ( await getWebcrypto ( ) ) . subtle . exportKey ( 'pkcs8' , key ) ;
19
18
return '-----BEGIN PRIVATE KEY-----\n' +
20
19
splitPer64Chars ( encodeArrayBufferToBase64 ( ab ) ) . join ( '\n' ) +
21
20
'\n-----END PRIVATE KEY-----\n' ;
22
21
}
23
22
24
- export async function genRsaKeyPair ( modulusLength = 4096 , keyUsage : webcrypto . KeyUsage [ ] = [ 'sign' , 'verify' ] ) {
23
+ export async function genRsaKeyPair ( modulusLength = 4096 , keyUsage : KeyUsage [ ] = [ 'sign' , 'verify' ] ) {
25
24
const keyPair = await ( await getWebcrypto ( ) ) . subtle . generateKey (
26
25
{
27
26
name : 'RSASSA-PKCS1-v1_5' ,
@@ -38,7 +37,7 @@ export async function genRsaKeyPair(modulusLength = 4096, keyUsage: webcrypto.Ke
38
37
} ;
39
38
}
40
39
41
- export async function genEcKeyPair ( namedCurve : ECNamedCurve = 'P-256' , keyUsage : webcrypto . KeyUsage [ ] = [ 'sign' , 'verify' ] ) {
40
+ export async function genEcKeyPair ( namedCurve : ECNamedCurve = 'P-256' , keyUsage : KeyUsage [ ] = [ 'sign' , 'verify' ] ) {
42
41
const keyPair = await ( await getWebcrypto ( ) ) . subtle . generateKey (
43
42
{
44
43
name : 'ECDSA' ,
@@ -53,14 +52,14 @@ export async function genEcKeyPair(namedCurve: ECNamedCurve = 'P-256', keyUsage:
53
52
} ;
54
53
}
55
54
56
- export async function genEd25519KeyPair ( keyUsage : webcrypto . KeyUsage [ ] = [ 'sign' , 'verify' ] ) {
55
+ export async function genEd25519KeyPair ( keyUsage : KeyUsage [ ] = [ 'sign' , 'verify' ] ) {
57
56
const keyPair = await ( await getWebcrypto ( ) ) . subtle . generateKey (
58
57
{
59
58
name : 'Ed25519' ,
60
59
} ,
61
60
true ,
62
61
keyUsage ,
63
- ) as webcrypto . CryptoKeyPair ;
62
+ ) as CryptoKeyPair ;
64
63
return {
65
64
publicKey : await exportPublicKeyPem ( keyPair . publicKey ) ,
66
65
privateKey : await exportPrivateKeyPem ( keyPair . privateKey )
@@ -74,7 +73,7 @@ export async function genEd448KeyPair(keyUsage) {
74
73
} ,
75
74
true ,
76
75
keyUsage ,
77
- ) as webcrypto . CryptoKeyPair ;
76
+ ) as CryptoKeyPair ;
78
77
return {
79
78
publicKey : await exportPublicKeyPem ( keyPair . publicKey ) ,
80
79
privateKey : await exportPrivateKeyPem ( keyPair . privateKey )
0 commit comments