Issue #2 - provisional resolution to RFC3339 date encoding
Fixes an issue where a GF(256) remainder used for reed-solomon error correction bytes is a codeword short on return from division. This may not be the final resolution to the wider issue.
This commit is contained in:
		@ -25,9 +25,14 @@ encode(Bin, Degree) when Degree > 0 ->
 | 
			
		||||
	Data = binary_to_list(Bin),
 | 
			
		||||
	Coeffs = gf256:monomial_product(Field, Data, 1, Degree),
 | 
			
		||||
	{_Quotient, Remainder} = gf256:divide(Field, Coeffs, Generator),
 | 
			
		||||
	ErrorCorrectionBytes = list_to_binary(Remainder),
 | 
			
		||||
	Remainder0 = zero_pad(Degree, Remainder),
 | 
			
		||||
	ErrorCorrectionBytes = list_to_binary(Remainder0),
 | 
			
		||||
	<<ErrorCorrectionBytes/binary>>.
 | 
			
		||||
 | 
			
		||||
zero_pad(Length, R) when length(R) < Length ->
 | 
			
		||||
	zero_pad(Length, [0|R]);
 | 
			
		||||
zero_pad(_, R) ->
 | 
			
		||||
	R.
 | 
			
		||||
%%
 | 
			
		||||
bch_code(Byte, Poly) ->
 | 
			
		||||
	MSB = msb(Poly),
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user