29 lines
727 B
JavaScript
29 lines
727 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var PEM = module.exports;
|
||
|
var Enc = require('./encoding.js');
|
||
|
|
||
|
PEM.parseBlock = function pemToDer(pem) {
|
||
|
var lines = pem.trim().split(/\n/);
|
||
|
var end = lines.length - 1;
|
||
|
var head = lines[0].match(/-----BEGIN (.*)-----/);
|
||
|
var foot = lines[end].match(/-----END (.*)-----/);
|
||
|
|
||
|
if (head) {
|
||
|
lines = lines.slice(1, end);
|
||
|
head = head[1];
|
||
|
if (head !== foot[1]) {
|
||
|
throw new Error("headers and footers do not match");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return { type: head, bytes: Enc.base64ToBuf(lines.join('')) };
|
||
|
};
|
||
|
|
||
|
PEM.packBlock = function (opts) {
|
||
|
return '-----BEGIN ' + opts.type + '-----\n'
|
||
|
+ Enc.bufToBase64(opts.bytes).match(/.{1,64}/g).join('\n') + '\n'
|
||
|
+ '-----END ' + opts.type + '-----'
|
||
|
;
|
||
|
};
|