Sha256: e3cdbb78d6d90111a090a02eb7dc47b22d25ad03156b4b16973c43a6306cafe8

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <fpe.h>
#include <fpe_locl.h>

/*
  usage:

  ./example 2DE79D232DF5585D68CE47882AE256D6 CBD09280979564 10 3992520240

*/

int main(int argc, char *argv[])
{
    if (argc != 5) {
        printf("Usage: %s <key> <tweak> <radix> <plaintext>\n", argv[0]);
        return 0;
    }

    char ciphertext[100];
    char resulttext[100];

    char* key = argv[1];
    char* tweak = argv[2];
    char* plaintext = argv[4];
    int radix = atoi(argv[3]);

    int txtlen = strlen(plaintext),
        tlen = strlen(tweak) / 2;

    FPE_KEY *ff1 = FPE_ff1_create_key(key, tweak, radix);
	FPE_KEY *ff3 = (tlen == 7) ? 
                      FPE_ff3_1_create_key(key, tweak, radix) : 
                      FPE_ff3_create_key(key, tweak, radix);

    //for (int i = 0; i < xlen; ++i)
    //    assert(x[i] < radix);

    FPE_ff1_encrypt(plaintext, ciphertext, ff1);
    printf("FF1 ciphertext: %s\n", ciphertext);

    memset(resulttext, 0, txtlen);
    FPE_ff1_decrypt(ciphertext, resulttext, ff1);
    printf("FF1 decrypted:  %s\n\n", resulttext);

    FPE_ff3_encrypt(plaintext, ciphertext, ff3);
    printf("FF3 ciphertext: %s\n", ciphertext);

    memset(resulttext, 0, txtlen);
    FPE_ff3_decrypt(ciphertext, resulttext, ff3);
    printf("FF3 decrypted:  %s\n\n", resulttext);

    FPE_ff1_delete_key(ff1);
    FPE_ff3_delete_key(ff3);

    return 0;
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby_clang_fpe-0.1.0 vendor/clang-fpe/example.c