Exemplo n.º 1
0
EC_KEY* readKeys(const char* filename) {
    FILE* fp;
    EC_KEY *key = NULL;
    if ((fp = fopen(filename, "rt"))) {
        // file opened successfully
        qCDebug(commerce) << "opened key file" << filename;

        if ((key = PEM_read_EC_PUBKEY(fp, NULL, NULL, NULL))) {
            // now read private key

            qCDebug(commerce) << "read public key";

            if ((key = PEM_read_ECPrivateKey(fp, &key, passwordCallback, NULL))) {
                qCDebug(commerce) << "read private key";
                fclose(fp);
                return key;
            }
            qCDebug(commerce) << "failed to read private key";
        } else {
            qCDebug(commerce) << "failed to read public key";
        }
        fclose(fp);
    } else {
        qCDebug(commerce) << "failed to open key file" << filename;
    }
    return key;
}
Exemplo n.º 2
0
Arquivo: client.c Projeto: ep69/tang
static EC_KEY *
keygen(const char *dbdir, const char *name,
       const char *grpname, const char *use, bool adv,
       const char *file, int line)
{
    char fname[PATH_MAX];
    char cmd[PATH_MAX*2];
    EC_GROUP *grp = NULL;
    EC_KEY *key = NULL;
    FILE *f = NULL;

    test(snprintf(fname, sizeof(fname), "%s/%s", dbdir, name) > 0);
    test(snprintf(cmd, sizeof(cmd),
	          "../progs/tang-gen -%c %s %s %s >/dev/null",
	          adv ? 'A' : 'a', grpname, use, fname) > 1);

    test(system(cmd) == 0);
    test(f = fopen(fname, "r"));

    test(grp = PEM_read_ECPKParameters(f, NULL, NULL, NULL));
    test(EC_GROUP_get_curve_name(grp) != NID_undef);

    test(key = PEM_read_ECPrivateKey(f, NULL, NULL, NULL));
    test(EC_KEY_set_group(key, grp) > 0);

    EC_GROUP_free(grp);
    fclose(f);
    return key;
}
Exemplo n.º 3
0
// the private key should be read/copied into heap memory.  For now, we need the EC_KEY struct
// so I'll return that.
EC_KEY* readPrivateKey(const char* filename) {
    FILE* fp;
    EC_KEY* key = NULL;
    if ((fp = fopen(filename, "r"))) {
        // file opened successfully
        qCDebug(commerce) << "opened key file" << filename;
        if ((key = PEM_read_ECPrivateKey(fp, &key, passwordCallback, NULL))) {
            qCDebug(commerce) << "parsed private key file successfully";

        } else {
            qCDebug(commerce) << "couldn't parse" << filename;
            // if the passphrase is wrong, then let's not cache it
            DependencyManager::get<Wallet>()->setPassphrase("");
        }
        fclose(fp);
    } else {
        qCDebug(commerce) << "couldn't open" << filename;
    }
    return key;
}