{"push_id":665737459,"size":15,"distinct_size":2,"ref":"refs/heads/moonshot-gssapi","head":"b9eb36bc4776607e4400c4c4543cdd72e680c8ee","before":"b7ec36753e16a7a6669356e9589ab6ddc05b18ba","commits":[{"sha":"8423f79e326f463364aa1274180cd39eba1b98d9","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Fix layout overflow in Windows PuTTYgen due to ED25519.\n\nAdding an extra radio button to the key-type selector caused it to\nwrap on to another line and push the bottom of the containing control\nbox down off the bottom of the window.\n\nIn the long term, should more public key formats continue to appear,\nwe'll probably have to replace the radio buttons with something more\nextensible like a drop-down list. For the moment, though, I've fixed\nit by just reducing the space per radio button to bring all five\ncontrols back on to the same line.\n\nTo fit the text into the smaller space, I also removed the 'SSH-2'\nprefix on each key type, which ought to be unnecessary these days\nsince SSH-2 is a well established default. Only the SSH-1 RSA key type\nis still labelled with an SSH version. (And I've moved it to the far\nend rather than the start of the line, while I'm here.)","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/8423f79e326f463364aa1274180cd39eba1b98d9"},{"sha":"79fe96155a9486a58c1ce588069975346b4f4a22","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Const-correctness in struct ssh_hash.\n\nThe 'bytes' function should take a const void * as input, not a void *.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/79fe96155a9486a58c1ce588069975346b4f4a22"},{"sha":"a5fc95b715256a7db4492ccf6872788613f105c4","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Const-correctness of name fields in struct ssh_*.\n\nAll the name strings in ssh_cipher, ssh_mac, ssh_hash, ssh_signkey\npoint to compile-time string literals, hence should obviously be const\nchar *.\n\nMost of these const-correctness patches are just a mechanical job of\nadding a 'const' in the one place you need it right now, and then\nchasing the implications through the code adding further consts until\nit compiles. But this one has actually shown up a bug: the 'algorithm'\noutput parameter in ssh2_userkey_loadpub was sometimes returning a\npointer to a string literal, and sometimes a pointer to dynamically\nallocated memory, so callers were forced to either sometimes leak\nmemory or sometimes free a bad thing. Now it's consistently\ndynamically allocated, and should be freed everywhere too.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/a5fc95b715256a7db4492ccf6872788613f105c4"},{"sha":"870ad6ab0780c68e0e71d1a14d394aa543a8b89e","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Pass the ssh_signkey structure itself to public key methods.\n\nNot all of them, but the ones that don't get a 'void *key' parameter.\nThis means I can share methods between multiple ssh_signkey\nstructures, and still give those methods an easy way to find out which\npublic key method they're dealing with, by loading parameters from a\nlarger structure in which the ssh_signkey is the first element.\n\n(In OO terms, I'm arranging that all static methods of my public key\nclasses get a pointer to the class vtable, to make up for not having a\npointer to the class instance.)\n\nI haven't actually done anything with the new facility in this commit,\nbut it will shortly allow me to clean up the constant lookups by curve\nname in the ECDSA code.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/870ad6ab0780c68e0e71d1a14d394aa543a8b89e"},{"sha":"1293334ebf50805a3e150d8808f7013bdcf8f1b3","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Provide an 'extra' pointer in ssh_signkey and ssh_kex.\n\nThis gives families of public key and kex functions (by which I mean\nthose sharing a set of methods) a place to store parameters that allow\nthe methods to vary depending on which exact algorithm is in use.\n\nThe ssh_kex structure already had a set of parameters specific to\nDiffie-Hellman key exchange; I've moved those into sshdh.c and made\nthem part of the 'extra' structure for that family only, so that\nunrelated kex methods don't have to faff about saying NULL,NULL,0,0.\n(This required me to write an extra accessor function for ssh.c to ask\nwhether a DH method was group-exchange style or fixed-group style, but\nthat doesn't seem too silly.)","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/1293334ebf50805a3e150d8808f7013bdcf8f1b3"},{"sha":"7db526c7306a12d86bff9ce1de00e9838987c0af","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Clean up elliptic curve selection and naming.\n\nThe ec_name_to_curve and ec_curve_to_name functions shouldn't really\nhave had to exist at all: whenever any part of the PuTTY codebase\nstarts using sshecc.c, it's starting from an ssh_signkey or ssh_kex\npointer already found by some other means. So if we make sure not to\nlose that pointer, we should never need to do any string-based lookups\nto find the curve we want, and conversely, when we need to know the\nname of our curve or our algorithm, we should be able to look it up as\na straightforward const char * starting from the algorithm pointer.\n\nThis commit cleans things up so that that is indeed what happens. The\nssh_signkey and ssh_kex structures defined in sshecc.c now have\n'extra' fields containing pointers to all the necessary stuff;\nec_name_to_curve and ec_curve_to_name have been completely removed;\nstruct ec_curve has a string field giving the curve's name (but only\nfor those curves which _have_ a name exposed in the wire protocol,\ni.e. the three NIST ones); struct ec_key keeps a pointer to the\nssh_signkey it started from, and uses that to remember the algorithm\nname rather than reconstructing it from the curve. And I think I've\ngot rid of all the ad-hockery scattered around the code that switches\non curve->fieldBits or manually constructs curve names using stuff\nlike sprintf(\"nistp%d\"); the only remaining switch on fieldBits\n(necessary because that's the UI for choosing a curve in PuTTYgen) is\nat least centralised into one place in sshecc.c.\n\nOne user-visible result is that the format of ed25519 host keys in the\nregistry has changed: there's now no curve name prefix on them,\nbecause I think it's not really right to make up a name to use. So any\nearly adopters who've been using snapshot PuTTY in the last week will\nbe inconvenienced; sorry about that.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/7db526c7306a12d86bff9ce1de00e9838987c0af"},{"sha":"a8c4e67ff9ebdced0a4fb393f934b22cb5aae02f","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Clean up hash selection in ECDSA.\n\nRemoved another set of ad-hoc tests of the key size to decide which\nhash to use for the signature system, and replaced them with a\nstraightforward pointer to an ssh_hash structure in the 'extra' area.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/a8c4e67ff9ebdced0a4fb393f934b22cb5aae02f"},{"sha":"b5fd5969f4593917ccd07b34c06f0968931b695f","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Unix Pageant: fix further double-frees.\n\nNo need to sfree(err) before going to the cleanup code, because the\nwhole point of shared cleanup code is that that will do it for us.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/b5fd5969f4593917ccd07b34c06f0968931b695f"},{"sha":"fb4fbe11588d3e53be99909f57dd179d1105aaf5","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Remove an entire unused function in Windows PuTTYgen.\n\nWhen I did the public-key output revamp, I completely failed to notice\nI'd orphaned this function :-) Clean it up.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/fb4fbe11588d3e53be99909f57dd179d1105aaf5"},{"sha":"89da2ddf564a93414ee9ab2df3f053608094e417","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Giant const-correctness patch of doom!\n\nHaving found a lot of unfixed constness issues in recent development,\nI thought perhaps it was time to get proactive, so I compiled the\nwhole codebase with -Wwrite-strings. That turned up a huge load of\nconst problems, which I've fixed in this commit: the Unix build now\ngoes cleanly through with -Wwrite-strings, and the Windows build is as\nclose as I could get it (there are some lingering issues due to\noccasional Windows API functions like AcquireCredentialsHandle not\nhaving the right constness).\n\nNotable fallout beyond the purely mechanical changing of types:\n - the stuff saved by cmdline_save_param() is now explicitly\n   dupstr()ed, and freed in cmdline_run_saved.\n - I couldn't make both string arguments to cmdline_process_param()\n   const, because it intentionally writes to one of them in the case\n   where it's the argument to -pw (in the vain hope of being at least\n   slightly friendly to 'ps'), so elsewhere I had to temporarily\n   dupstr() something for the sake of passing it to that function\n - I had to invent a silly parallel version of const_cmp() so I could\n   pass const string literals in to lookup functions.\n - stripslashes() in pscp.c and psftp.c has the annoying strchr nature","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/89da2ddf564a93414ee9ab2df3f053608094e417"},{"sha":"64d283702bbf0bde117fec5306d7f5cccfe75570","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Windows PuTTYgen: fix mis-setting of radio buttons.\n\nThe menu options and radio buttons for key type were not consistently\nsetting each other when selected: in particular, selecting from the\nmenu did not cause the ED25519 radio button to be either set or unset\nwhen that would have been appropriate.\n\nLooks as if I failed to catch in code review the fact that we should\nhave _one_ call to each of CheckRadioButton and CheckMenuRadioItem,\nand they should both have the right 'first' and 'last' parameters","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/64d283702bbf0bde117fec5306d7f5cccfe75570"},{"sha":"8dab2c24404b6f14ffb9472799d7621077a73bd6","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Remove pointless NULL checks in the ECC code.\n\nsnew(), and most of the bignum functions, are deliberately written to\nfail an assertion and terminate the program rather than return NULL,\nso there's no point carefully checking their every return value for\nNULL. This removes a huge amount of pointless error-checking code, and\nmakes the elliptic curve arithmetic almost legible in places :-)\n\nI've kept error checks after modinv(), because that can return NULL if\nasked to invert zero. bigsub() can also fail in principle, because our\nbignums are non-negative only, but in the couple of cases where it's\nused there's a preceding compare that should prevent it, so I've just\nadded assertions.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/8dab2c24404b6f14ffb9472799d7621077a73bd6"},{"sha":"dee305c318fa9b9f2213032dfaf0ccd4c220f16d","author":{"email":"7951276d108732f685ad39766351430a193de32d@pobox.com","name":"Simon Tatham"},"message":"Fix mpint signedness bug in importing PEM ECDSA keys.\n\nThe OpenSSH PEM format contains a big integer with the top bit\npotentially set, which we handle by copying the data into a faked up\ninstance of our own private key format, and passing that to\necdsa_createkey(). But our own private key format expects an SSH-2\nstandard mpint, i.e. with the top bit reliably clear, so this might\nfail for no good reason.\n\nFixed by prefixing a zero byte unconditionally when constructing the\nfake private blob.","distinct":false,"url":"https://api.github.com/repos/spaetow/putty/commits/dee305c318fa9b9f2213032dfaf0ccd4c220f16d"},{"sha":"b3df9ead128deaa031a6e1e10b7ac0b3bec2fda4","author":{"email":"ecc2a635afbdcc1621dd723a55fdca853dd84a70@jisc.ac.uk","name":"Stefan Paetow"},"message":"Added Moonshot (ABFAB) mechanism definitions and ability to try the mechanisms one by one.\nLogging and formatting changes (\"starting\" instead of \"initializing\").\nNo UI code to possibly re-arrange the precedence of the mechanisms.\nTested with vanilla Windows 7 x64 in Workgroup and Domain configurations.","distinct":true,"url":"https://api.github.com/repos/spaetow/putty/commits/b3df9ead128deaa031a6e1e10b7ac0b3bec2fda4"},{"sha":"b9eb36bc4776607e4400c4c4543cdd72e680c8ee","author":{"email":"ecc2a635afbdcc1621dd723a55fdca853dd84a70@jisc.ac.uk","name":"Stefan Paetow"},"message":"Merge branch 'moonshot-gssapi' of https://github.com/spaetow/putty into moonshot-gssapi","distinct":true,"url":"https://api.github.com/repos/spaetow/putty/commits/b9eb36bc4776607e4400c4c4543cdd72e680c8ee"}]}