# How to provide partial confidentiality and full integrity for a protocol message?

I want to provide confidentiality and integrity for a protocol. I don't want to encrypt the entire protocol message. I do not want to encrypt the header and timestamp of the protocol message, but I want to have the integrity for the entire protocol message. Thus I do the following:

1- encrypt the message except for the header and timestamp by using CBC.
2- digest the entire message (header, timestamp and encrypted message) by using HMAC.


Is that good practice? if No, what is the best practice?