private static bool RemovePadding(CipherSuite cipherSuite, Record record)
{
BulkCipherAlgorithmType cipherType = cipherSuite.BulkCipherAlgorithm.Type;
bool verified = true;
if (cipherType == BulkCipherAlgorithmType.Block) {
// Get padding bytes from the end of the fragment
int padding = record.Fragment[record.Fragment.Length-1]+1;
// Verify the correctness of padding
if (padding > record.Fragment.Length) {
verified = false;
} else {
verified = true;
if (record.Version.HasVerifiablePadding) {
for (int i=1; i<=padding; i++) {
if (record.Fragment[record.Fragment.Length-i] != (padding-1)) {
verified = false;
}
}
}
// Remove padding from the fragment data
if (verified) {
byte[] fragment = new byte[record.Fragment.Length-padding];
Buffer.BlockCopy(record.Fragment, 0, fragment, 0, fragment.Length);
record.Fragment = fragment;
}
}
}
return verified;
}