59 lines
		
	
	
		
			1012 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1012 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
// Helper
 | 
						|
function reverse(map) {
 | 
						|
  const res = {};
 | 
						|
 | 
						|
  Object.keys(map).forEach(function(key) {
 | 
						|
    // Convert key to integer if it is stringified
 | 
						|
    if ((key | 0) == key)
 | 
						|
      key = key | 0;
 | 
						|
 | 
						|
    const value = map[key];
 | 
						|
    res[value] = key;
 | 
						|
  });
 | 
						|
 | 
						|
  return res;
 | 
						|
}
 | 
						|
 | 
						|
exports.tagClass = {
 | 
						|
  0: 'universal',
 | 
						|
  1: 'application',
 | 
						|
  2: 'context',
 | 
						|
  3: 'private'
 | 
						|
};
 | 
						|
exports.tagClassByName = reverse(exports.tagClass);
 | 
						|
 | 
						|
exports.tag = {
 | 
						|
  0x00: 'end',
 | 
						|
  0x01: 'bool',
 | 
						|
  0x02: 'int',
 | 
						|
  0x03: 'bitstr',
 | 
						|
  0x04: 'octstr',
 | 
						|
  0x05: 'null_',
 | 
						|
  0x06: 'objid',
 | 
						|
  0x07: 'objDesc',
 | 
						|
  0x08: 'external',
 | 
						|
  0x09: 'real',
 | 
						|
  0x0a: 'enum',
 | 
						|
  0x0b: 'embed',
 | 
						|
  0x0c: 'utf8str',
 | 
						|
  0x0d: 'relativeOid',
 | 
						|
  0x10: 'seq',
 | 
						|
  0x11: 'set',
 | 
						|
  0x12: 'numstr',
 | 
						|
  0x13: 'printstr',
 | 
						|
  0x14: 't61str',
 | 
						|
  0x15: 'videostr',
 | 
						|
  0x16: 'ia5str',
 | 
						|
  0x17: 'utctime',
 | 
						|
  0x18: 'gentime',
 | 
						|
  0x19: 'graphstr',
 | 
						|
  0x1a: 'iso646str',
 | 
						|
  0x1b: 'genstr',
 | 
						|
  0x1c: 'unistr',
 | 
						|
  0x1d: 'charstr',
 | 
						|
  0x1e: 'bmpstr'
 | 
						|
};
 | 
						|
exports.tagByName = reverse(exports.tag);
 |