The step explained in the paper is correct. The confusion you probably are facing is with the key exchange step I guess.
Let me explain it further.
Let A be the sender and B, the recipient.
- A generates the message - M
- A generates a pseudorandom session key - K
Key for symmetric encryption - A encrypts the message M with session key K - E(K,M)
Message encrypted with symmetric encryption - A encrypts the session key K with public key of B - E(KBPUB, K)
K encrypted with public key of B so that B can retrieve K with it's private key. A appends the results of step 3 and 4 and sends it to B - E(K,M) || E(KBPUB, K)
B receives E(K,M) || E(KBPUB, K)
- B retrieves K from E(KBPUB, K) -> K = E[KBPRIV, E(KBPUB, K)]
Retrieving K by decrypting it with private key of B. - B uses K to retrieve M from E(K,M) -> M = D[K, E(K,M)]
Decrypting the symmetrically encrypted message.
Your confusion is in the 3rd and 4th steps. Te order of 3rd and 4th steps doesn't matter as you see from the above.