Exemple #1
0
int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
                        const struct iovec *iov,
                        size_t niov,
                        uint8_t **result,
                        size_t *resultlen,
                        Error **errp)
{
    QCryptoHmacGcrypt *ctx;
    gcry_error_t err;
    uint32_t ret;
    int i;

    ctx = hmac->opaque;

    for (i = 0; i < niov; i++) {
        gcry_mac_write(ctx->handle, iov[i].iov_base, iov[i].iov_len);
    }

    ret = gcry_mac_get_algo_maclen(qcrypto_hmac_alg_map[hmac->alg]);
    if (ret <= 0) {
        error_setg(errp, "Unable to get hmac length: %s",
                   gcry_strerror(ret));
        return -1;
    }

    if (*resultlen == 0) {
        *resultlen = ret;
        *result = g_new0(uint8_t, *resultlen);
    } else if (*resultlen != ret) {
        error_setg(errp, "Result buffer size %zu is smaller than hmac %d",
                   *resultlen, ret);
        return -1;
    }

    err = gcry_mac_read(ctx->handle, *result, resultlen);
    if (err != 0) {
        error_setg(errp, "Cannot get result: %s",
                   gcry_strerror(err));
        return -1;
    }

    err = gcry_mac_reset(ctx->handle);
    if (err != 0) {
        error_setg(errp, "Cannot reset hmac context: %s",
                   gcry_strerror(err));
        return -1;
    }

    return 0;
}
Exemple #2
0
int main(int argc, char *argv[]) {
	if(argc != 2){
		printf("Missing input file Parameter.\nUsage: ./cryptogator <input_file_name>\n");
		return -1;
	}

	gcry_check_version(NULL);

	char fileName[FILE_NAME_LENGTH];
	strcpy(fileName, argv[1]);

	printf("\n*******************AES128**************************\n");
	int algo = GCRY_CIPHER_AES128;
	int keyLength = gcry_cipher_get_algo_keylen(algo);
	processSymmetricCrypto(algo, keyLength, fileName);
	printReport(1);

	printf("\n*******************AES256**************************\n");
	algo = GCRY_CIPHER_AES256;
	keyLength = gcry_cipher_get_algo_keylen(algo);
	processSymmetricCrypto(algo, keyLength, fileName);
	printReport(1);

	printf("\n*******************HMAC MD5**************************\n");
	algo = GCRY_MAC_HMAC_MD5;
	keyLength = gcry_mac_get_algo_maclen(algo);
	processHashFunction(fileName, algo, keyLength);
	printReport(0);

	printf("\n*******************HMAC SHA1**************************\n");
	algo = GCRY_MAC_HMAC_SHA1;
	keyLength = gcry_mac_get_algo_maclen(algo);
	processHashFunction(fileName, algo, keyLength);
	printReport(0);

	printf("\n*******************HMAC SHA256**************************\n");
	algo = GCRY_MAC_HMAC_SHA256;
	keyLength = gcry_mac_get_algo_maclen(algo);
	processHashFunction(fileName, algo, keyLength);
	printReport(0);
	
	printf("\n*******************Digital Signature**************************\n");
	processDigitalSignature(fileName);

	printf("\n*******************RSA1024**************************\n");
	processAsymmetricCrypto(fileName, 1024, key1024);
	printReport(1);

	printf("\n*******************RSA4096**************************\n");
	processAsymmetricCrypto(fileName, 4096, key4096);
	printReport(1);

	

	/*char *data = "This is an encryption test.";

	gcry_sexp_t pub_key, plainText, cipherText, decryptedText;
	gcry_sexp_sscan(&pub_key, NULL, key, strlen(key));

	gcry_sexp_build (&plainText, NULL, "(data (flags raw) (value %b))", strlen(data), data);
	int response = gcry_pk_encrypt (&cipherText, plainText, pub_key);

	printf("%s\n", gcry_sexp_nth_string(gcry_sexp_find_token(cipherText, "a", 1), 1));

	gcry_pk_decrypt(&decryptedText, cipherText, pub_key);

	printf("%s\n", gcry_sexp_nth_string(decryptedText, 0));
	printf("done");


	gcry_sexp_t rsa_parms;
	gcry_sexp_t rsa_keypair;

	printf("generating key\n");

	time_t start = time(NULL);
	gcry_error_t err = gcry_sexp_build(&rsa_parms, NULL, "(genkey (rsa (nbits 4:4096)))");
	err = gcry_pk_genkey(&rsa_keypair, rsa_parms);

	size_t keyLength = get_keypair_size(4096);
	char* rsaKeyExpression = (char*) calloc(sizeof(char), keyLength);

	gcry_sexp_sprint(rsa_keypair, GCRYSEXP_FMT_ADVANCED, rsaKeyExpression, keyLength);
	printf("%s\n", rsaKeyExpression);

	time_t end = time(NULL);
	double encTime = (double) ((end - start));
	printf("Time: %.2f\n", encTime);

	printf("generated key\n");
		*/
}