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 + '-----' | ||
|  |   ; | ||
|  | }; |