bam-ticketing-sdk
Version:
SDK for B.A.M Ticketing API
41 lines (36 loc) • 1.21 kB
text/typescript
import { KJUR, X509 } from 'jsrsasign'
const uuidRegex =
/[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}/i
export function extractEnrollment(certificate: string): string {
const cert = new X509()
cert.readCertPEM(certificate)
const subject = cert.getSubjectString()
return subject.match(uuidRegex)?.[0]
}
const algName = 'SHA256withECDSA'
/**
* @param payload String which is signed
* @param privateKey Contains the private key of an ECDSA pair
* @returns hex encoded string of the signature
*/
export function sign(payload: string, privateKey: string | KJUR.crypto.ECDSA) {
const signer = new KJUR.crypto.Signature({ alg: algName })
signer.init(privateKey)
return signer.signString(payload)
}
/**
* @param payload The payload whose signature is verified
* @param signature The signature for the payload
* @param publicKey Contains the public key of an ECDSA pair
* @return true if the signature is valid
*/
export function verify(
payload: string,
signature: string,
publicKey: string | KJUR.crypto.ECDSA
) {
const signer = new KJUR.crypto.Signature({ alg: algName })
signer.init(publicKey)
signer.updateString(payload)
return signer.verify(signature)
}