public object From(AgentReader reader) { _ = reader.ReadUInt32(); // msglen var answer = (AgentMessageType)reader.ReadByte(); if (answer != AgentMessageType.SSH2_AGENT_IDENTITIES_ANSWER) { throw new Exception($"Wrong Answer {answer}"); } var keys = new List <PrivateKeyAgent>(); var numKeys = reader.ReadUInt32(); var i = 0; while (i < numKeys) { var keyData = reader.ReadStringAsBytes(); using var keyStream = new MemoryStream(keyData); using var keyReader = new AgentReader(keyStream); var keyType = keyReader.ReadString(); Key key; switch (keyType) { case "ssh-rsa": var exponent = keyReader.ReadBignum(); var modulus = keyReader.ReadBignum(); key = new RsaAgentKey(modulus, exponent, _agent, keyData); break; case "ecdsa-sha2-nistp256": // Fallthrough case "ecdsa-sha2-nistp384": // Fallthrough case "ecdsa-sha2-nistp521": var curve = keyReader.ReadString(); var q = keyReader.ReadBignum2(); key = new EcdsaAgentKey(curve, q, _agent, keyData); break; case "ssh-ed25519": var pK = keyReader.ReadBignum2(); key = new ED25519AgentKey(pK, _agent, keyData); break; default: throw new Exception($"Unsupported KeyType {keyType}"); } key.Comment = reader.ReadString(); keys.Add(new PrivateKeyAgent(key)); i++; } return(keys.ToArray()); }
public object?From(AgentReader reader) { _ = reader.ReadUInt32(); // msglen var answer = (AgentMessageType)reader.ReadByte(); if (answer != AgentMessageType.SSH_AGENT_SUCCESS) { throw new Exception($"Wrong Answer {answer}"); } return(null); }
public object From(AgentReader reader) { _ = reader.ReadUInt32(); // msglen var answer = (AgentMessageType)reader.ReadByte(); if (answer != AgentMessageType.SSH2_AGENT_SIGN_RESPONSE) { throw new Exception($"Wrong Answer {answer}"); } var signatureData = reader.ReadStringAsBytes(); using var signatureStream = new MemoryStream(signatureData); using var signatureReader = new AgentReader(signatureStream); // identifier _ = signatureReader.ReadString(); return(signatureReader.ReadStringAsBytes()); }