39 lines
962 B
TypeScript
39 lines
962 B
TypeScript
import logger from 'log'
|
|
const log = logger('crypto:signature')
|
|
|
|
export async function gen_keypair() : Promise<CryptoKeyPair> {
|
|
return crypto.subtle.generateKey(
|
|
{
|
|
name: "ECDSA",
|
|
namedCurve: "P-521",
|
|
},
|
|
true,
|
|
["sign", "verify"]
|
|
)
|
|
}
|
|
export {derive_keypair} from './signature.derive'
|
|
export async function sign(message: Uint8Array, privkey: CryptoKey) : Promise<Uint8Array> {
|
|
log.trace("sign")
|
|
const buffer = await crypto.subtle.sign(
|
|
{
|
|
name: "ECDSA",
|
|
hash: "SHA-512"
|
|
},
|
|
privkey,
|
|
message
|
|
)
|
|
return new Uint8Array(buffer)
|
|
}
|
|
export async function verify(message: Uint8Array, pubkey: CryptoKey, signature: Uint8Array) : Promise<boolean> {
|
|
log.trace("verify")
|
|
return crypto.subtle.verify(
|
|
{
|
|
name: "ECDSA",
|
|
hash: "SHA-512"
|
|
},
|
|
pubkey,
|
|
signature,
|
|
message,
|
|
)
|
|
}
|