version 1.115, 2014/01/09 23:20:00 |
version 1.116, 2014/02/02 03:44:31 |
|
|
case KEY_ED25519: |
case KEY_ED25519: |
case KEY_ED25519_CERT: |
case KEY_ED25519_CERT: |
if (k->ed25519_pk) { |
if (k->ed25519_pk) { |
memset(k->ed25519_pk, 0, ED25519_PK_SZ); |
explicit_bzero(k->ed25519_pk, ED25519_PK_SZ); |
free(k->ed25519_pk); |
free(k->ed25519_pk); |
k->ed25519_pk = NULL; |
k->ed25519_pk = NULL; |
} |
} |
if (k->ed25519_sk) { |
if (k->ed25519_sk) { |
memset(k->ed25519_sk, 0, ED25519_SK_SZ); |
explicit_bzero(k->ed25519_sk, ED25519_SK_SZ); |
free(k->ed25519_sk); |
free(k->ed25519_sk); |
k->ed25519_sk = NULL; |
k->ed25519_sk = NULL; |
} |
} |
|
|
if ((ssh_digest_memory(hash_alg, blob, len, |
if ((ssh_digest_memory(hash_alg, blob, len, |
retval, SSH_DIGEST_MAX_LENGTH)) != 0) |
retval, SSH_DIGEST_MAX_LENGTH)) != 0) |
fatal("%s: digest_memory failed", __func__); |
fatal("%s: digest_memory failed", __func__); |
memset(blob, 0, len); |
explicit_bzero(blob, len); |
free(blob); |
free(blob); |
*dgst_raw_length = ssh_digest_bytes(hash_alg); |
*dgst_raw_length = ssh_digest_bytes(hash_alg); |
} else { |
} else { |
|
|
dgst_rep); |
dgst_rep); |
break; |
break; |
} |
} |
memset(dgst_raw, 0, dgst_raw_len); |
explicit_bzero(dgst_raw, dgst_raw_len); |
free(dgst_raw); |
free(dgst_raw); |
return retval; |
return retval; |
} |
} |
|
|
*blobp = xmalloc(len); |
*blobp = xmalloc(len); |
memcpy(*blobp, buffer_ptr(&b), len); |
memcpy(*blobp, buffer_ptr(&b), len); |
} |
} |
memset(buffer_ptr(&b), 0, len); |
explicit_bzero(buffer_ptr(&b), len); |
buffer_free(&b); |
buffer_free(&b); |
return len; |
return len; |
} |
} |