UNPKG

xmldsigjs

Version:

XML Digital Signature implementation in TypeScript/JavaScript using Web Crypto API

83 lines (82 loc) 2.48 kB
import { SignatureAlgorithm } from '../algorithm.js'; import { SHA1, SHA256, SHA384, SHA512 } from './rsa_hash.js'; export const RSA_PKCS1 = 'RSASSA-PKCS1-v1_5'; export const RSA_PKCS1_SHA1_NAMESPACE = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'; export const RSA_PKCS1_SHA256_NAMESPACE = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'; export const RSA_PKCS1_SHA384_NAMESPACE = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'; export const RSA_PKCS1_SHA512_NAMESPACE = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512'; function fromAlgorithm(alg) { if (alg.name.toUpperCase() === RSA_PKCS1.toUpperCase()) { switch (alg.hash.name.toUpperCase()) { case SHA1: return new RsaPkcs1Sha1(); case SHA256: return new RsaPkcs1Sha256(); case SHA384: return new RsaPkcs1Sha384(); case SHA512: return new RsaPkcs1Sha512(); } } return null; } export class RsaPkcs1Sha1 extends SignatureAlgorithm { constructor() { super(...arguments); this.algorithm = { name: RSA_PKCS1, hash: { name: SHA1, }, }; this.namespaceURI = RSA_PKCS1_SHA1_NAMESPACE; } static fromAlgorithm(alg) { return fromAlgorithm(alg); } } export class RsaPkcs1Sha256 extends SignatureAlgorithm { constructor() { super(...arguments); this.algorithm = { name: RSA_PKCS1, hash: { name: SHA256, }, }; this.namespaceURI = RSA_PKCS1_SHA256_NAMESPACE; } static fromAlgorithm(alg) { return fromAlgorithm(alg); } } export class RsaPkcs1Sha384 extends SignatureAlgorithm { constructor() { super(...arguments); this.algorithm = { name: RSA_PKCS1, hash: { name: SHA384, }, }; this.namespaceURI = RSA_PKCS1_SHA384_NAMESPACE; } static fromAlgorithm(alg) { return fromAlgorithm(alg); } } export class RsaPkcs1Sha512 extends SignatureAlgorithm { constructor() { super(...arguments); this.algorithm = { name: RSA_PKCS1, hash: { name: SHA512, }, }; this.namespaceURI = RSA_PKCS1_SHA512_NAMESPACE; } static fromAlgorithm(alg) { return fromAlgorithm(alg); } }