1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 09:27:59 +00:00

Add primegen() to the testcrypt API.

I just found I wanted to generate a prime with particular properties,
and I knew PuTTY's prime generator could manage it, so it was easier
to add this function to testcrypt for occasional manual use than to
look for another prime-generator with the same feature set!

I've wrapped the function so as to remove the three progress-
reporting parameters.
This commit is contained in:
Simon Tatham 2019-02-09 15:35:02 +00:00
parent 03492ab593
commit 30117bff55
3 changed files with 28 additions and 2 deletions

6
Recipe
View File

@ -389,8 +389,10 @@ osxlaunch : [UT] osxlaunch
fuzzterm : [UT] UXTERM CHARSET MISC version uxmisc uxucs fuzzterm time settings
+ uxstore be_none uxnogtk memory
testcrypt : [UT] testcrypt SSHCRYPTO marshal utils memory tree234 uxutils
testcrypt : [C] testcrypt SSHCRYPTO marshal utils memory tree234 winmiscs
testcrypt : [UT] testcrypt SSHCRYPTO sshprime marshal utils memory tree234
+ uxutils
testcrypt : [C] testcrypt SSHCRYPTO sshprime marshal utils memory tree234
+ winmiscs
testzlib : [UT] testzlib sshzlib memory
uppity : [UT] uxserver SSHSERVER UXMISC uxsignal uxnoise uxgss uxnogtk

View File

@ -900,6 +900,16 @@ bool crcda_detect(ptrlen packet, ptrlen iv)
#define return_void(out, expression) (expression)
static void no_progress(void *param, int action, int phase, int iprogress) {}
mp_int *primegen_wrapper(
int bits, int modulus, int residue, mp_int *factor, unsigned firstbits)
{
return primegen(bits, modulus, residue, factor,
0, no_progress, NULL, firstbits);
}
#define primegen primegen_wrapper
#define VALTYPE_TYPEDEF(n,t,f) \
typedef t TD_val_##n; \
typedef t *TD_out_val_##n;
@ -967,8 +977,19 @@ typedef RsaSsh1Order TD_rsaorder;
return_##rettype(out, function(arg1, arg2, arg3, arg4)); \
}
#define FUNC5(rettype, function, type1, type2, type3, type4, type5) \
static void handle_##function(BinarySource *in, strbuf *out) { \
TD_##type1 arg1 = get_##type1(in); \
TD_##type2 arg2 = get_##type2(in); \
TD_##type3 arg3 = get_##type3(in); \
TD_##type4 arg4 = get_##type4(in); \
TD_##type5 arg5 = get_##type5(in); \
return_##rettype(out, function(arg1, arg2, arg3, arg4, arg5)); \
}
#include "testcrypt.h"
#undef FUNC5
#undef FUNC4
#undef FUNC3
#undef FUNC2
@ -1002,9 +1023,11 @@ static void process_line(BinarySource *in, strbuf *out)
#define FUNC2 FUNC
#define FUNC3 FUNC
#define FUNC4 FUNC
#define FUNC5 FUNC
#include "testcrypt.h"
#undef FUNC5
#undef FUNC4
#undef FUNC3
#undef FUNC2

View File

@ -238,6 +238,7 @@ FUNC1(uint, crc32_rfc1662, val_string_ptrlen)
FUNC1(uint, crc32_ssh1, val_string_ptrlen)
FUNC2(uint, crc32_update, uint, val_string_ptrlen)
FUNC2(boolean, crcda_detect, val_string_ptrlen, val_string_ptrlen)
FUNC5(val_mpint, primegen, uint, uint, uint, val_mpint, uint)
/*
* These functions aren't part of PuTTY's own API, but are additions