What does the TLS 1.2 client finished message contain? I am implementing TLS 1.2 and I'm stuck on the client finished message. 

My question is: what is the size and structure of a clients finished message in TLS 1.2 when using the ECDHE_RSA_AES_128_GCM_SHA256 cipher suite. 

I searched for this question and someone somewhere stated its size is 48 bytes; more specifically:


12 byte verify data
1 byte handshake type
3 byte verify data length
and 32 byte MAC


Is that really correct? 

I mean: according to RFC 5246 finished messages have {verify_data[verify_data_length]} and verify_data = PRF(master_secret, finished_label, hash(handshake_messages). Also, according to RFC 5246 section 5 PRF(secret, label, seed) = P_&lt;hash&gt;(secret, label+seed) and P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed). So, when I compute HMAC using SHA256 for verify_data its size is 32 byte. 

As a result, I'm a bit confused in relation to the verify_data size and the finished message structure. Can anyone help me to understand this and/or maybe put me on the right track somehow?
rfc5246 7.4.9 defines 
verify_data as 

     PRF(master_secret, finished_label, Hash(handshake_messages))
        [0..verify_data_length-1];


Note the second line; this effectively truncates the PRF output to verify_data_length octets. It goes on to say that verify_data size 


  depends on the cipher
        suite.  Any cipher suite which does not explicitly specify
        verify_data_length has a verify_data_length equal to 12.  


ECDHE_RSA_AES_128_GCM_SHA256 is defined in rfc 5289 which does not explicitly specify, so this default applies.

Second, someone somewhere is wrong. GCM and CCM ciphersuites do not have a HMAC on the (plaintext) record, although stream and 'block' (CBC) suites do; instead an authentication tag is added to the encrypted record by the AEAD process. Compare 6.2.3.3 to 6.2.3.1 and 6.2.3.2.