2.2.5.18 JOINPR_ENCRYPTED_USER_PASSWORD

The JOINPR_ENCRYPTED_USER_PASSWORD structure is the container for a password during the encoding, encryption, decryption and decoding process.

 typedef struct _JOINPR_ENCRYPTED_USER_PASSWORD {
   unsigned char Buffer[JOIN_OBFUSCATOR_LENGTH + (JOIN_MAX_PASSWORD_LENGTH * sizeof(wchar_t)) + sizeof(unsigned long)];
 } JOINPR_ENCRYPTED_USER_PASSWORD,
  *PJOINPR_ENCRYPTED_USER_PASSWORD;

Buffer: An array of bytes that contains a JOINPR_USER_PASSWORD structure (section 2.2.5.17).

The sections that follow specify the encoding, encryption, decryption, and decoding of a password. (Encoding and encryption are performed by the client, but their explanations are included for completeness and to facilitate the reader's understanding of server (2) message processing.) The server decrypts and decodes a Buffer structure to extract the cleartext password.

The encoding, encryption, decryption, and decoding of a password requires the following steps:

  1. Encoding the cleartext password (section 2.2.5.18.1).

  2. Initializing JOINPR_USER_PASSWORD with the result of step 1 (section 2.2.5.18.2).

  3. Initializing JOINPR_ENCRYPTED_USER_PASSWORD.Buffer with the encrypted result of step 2, and subsequently decrypting JOINPR_ENCRYPTED_USER_PASSWORD.Buffer (section 2.2.5.18.3).

  4. Decoding the result of step 3, as a JOINPR_USER_PASSWORD structure, to recover the cleartext password (section 2.2.5.18.4).