// crypto info
out_uint16_le(s, SEC_TAG_SRV_CRYPT);
- out_uint16_le(s, 160); // length
- out_uint32_le(s, 1); // 40-bit
- out_uint32_le(s, 1); // low
+ out_uint16_le(s, 156); // length
+ out_uint32_le(s, 2); // 128-bit
+ out_uint32_le(s, 3); // high
out_uint32_le(s, SEC_RANDOM_SIZE); // random_len
- out_uint32_le(s, 96); // rsa_info_len
+ out_uint32_le(s, 92); // rsa_info_len
out_uint8s(s, SEC_RANDOM_SIZE); // server_random
out_uint32_le(s, 1); // RDP4-style
- out_uint8s(s, 8); // unknown
+ // unknown
+ out_uint32_le(s, 1);
+ out_uint32_le(s, 1);
out_uint16_le(s, SEC_TAG_PUBKEY);
- out_uint16_le(s, 88);
+ out_uint16_le(s, 92);
out_uint32_le(s, SEC_RSA_MAGIC);
out_uint32_le(s, SEC_MODULUS_SIZE + SEC_PADDING_SIZE); // modulus_len
out_uint32_le(s, SEC_MODULUS_SIZE * 8); // modulus_bits
- out_uint8s(s, 4); // unknown
+ out_uint32_le(s, 0x3f); // unknown
out_uint8p(s, my_exponent, SEC_EXPONENT_SIZE);
out_uint8p(s, my_modulus, SEC_MODULUS_SIZE);
out_uint8s(s, SEC_PADDING_SIZE);