if (i != GDSS_SUCCESS) {
free(info[U_SIGNATURE]);
info[U_SIGNATURE] = malloc(GDSS_Sig_Size() * 2);
+ sign_again:
i = GDSS_Sign(temp_buf, strlen(temp_buf), info[U_SIGNATURE]);
if (i != GDSS_SUCCESS)
com_err(program_name, gdss2et(i), "Failed to create signature");
+ else {
+ unsigned char buf[256];
+ si.rawsig = buf;
+ i = GDSS_Verify(temp_buf, strlen(temp_buf),
+ info[U_SIGNATURE], &si);
+ if (strlen(buf) > 68) {
+#ifdef DEBUG
+ Put_message("Signature too long, trying again");
+#endif /* DEBUG */
+ goto sign_again;
+ }
+ }
#ifdef DEBUG
Put_message("Made signature:");hex_dump(info[U_SIGNATURE]);
} else {