parsePemCertificate.js 808 B

1234567891011121314151617181920212223242526272829303132
  1. const forge = require('node-forge');
  2. const APNCertificate = require('./APNCertificate');
  3. function apnCertificateFromPem(certData) {
  4. if (!certData) {
  5. return null;
  6. }
  7. let pemMessages;
  8. try {
  9. pemMessages = forge.pem.decode(certData);
  10. } catch (e) {
  11. if (e.message.match('Invalid PEM formatted message.')) {
  12. throw new Error('unable to parse certificate, not a valid PEM file');
  13. }
  14. }
  15. const certificates = [];
  16. pemMessages.forEach(function (message) {
  17. if (!message.type.match(/CERTIFICATE$/)) {
  18. return;
  19. }
  20. const certAsn1 = forge.asn1.fromDer(message.body);
  21. const forgeCertificate = forge.pki.certificateFromAsn1(certAsn1);
  22. certificates.push(new APNCertificate(forgeCertificate));
  23. });
  24. return certificates;
  25. }
  26. module.exports = apnCertificateFromPem;