@parse/node-apn
Version:
An interface to the Apple Push Notification service for Node.js
33 lines (26 loc) • 808 B
JavaScript
const forge = require('node-forge');
const APNCertificate = require('./APNCertificate');
function apnCertificateFromPem(certData) {
if (!certData) {
return null;
}
let pemMessages;
try {
pemMessages = forge.pem.decode(certData);
} catch (e) {
if (e.message.match('Invalid PEM formatted message.')) {
throw new Error('unable to parse certificate, not a valid PEM file');
}
}
const certificates = [];
pemMessages.forEach(function (message) {
if (!message.type.match(/CERTIFICATE$/)) {
return;
}
const certAsn1 = forge.asn1.fromDer(message.body);
const forgeCertificate = forge.pki.certificateFromAsn1(certAsn1);
certificates.push(new APNCertificate(forgeCertificate));
});
return certificates;
}
module.exports = apnCertificateFromPem;