Hello Everyone,

I am trying to implement a SSH proxy. In the process of learning I am
trying out libssh*/examples/ssh_server.c.

I was able to complie and run the server.


I am trying public key based authentication.

On the client side I am connecting using following command:

ssh -p 2222 -vv -i ./id_rsa user@192.168.64.2


I am running ssh_server like this ( I have done some minor modifications
w.r.t argp and have retained only pthread based solution)


./ssh_server -a ./id_rsa.pub -r ./ssh_host_rsa_key  -p 2222 -v 0.0.0.0


With this I am able to login successfully on the server.


The second case which I tried was to sign the user key with CA. This
resulted me with id_rsa-cert.pub on client side.


I tried the same exercise to connect to the server.

On server side in auth_publickey function I  added 2 prints to print


1. ssh_key_type

2.  ssh_key_is_public


The first function ssh_key_type resulted as SSH_KEYTYPE_RSA  value 2 and
the second function returned as  1 (is_public ).

I was expecting it to be print SSH_KEYTYPE_RSA_CERT01   and 1.


My Question:


In auth_publickey  I want to access the user certificate and then verify
the CA signature.  Instead of verifying the authorisedKeys  I want to
verify it against CA pub key.

A functionality similar to Configuring TrustedUserCAKeys in openssh server.


How can I get hold of the user certificate ?


In  ssh_key_struct I see there is a member variable


  ssh_buffer cert;

    *enum* ssh_keytypes_e cert_type;

};


I did not find any function to access the ssh_key->cert.


Please point me to some code reference or documentation.


Thanks,

Chidanand

Reply via email to