|  | @@ -140,6 +140,9 @@ func (v *AesCfb) EncodePacket(key []byte, b *buf.Buffer) error {
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func (v *AesCfb) DecodePacket(key []byte, b *buf.Buffer) error {
 |  |  func (v *AesCfb) DecodePacket(key []byte, b *buf.Buffer) error {
 | 
											
												
													
														|  | 
 |  | +	if b.Len() <= v.IVSize() {
 | 
											
												
													
														|  | 
 |  | +		return newError("insufficient data: ", b.Len())
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  	iv := b.BytesTo(v.IVSize())
 |  |  	iv := b.BytesTo(v.IVSize())
 | 
											
												
													
														|  |  	stream := crypto.NewAesDecryptionStream(key, iv)
 |  |  	stream := crypto.NewAesDecryptionStream(key, iv)
 | 
											
												
													
														|  |  	stream.XORKeyStream(b.BytesFrom(v.IVSize()), b.BytesFrom(v.IVSize()))
 |  |  	stream.XORKeyStream(b.BytesFrom(v.IVSize()), b.BytesFrom(v.IVSize()))
 | 
											
										
											
												
													
														|  | @@ -203,6 +206,9 @@ func (c *AEADCipher) EncodePacket(key []byte, b *buf.Buffer) error {
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func (c *AEADCipher) DecodePacket(key []byte, b *buf.Buffer) error {
 |  |  func (c *AEADCipher) DecodePacket(key []byte, b *buf.Buffer) error {
 | 
											
												
													
														|  | 
 |  | +	if b.Len() <= v.IVSize() {
 | 
											
												
													
														|  | 
 |  | +		return newError("insufficient data: ", b.Len())
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  	ivLen := c.IVSize()
 |  |  	ivLen := c.IVSize()
 | 
											
												
													
														|  |  	payloadLen := b.Len()
 |  |  	payloadLen := b.Len()
 | 
											
												
													
														|  |  	auth := c.createAuthenticator(key, b.BytesTo(ivLen))
 |  |  	auth := c.createAuthenticator(key, b.BytesTo(ivLen))
 | 
											
										
											
												
													
														|  | @@ -253,6 +259,9 @@ func (v *ChaCha20) EncodePacket(key []byte, b *buf.Buffer) error {
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func (v *ChaCha20) DecodePacket(key []byte, b *buf.Buffer) error {
 |  |  func (v *ChaCha20) DecodePacket(key []byte, b *buf.Buffer) error {
 | 
											
												
													
														|  | 
 |  | +	if b.Len() <= v.IVSize() {
 | 
											
												
													
														|  | 
 |  | +		return newError("insufficient data: ", b.Len())
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  	iv := b.BytesTo(v.IVSize())
 |  |  	iv := b.BytesTo(v.IVSize())
 | 
											
												
													
														|  |  	stream := crypto.NewChaCha20Stream(key, iv)
 |  |  	stream := crypto.NewChaCha20Stream(key, iv)
 | 
											
												
													
														|  |  	stream.XORKeyStream(b.BytesFrom(v.IVSize()), b.BytesFrom(v.IVSize()))
 |  |  	stream.XORKeyStream(b.BytesFrom(v.IVSize()), b.BytesFrom(v.IVSize()))
 |