| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var Enc = module.exports; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-01 15:39:01 -07:00
										 |  |  | Enc.base64ToBuf = function (str) { | 
					
						
							| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  |   // node handles both base64 and urlBase64 equally
 | 
					
						
							|  |  |  |   return Buffer.from(str, 'base64'); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-01 15:39:01 -07:00
										 |  |  | Enc.base64ToHex = function (b64) { | 
					
						
							| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  |   return Enc.bufToHex(Enc.base64ToBuf(b64)); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-01 15:39:01 -07:00
										 |  |  | Enc.bufToBase64 = function (u8) { | 
					
						
							| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  |   // Ensure a node buffer, even if TypedArray
 | 
					
						
							|  |  |  |   return Buffer.from(u8).toString('base64'); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-01 15:39:01 -07:00
										 |  |  | Enc.bufToHex = function (u8) { | 
					
						
							| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  |   // Ensure a node buffer, even if TypedArray
 | 
					
						
							|  |  |  |   return Buffer.from(u8).toString('hex'); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-01 15:39:01 -07:00
										 |  |  | Enc.bufToUrlBase64 = function (u8) { | 
					
						
							| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  |   return Enc.bufToBase64(u8) | 
					
						
							|  |  |  |     .replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enc.hexToUint8 = function (hex) { | 
					
						
							|  |  |  |   // TODO: I don't remember why I chose Uint8Array over Buffer...
 | 
					
						
							|  |  |  |   var buf = Buffer.from(hex, 'hex'); | 
					
						
							|  |  |  |   var ab = buf.buffer.slice(buf.offset, buf.offset + buf.byteLength); | 
					
						
							|  |  |  |   return new Uint8Array(ab); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-01 15:39:01 -07:00
										 |  |  | Enc.numToHex = function (d) { | 
					
						
							| 
									
										
										
										
											2018-11-24 20:21:27 -07:00
										 |  |  |   d = d.toString(16); | 
					
						
							|  |  |  |   if (d.length % 2) { | 
					
						
							|  |  |  |     return '0' + d; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   return d; | 
					
						
							|  |  |  | }; |