keys: Remove obsolete signatue functions.
Этот коммит содержится в:
родитель
ab1a66ca7b
Коммит
696f574a56
@ -49,17 +49,6 @@ struct ssh_private_key_struct {
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef struct signature_struct {
|
||||
int type;
|
||||
#ifdef HAVE_LIBGCRYPT
|
||||
gcry_sexp_t dsa_sign;
|
||||
gcry_sexp_t rsa_sign;
|
||||
#elif defined HAVE_LIBCRYPTO
|
||||
DSA_SIG *dsa_sign;
|
||||
ssh_string rsa_sign;
|
||||
#endif
|
||||
} SIGNATURE;
|
||||
|
||||
const char *ssh_type_to_char(int type);
|
||||
int ssh_type_from_name(const char *name);
|
||||
|
||||
@ -70,8 +59,5 @@ ssh_private_key privatekey_make_rsa(ssh_session session, ssh_buffer buffer,
|
||||
ssh_public_key publickey_make_dss(ssh_session session, ssh_buffer buffer);
|
||||
ssh_public_key publickey_make_rsa(ssh_session session, ssh_buffer buffer, int type);
|
||||
ssh_public_key publickey_from_string(ssh_session session, ssh_string pubkey_s);
|
||||
ssh_string signature_to_string(SIGNATURE *sign);
|
||||
SIGNATURE *signature_from_string(ssh_session session, ssh_string signature,ssh_public_key pubkey,int needed_type);
|
||||
void signature_free(SIGNATURE *sign);
|
||||
|
||||
#endif /* KEYS_H_ */
|
||||
|
31
src/keys.c
31
src/keys.c
@ -264,37 +264,6 @@ error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void signature_free(SIGNATURE *sign) {
|
||||
if (sign == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch(sign->type) {
|
||||
case SSH_KEYTYPE_DSS:
|
||||
#ifdef HAVE_LIBGCRYPT
|
||||
gcry_sexp_release(sign->dsa_sign);
|
||||
#elif defined HAVE_LIBCRYPTO
|
||||
DSA_SIG_free(sign->dsa_sign);
|
||||
#endif
|
||||
break;
|
||||
case SSH_KEYTYPE_RSA:
|
||||
case SSH_KEYTYPE_RSA1:
|
||||
#ifdef HAVE_LIBGCRYPT
|
||||
gcry_sexp_release(sign->rsa_sign);
|
||||
#elif defined HAVE_LIBCRYPTO
|
||||
SAFE_FREE(sign->rsa_sign);
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
/* FIXME Passing NULL segfaults */
|
||||
#if 0
|
||||
ssh_log(NULL, SSH_LOG_RARE, "Freeing a signature with no type!\n"); */
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
SAFE_FREE(sign);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/* vim: set ts=4 sw=4 et cindent: */
|
||||
|
84
src/legacy.c
84
src/legacy.c
@ -536,90 +536,6 @@ ssh_string publickey_to_string(ssh_public_key pubkey) {
|
||||
return key_blob;
|
||||
}
|
||||
|
||||
ssh_string signature_to_string(SIGNATURE *sign)
|
||||
{
|
||||
ssh_signature sig;
|
||||
ssh_string sig_blob;
|
||||
int rc;
|
||||
|
||||
if (sign == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sig = ssh_signature_new();
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sig->type = sign->type;
|
||||
sig->dsa_sig = sign->dsa_sign;
|
||||
sig->rsa_sig = sign->rsa_sign;
|
||||
|
||||
rc = ssh_pki_export_signature_blob(sig, &sig_blob);
|
||||
sig->dsa_sig = NULL;
|
||||
sig->rsa_sig = NULL;
|
||||
ssh_signature_free(sig);
|
||||
if (rc < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return sig_blob;
|
||||
}
|
||||
|
||||
SIGNATURE *signature_from_string(ssh_session session,
|
||||
ssh_string signature,
|
||||
ssh_public_key pubkey,
|
||||
int needed_type)
|
||||
{
|
||||
SIGNATURE *sign;
|
||||
ssh_signature sig;
|
||||
ssh_key key;
|
||||
int rc;
|
||||
|
||||
if (session == NULL || signature == NULL || pubkey == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
key = ssh_key_new();
|
||||
if (key == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
key->type = pubkey->type;
|
||||
key->type_c = pubkey->type_c;
|
||||
key->flags = SSH_KEY_FLAG_PUBLIC;
|
||||
key->dsa = pubkey->dsa_pub;
|
||||
key->rsa = pubkey->rsa_pub;
|
||||
|
||||
rc = ssh_pki_import_signature_blob(signature, key, &sig);
|
||||
key->dsa = NULL;
|
||||
key->rsa = NULL;
|
||||
ssh_key_free(key);
|
||||
if (rc < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((enum ssh_keytypes_e)needed_type != sig->type) {
|
||||
ssh_signature_free(sig);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sign = malloc(sizeof(struct signature_struct));
|
||||
if (sign == NULL) {
|
||||
ssh_signature_free(sig);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sign->type = sig->type;
|
||||
sign->dsa_sign = sig->dsa_sig;
|
||||
sig->dsa_sig = NULL;
|
||||
sign->rsa_sign = sig->rsa_sig;
|
||||
sig->rsa_sig = NULL;
|
||||
|
||||
ssh_signature_free(sig);
|
||||
return sign;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* SERVER SUPPORT
|
||||
****************************************************************************/
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user