mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-08 19:02:06 +03:00
pki: Introduce ssh_signature.
This commit is contained in:
43
src/pki.c
43
src/pki.c
@@ -229,6 +229,49 @@ int ssh_key_is_private(const ssh_key k) {
|
||||
return (k->flags & SSH_KEY_FLAG_PRIVATE);
|
||||
}
|
||||
|
||||
ssh_signature ssh_signature_new(void)
|
||||
{
|
||||
struct ssh_signature_struct *sig;
|
||||
|
||||
sig = malloc(sizeof(struct ssh_signature_struct));
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
ZERO_STRUCTP(sig);
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
void ssh_signature_free(ssh_signature sig)
|
||||
{
|
||||
if (sig == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch(sig->type) {
|
||||
case SSH_KEYTYPE_DSS:
|
||||
#ifdef HAVE_LIBGCRYPT
|
||||
gcry_sexp_release(sig->dsa_sig);
|
||||
#elif defined HAVE_LIBCRYPTO
|
||||
DSA_SIG_free(sig->dsa_sig);
|
||||
#endif
|
||||
break;
|
||||
case SSH_KEYTYPE_RSA:
|
||||
case SSH_KEYTYPE_RSA1:
|
||||
#ifdef HAVE_LIBGCRYPT
|
||||
gcry_sexp_release(sig->rsa_sig);
|
||||
#elif defined HAVE_LIBCRYPTO
|
||||
SAFE_FREE(sig->rsa_sig);
|
||||
#endif
|
||||
break;
|
||||
case SSH_KEYTYPE_ECDSA:
|
||||
case SSH_KEYTYPE_UNKNOWN:
|
||||
break;
|
||||
}
|
||||
|
||||
SAFE_FREE(sig);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief import a base64 formated key from a memory c-string
|
||||
*
|
||||
|
Reference in New Issue
Block a user