| 
									
										
										
										
											2021-09-11 20:12:47 +01:00
										 |  |  | package hashenc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"encoding/base32" | 
					
						
							|  |  |  | 	"encoding/base64" | 
					
						
							|  |  |  | 	"encoding/hex" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-08 19:49:45 +02:00
										 |  |  | // Encoder defines an interface for encoding binary data. | 
					
						
							| 
									
										
										
										
											2021-09-11 20:12:47 +01:00
										 |  |  | type Encoder interface { | 
					
						
							|  |  |  | 	// Encode encodes the data at src into dst | 
					
						
							|  |  |  | 	Encode(dst []byte, src []byte) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// EncodedLen returns the encoded length for input data of supplied length | 
					
						
							|  |  |  | 	EncodedLen(int) int | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-08 19:49:45 +02:00
										 |  |  | // Base32 returns a new base32 Encoder (StdEncoding, no padding). | 
					
						
							| 
									
										
										
										
											2021-09-11 20:12:47 +01:00
										 |  |  | func Base32() Encoder { | 
					
						
							|  |  |  | 	return base32.StdEncoding.WithPadding(base64.NoPadding) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-08 19:49:45 +02:00
										 |  |  | // Base64 returns a new base64 Encoder (URLEncoding, no padding). | 
					
						
							| 
									
										
										
										
											2021-09-11 20:12:47 +01:00
										 |  |  | func Base64() Encoder { | 
					
						
							|  |  |  | 	return base64.URLEncoding.WithPadding(base64.NoPadding) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-08 19:49:45 +02:00
										 |  |  | // Hex returns a new hex Encoder. | 
					
						
							| 
									
										
										
										
											2021-09-11 20:12:47 +01:00
										 |  |  | func Hex() Encoder { | 
					
						
							|  |  |  | 	return &hexEncoder{} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-08 19:49:45 +02:00
										 |  |  | // hexEncoder simply provides an empty receiver to satisfy Encoder. | 
					
						
							| 
									
										
										
										
											2021-09-11 20:12:47 +01:00
										 |  |  | type hexEncoder struct{} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (*hexEncoder) Encode(dst []byte, src []byte) { | 
					
						
							|  |  |  | 	hex.Encode(dst, src) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (*hexEncoder) EncodedLen(len int) int { | 
					
						
							|  |  |  | 	return hex.EncodedLen(len) | 
					
						
							|  |  |  | } |