{"action":"created","issue":{"url":"https://api.github.com/repos/sshnet/SSH.NET/issues/496","repository_url":"https://api.github.com/repos/sshnet/SSH.NET","labels_url":"https://api.github.com/repos/sshnet/SSH.NET/issues/496/labels{/name}","comments_url":"https://api.github.com/repos/sshnet/SSH.NET/issues/496/comments","events_url":"https://api.github.com/repos/sshnet/SSH.NET/issues/496/events","html_url":"https://github.com/sshnet/SSH.NET/pull/496","id":386591937,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM1Mjc5OTA0","number":496,"title":"Elliptic Curves","user":{"login":"darinkes","id":637743,"node_id":"MDQ6VXNlcjYzNzc0Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/637743?v=4","gravatar_id":"","url":"https://api.github.com/users/darinkes","html_url":"https://github.com/darinkes","followers_url":"https://api.github.com/users/darinkes/followers","following_url":"https://api.github.com/users/darinkes/following{/other_user}","gists_url":"https://api.github.com/users/darinkes/gists{/gist_id}","starred_url":"https://api.github.com/users/darinkes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darinkes/subscriptions","organizations_url":"https://api.github.com/users/darinkes/orgs","repos_url":"https://api.github.com/users/darinkes/repos","events_url":"https://api.github.com/users/darinkes/events{/privacy}","received_events_url":"https://api.github.com/users/darinkes/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2018-12-02T19:40:28Z","updated_at":"2018-12-05T11:04:11Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/sshnet/SSH.NET/pulls/496","html_url":"https://github.com/sshnet/SSH.NET/pull/496","diff_url":"https://github.com/sshnet/SSH.NET/pull/496.diff","patch_url":"https://github.com/sshnet/SSH.NET/pull/496.patch"},"body":"Latest approach to implement Elliptic Curves Support in SSH.NET.\r\n\r\n- ED25519 and Curve25519 for KEX, Hostkey and Private Keys\r\n    - Import of https://github.com/CodesInChaos/Chaos.NaCl\r\n    - Timing Safe implementation\r\n    - Public Domain\r\n- ECDH\r\n    - Minimal Import (just the needed parts) of http://www.bouncycastle.org/csharp/\r\n    - MIT like License\r\n    - Microsoft's ECDiffieHellmanCng doesn't work... :/\r\n    - Timing Safe is not important for KEX, since keys don't live long. Couldn't find any verification that it resists timing attacks\r\n- ECDSA for Hostkey and Private Keys\r\n    - System.Security.Cryptography.ECDsaCng\r\n    - Timing Safe (hopefully! ;))\r\n\r\nPerformance-Comparison Key-Exchange:\r\n\r\n- Code\r\n\r\n```csharp\r\nvar sw = Stopwatch.StartNew();\r\nusing (var client = new SshClient(coninfo))\r\n{\r\n     client.Connect();\r\n     Console.WriteLine(client.RunCommand(\"hostname\").Result);\r\n     client.Disconnect();\r\n}\r\nsw.Stop();\r\nConsole.WriteLine(\"Time taken: {0}ms\", sw.Elapsed.TotalMilliseconds);\r\n```\r\n- diffie-hellman-group-exchange-sha256\r\n`Time taken: 2365,9079ms`\r\n- curve25519-sha256\r\n`Time taken: 1169,3554ms`\r\n- ecdh-sha2-nistp256\r\n`Time taken: 1053,3225ms`\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/sshnet/SSH.NET/issues/comments/444446943","html_url":"https://github.com/sshnet/SSH.NET/pull/496#issuecomment-444446943","issue_url":"https://api.github.com/repos/sshnet/SSH.NET/issues/496","id":444446943,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NDQ0Njk0Mw==","user":{"login":"darinkes","id":637743,"node_id":"MDQ6VXNlcjYzNzc0Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/637743?v=4","gravatar_id":"","url":"https://api.github.com/users/darinkes","html_url":"https://github.com/darinkes","followers_url":"https://api.github.com/users/darinkes/followers","following_url":"https://api.github.com/users/darinkes/following{/other_user}","gists_url":"https://api.github.com/users/darinkes/gists{/gist_id}","starred_url":"https://api.github.com/users/darinkes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darinkes/subscriptions","organizations_url":"https://api.github.com/users/darinkes/orgs","repos_url":"https://api.github.com/users/darinkes/repos","events_url":"https://api.github.com/users/darinkes/events{/privacy}","received_events_url":"https://api.github.com/users/darinkes/received_events","type":"User","site_admin":false},"created_at":"2018-12-05T11:04:11Z","updated_at":"2018-12-05T11:04:11Z","author_association":"NONE","body":"> > @drieseng\r\n> > I think there can be done more. E.g. the in the ASN.1 folder of BouncyCastle. And remove stuff marked as obsolete.\r\n> \r\n> Okay, was wrong here twice :)\r\n> ASN.1 is a chain of dependencies and BouncyCastle relies internally on stuff they marked as obsolete.\r\n\r\nGot rid most of the stuff in the asn.1 folder with some minor adjustments in the sources. Over 10k Lines less than before.\r\n"}}
{"actor":{"display_login":"darinkes"}}