Ejemplo n.º 1
0
// generate public/private key pair for digital signatures
void genkeys(void)
{
    if (open_crypt()) {
        if (CryptGenKey(hProv, AT_SIGNATURE,
                        keylen << 16 | CRYPT_EXPORTABLE, &hKey)) {
            // export as C array and binary
            export_key(PUBLICKEYBLOB,  DSA_PUBLIC_H,    DSA_C_ARRAY);
            export_key(PUBLICKEYBLOB,  DSA_PUBLIC_BIN,  DSA_BINARY);
            export_key(PRIVATEKEYBLOB, DSA_PRIVATE_H,   DSA_C_ARRAY);
            export_key(PRIVATEKEYBLOB, DSA_PRIVATE_BIN, DSA_BINARY);
            close_key();
        } else {
            xstrerror("CryptGenKey(%i)", keylen);
        }

        close_crypt();
    } else {
        xstrerror("CryptAcquireContext()");
    }
}
Ejemplo n.º 2
0
int do_action_connect(struct client_settings *settings, GPG_CTX *gpg_ctx)
{
	gpgme_data_t key;
	int ret;

	// get key
	ret = export_key(&key, settings->key, gpg_ctx);
	if (is_failure(ret))
		return ret;

	// send to server
	ret = send_to_server(key, settings->host, settings->host_port, gpg_ctx);
	if (ret != ERROR_NO_ERROR)
		return ret;

	return ERROR_NO_ERROR;
}