Commit b3e21dc8 authored by Niels Möller's avatar Niels Möller

*** empty log message ***

Rev: src/abstract_crypto.h:1.9
Rev: src/lshd.c:1.6
Rev: src/publickey_crypto.c:1.9
Rev: src/server.c:1.6
Rev: src/server.h:1.3
parent 40e1b8ce
......@@ -133,4 +133,10 @@ struct signature_algorithm
UINT8 *public);
};
#define MAKE_SIGNER(a, pl, p, sl, s) \
((a)->make_signer((a), (pl), (p), (sl), (s)))
#define MAKE_VERIFIER(a, pl, p) \
((a)->make_verifier((a), (pl), (p)))
#endif /* LSH_ABSTRACT_CRYPTO_H_INCLUDED */
......@@ -46,6 +46,64 @@ void usage()
exit(1);
}
struct signer *secret_key;
struct lsh_string *public_key;
/* A key generated by gnupg */
void init_host_key(struct randomness *r)
{
mpz_t p, q, g, y, a;
mpz_t tmp;
lsh_string *s;
mpz_init_set_str(p,
"BC7797D55CF2449CA4B02396246AF5C75CA38C52B6F2E543"
"6754198B137B25B0A81DFE269D5CDFD0AEA290A32BA5B918"
"B58D64762D40EAA8D70F282B3AC4A7771171B1B1D1AE89F4"
"1CD091FE95A6F42A2340081F9E97A4B5F953DE223F10F878"
"4C0619A9979643E5325DF71C9C088F3BC82FA0A6C47B5C64"
"BC07A31B9CDB2B07", 6);
mpz_init_set_str(q,
"867F7E6563B3FAF19B65C83E9B843150C5CC2201", 16);
mpz_init_set_str(g,
"7FA83EAEDFD8679A4A80C869AD7E353F3B517569C2079C79"
"97EA6655764581B073F71AA15C07A789AEB213B106741AAB"
"CA81B8300B1F8510D3CD1C3D9D7D11640C1608E8E2E71527"
"68B8FDCB5544E29A020D14CC5C12E264C59E57E9F6832DA7"
"10B805CD9866C1110D60069D31D5A72D1A1ED96F2B11CFEF"
"7AB347F0632CB0C7", 16);
mpz_init_set_str(y,
"2DA5B458DF3616097FA22DB6BDDD31A29E532054D4C208F7"
"EBF63EB2476E8E98E0885CFBC5669B56EC834E42058E8BCF"
"C259CA1BE981D7721306709499DE27E7B13F62359D9520D1"
"3D73C62E8E5C5F6B8E2C70217EC3B557FBCB98535BE3C6EE"
"0C71DEC1FE9C6791D3780DD8D593D5030969D303A5818B01"
"C4B855C07E8C4F64", 16);
mpz_set_str(a,
"295190AEDBBD6EBD2F817F7D8CCC8B0095DCD82E", 16);
mpz_init_set(tmp, g);
mpz_powm(tmp, tmp, a, p);
if (mpz_cmp(tmp, y))
fatal("Test key invalid\n");
mpz_clear(tmp);
public_key = ssh_format("%a%n%n%n%n", ATOM_SSH_DSS, p, q, g, y);
s = ssh_format("%n", a);
secret_key = MAKE_SIGNER(make_dss_algorithm(r),
public_key->length, public_key->data,
s->length, s->data);
lsh_free(s);
mpz_clear(p);
mpz_clear(q);
mpz_clear(g);
mpz_clear(y);
mpz_clear(a);
}
int main(int argc, char **argv)
{
char *host = NULL; /* Interface to bind */
......@@ -91,7 +149,7 @@ int main(int argc, char **argv)
if (!io_listen(&backend, &local,
make_server_callback(&backend,
"lsh - a free ssh",
"lshd - a free ssh",
BLOCK_SIZE)))
{
werror("lsh: Connection failed: %s\n", strerror(errno));
......
......@@ -130,6 +130,12 @@ static struct lsh_string *do_dss_sign(struct signer *c,
return signature;
}
static struct lsh_string *dss_public_key(struct signer *dss)
{
struct
return ssh_format("%a%n%n%n%n", ATOM_SSH_DSS, dss->p, dss->q, dss->g, dss->y);
}
int do_dss_verify(struct verifier *c,
UINT32 length,
UINT8 *msg,
......@@ -571,3 +577,4 @@ int dh_verify_server_msg(struct diffie_hellman_instance *self,
return VERIFY(v, self->hash->hash_size, digest,
self->signature->length, self->signature->data);
}
......@@ -132,7 +132,10 @@ struct read_handler *make_server_read_line(struct ssh_connection *s)
struct fd_callback *make_server_callback(struct io_backend *b,
char *comment,
UINT32 block_size)
UINT32 block_size,
struct signer *secret,
struct lsh_string *host_key,
struct randomness *r)
{
struct server_callback *connected = xalloc(sizeof(struct server_callback));
......@@ -141,6 +144,9 @@ struct fd_callback *make_server_callback(struct io_backend *b,
connected->backend = b;
connected->block_size = block_size;
connected->id_comment = comment;
connected->secret = secret;
connected->host_key = host_key;
connected->random = r;
return &connected->super;
}
......
......@@ -32,6 +32,10 @@ struct server_callback
{
struct fd_callback super;
struct io_backend *backend;
struct signer *secret; /* secret key */
struct lsh_string *host_key; /* public key */
struct randomness *random;
UINT32 block_size;
char *id_comment;
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment