From ce41747faef799e8723840c0cd640ba44bbcc834 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Sat, 20 Aug 2011 18:08:37 +0200 Subject: pki: Introduce ssh_signature. --- src/pki.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/pki.c b/src/pki.c index ebe2f04..effeb70 100644 --- a/src/pki.c +++ b/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 * -- cgit