struct CDKEYHASH {
    uint32_t clientToken;
    uint32_t serverToken;
    uint32_t product;
    uint32_t value1;
    union {
        struct {
            uint32_t zero;
            uint32_t v;
            unsigned char reserved[2];
        } s;
        struct {
            char v[10];
        } l;
    } value2;
};


        buf = pack('<2L2l10b', ctoken,
                   stoken, self.get_product(),
                   self.get_val1(),
                   *self.val2[:10])