-
- dhpub=st->dh->makepublic(st->dh->st,st->dhsecret,st->dh->secret_len);
- buf_append_string(&st->buffer,dhpub);
- free(dhpub);
+ if (minor < 2) break;
+ buf_append_uint8(&st->buffer,st->chosen_dh->capab_bit);
+ } while (0);
+
+ pklen_addr=buf_append(&st->buffer,2);
+ pk=buf_append(&st->buffer,st->chosen_dh->public_len);
+ pklen=st->chosen_dh->makepublic(st->chosen_dh->st,
+ pk,st->chosen_dh->public_len,
+ st->dhsecret,st->chosen_dh->secret_len);
+ put_uint16(pklen_addr,pklen);
+ buf_unappend(&st->buffer,st->chosen_dh->public_len-pklen);