#include <stdio.h>
#include <krb5.h>


int main(void)
{
	krb5_context ctx;
	krb5_crypto c1, c2;
	krb5_data password, p1, p2;
	krb5_enctype enctype = 16;
	krb5_keyblock kb1, kb2, kn;
	krb5_salt salt;
	int i;
	unsigned char *data;

	krb5_init_context(&ctx);

	password.data = "key1";
	password.length = 4;
	salt.salttype = KRB5_PW_SALT;
	salt.saltvalue.data = "key1";
	salt.saltvalue.length = 4;
	krb5_string_to_key_data_salt(ctx, enctype, password, salt, &kb1);
	password.data = "key2";
	salt.saltvalue.data = "key2";
	krb5_string_to_key_data_salt(ctx, enctype, password, salt, &kb2);
	krb5_crypto_init(ctx, &kb1, enctype, &c1);
	krb5_crypto_init(ctx, &kb2, enctype, &c2);
	p1.data = "a";
	p1.length = 1;
	p2.data = "b";
	p2.length = 1;
	krb5_crypto_fx_cf2(ctx, c1, c2, &p1, &p2, enctype, &kn);

	data = kn.keyvalue.data;
	for(i = 0; i < kn.keyvalue.length; ++i)
		printf("%02x", data[i]);
	printf("\n");
}
