version 1.483, 2018/07/11 18:53:29 |
version 1.484, 2018/07/16 07:06:50 |
|
|
u_int n_ids, n_certs; |
u_int n_ids, n_certs; |
char *identity_files[SSH_MAX_IDENTITY_FILES]; |
char *identity_files[SSH_MAX_IDENTITY_FILES]; |
struct sshkey *identity_keys[SSH_MAX_IDENTITY_FILES]; |
struct sshkey *identity_keys[SSH_MAX_IDENTITY_FILES]; |
|
int identity_file_userprovided[SSH_MAX_IDENTITY_FILES]; |
char *certificate_files[SSH_MAX_CERTIFICATE_FILES]; |
char *certificate_files[SSH_MAX_CERTIFICATE_FILES]; |
struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES]; |
struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES]; |
|
int certificate_file_userprovided[SSH_MAX_CERTIFICATE_FILES]; |
#ifdef ENABLE_PKCS11 |
#ifdef ENABLE_PKCS11 |
struct sshkey **keys; |
struct sshkey **keys; |
int nkeys; |
int nkeys; |
|
|
n_ids = n_certs = 0; |
n_ids = n_certs = 0; |
memset(identity_files, 0, sizeof(identity_files)); |
memset(identity_files, 0, sizeof(identity_files)); |
memset(identity_keys, 0, sizeof(identity_keys)); |
memset(identity_keys, 0, sizeof(identity_keys)); |
|
memset(identity_file_userprovided, 0, |
|
sizeof(identity_file_userprovided)); |
memset(certificate_files, 0, sizeof(certificate_files)); |
memset(certificate_files, 0, sizeof(certificate_files)); |
memset(certificates, 0, sizeof(certificates)); |
memset(certificates, 0, sizeof(certificates)); |
|
memset(certificate_file_userprovided, 0, |
|
sizeof(certificate_file_userprovided)); |
|
|
#ifdef ENABLE_PKCS11 |
#ifdef ENABLE_PKCS11 |
if (options.pkcs11_provider != NULL && |
if (options.pkcs11_provider != NULL && |
|
|
free(options.identity_files[i]); |
free(options.identity_files[i]); |
identity_files[n_ids] = filename; |
identity_files[n_ids] = filename; |
identity_keys[n_ids] = public; |
identity_keys[n_ids] = public; |
|
identity_file_userprovided[n_ids] = |
|
options.identity_file_userprovided[i]; |
if (++n_ids >= SSH_MAX_IDENTITY_FILES) |
if (++n_ids >= SSH_MAX_IDENTITY_FILES) |
continue; |
continue; |
|
|
|
|
/* NB. leave filename pointing to private key */ |
/* NB. leave filename pointing to private key */ |
identity_files[n_ids] = xstrdup(filename); |
identity_files[n_ids] = xstrdup(filename); |
identity_keys[n_ids] = public; |
identity_keys[n_ids] = public; |
|
identity_file_userprovided[n_ids] = |
|
options.identity_file_userprovided[i]; |
n_ids++; |
n_ids++; |
} |
} |
|
|
|
|
} |
} |
certificate_files[n_certs] = filename; |
certificate_files[n_certs] = filename; |
certificates[n_certs] = public; |
certificates[n_certs] = public; |
|
certificate_file_userprovided[n_certs] = |
|
options.certificate_file_userprovided[i]; |
++n_certs; |
++n_certs; |
} |
} |
|
|
options.num_identity_files = n_ids; |
options.num_identity_files = n_ids; |
memcpy(options.identity_files, identity_files, sizeof(identity_files)); |
memcpy(options.identity_files, identity_files, sizeof(identity_files)); |
memcpy(options.identity_keys, identity_keys, sizeof(identity_keys)); |
memcpy(options.identity_keys, identity_keys, sizeof(identity_keys)); |
|
memcpy(options.identity_file_userprovided, |
|
identity_file_userprovided, sizeof(identity_file_userprovided)); |
|
|
options.num_certificate_files = n_certs; |
options.num_certificate_files = n_certs; |
memcpy(options.certificate_files, |
memcpy(options.certificate_files, |
certificate_files, sizeof(certificate_files)); |
certificate_files, sizeof(certificate_files)); |
memcpy(options.certificates, certificates, sizeof(certificates)); |
memcpy(options.certificates, certificates, sizeof(certificates)); |
|
memcpy(options.certificate_file_userprovided, |
|
certificate_file_userprovided, |
|
sizeof(certificate_file_userprovided)); |
} |
} |
|
|
static void |
static void |