|  | @@ -1,8 +1,6 @@
 | 
	
		
			
				|  |  |  package encoding
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import (
 | 
	
		
			
				|  |  | -	"crypto/aes"
 | 
	
		
			
				|  |  | -	"crypto/cipher"
 | 
	
		
			
				|  |  |  	"crypto/md5"
 | 
	
		
			
				|  |  |  	"crypto/rand"
 | 
	
		
			
				|  |  |  	"hash/fnv"
 | 
	
	
		
			
				|  | @@ -105,10 +103,8 @@ func (c *ClientSession) EncodeRequestHeader(header *protocol.RequestHeader, writ
 | 
	
		
			
				|  |  |  		common.Must(buffer.AppendSupplier(serial.WriteHash(fnv1a)))
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	timestampHash := md5.New()
 | 
	
		
			
				|  |  | -	common.Must2(timestampHash.Write(hashTimestamp(timestamp)))
 | 
	
		
			
				|  |  | -	iv := timestampHash.Sum(nil)
 | 
	
		
			
				|  |  | -	aesStream := crypto.NewAesEncryptionStream(account.ID.CmdKey(), iv)
 | 
	
		
			
				|  |  | +	iv := md5.Sum(hashTimestamp(timestamp))
 | 
	
		
			
				|  |  | +	aesStream := crypto.NewAesEncryptionStream(account.ID.CmdKey(), iv[:])
 | 
	
		
			
				|  |  |  	aesStream.XORKeyStream(buffer.Bytes(), buffer.Bytes())
 | 
	
		
			
				|  |  |  	common.Must2(writer.Write(buffer.Bytes()))
 | 
	
		
			
				|  |  |  	return nil
 | 
	
	
		
			
				|  | @@ -153,9 +149,7 @@ func (c *ClientSession) EncodeRequestBody(request *protocol.RequestHeader, write
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		return &buf.SequentialWriter{Writer: cryptionWriter}
 | 
	
		
			
				|  |  |  	case protocol.SecurityType_AES128_GCM:
 | 
	
		
			
				|  |  | -		block, _ := aes.NewCipher(c.requestBodyKey[:])
 | 
	
		
			
				|  |  | -		aead, _ := cipher.NewGCM(block)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +		aead := crypto.NewAesGcm(c.requestBodyKey[:])
 | 
	
		
			
				|  |  |  		auth := &crypto.AEADAuthenticator{
 | 
	
		
			
				|  |  |  			AEAD:                    aead,
 | 
	
		
			
				|  |  |  			NonceGenerator:          GenerateChunkNonce(c.requestBodyIV[:], uint32(aead.NonceSize())),
 | 
	
	
		
			
				|  | @@ -163,7 +157,8 @@ func (c *ClientSession) EncodeRequestBody(request *protocol.RequestHeader, write
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		return crypto.NewAuthenticationWriter(auth, sizeParser, writer, request.Command.TransferType(), padding)
 | 
	
		
			
				|  |  |  	case protocol.SecurityType_CHACHA20_POLY1305:
 | 
	
		
			
				|  |  | -		aead, _ := chacha20poly1305.New(GenerateChacha20Poly1305Key(c.requestBodyKey[:]))
 | 
	
		
			
				|  |  | +		aead, err := chacha20poly1305.New(GenerateChacha20Poly1305Key(c.requestBodyKey[:]))
 | 
	
		
			
				|  |  | +		common.Must(err)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		auth := &crypto.AEADAuthenticator{
 | 
	
		
			
				|  |  |  			AEAD:                    aead,
 | 
	
	
		
			
				|  | @@ -250,8 +245,7 @@ func (c *ClientSession) DecodeResponseBody(request *protocol.RequestHeader, read
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		return buf.NewReader(c.responseReader)
 | 
	
		
			
				|  |  |  	case protocol.SecurityType_AES128_GCM:
 | 
	
		
			
				|  |  | -		block, _ := aes.NewCipher(c.responseBodyKey[:])
 | 
	
		
			
				|  |  | -		aead, _ := cipher.NewGCM(block)
 | 
	
		
			
				|  |  | +		aead := crypto.NewAesGcm(c.responseBodyKey[:])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		auth := &crypto.AEADAuthenticator{
 | 
	
		
			
				|  |  |  			AEAD:                    aead,
 |