pki_crypto: fix DSA signature extraction

Fix the DSA portion of 'pki_signature_to_blob': before this change, it is
possible to observe signature validation (sporadically) when testing with
OpenSSH clients.  The problem ended up being the following snippet which
did not account for the case when 'ssh_string_len(x)' may be less than 20:

  r = make_bignum_string(sig->dsa_sig->r);
  ...
  memcpy(buffer,
         ((char *) ssh_string_data(r)) + ssh_string_len(r) - 20,
         20);

Above consider the case that ssh_string_len(r) is 19; in that case the
memcpy unintentionally starts in the wrong place.  The same situation
can happen for value 's' in this code.

To fix, adjust the offsets used for the input and output pointers, taking
into account that the lengths of 'r' and 's' can be less than 20.  With
this fix I am no longer able to reproduce the original failure in
signature validation.