コード例 #1
0
ファイル: gost89imit_pmeth.c プロジェクト: MiKTeX/miktex
static int
pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
{
	if (value == NULL)
		return 0;
	if (strcmp(type, "key") == 0) {
		void *p = (void *)value;
		return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY,
		    strlen(value), p);
	}
	if (strcmp(type, "hexkey") == 0) {
		unsigned char *key;
		int r;
		long keylen;

		key = string_to_hex(value, &keylen);
		if (key == NULL)
			return 0;
		r = pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, keylen,
		    key);
		free(key);
		return r;
	}
	return -2;
}
コード例 #2
0
ファイル: gost_pmeth.c プロジェクト: Chenhx/moai-dev
static int pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx,
	const char *type, const char *value)
	{
	if (!strcmp(type, key_ctrl_string)) 
		{
		if (strlen(value)!=32) 
			{
			GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR,
				GOST_R_INVALID_MAC_KEY_LENGTH);
			return 0;	
			}
		return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY,
			32,(char *)value);
		}
	if (!strcmp(type, hexkey_ctrl_string)) 
		{
			long keylen; int ret;
			unsigned char *keybuf=string_to_hex(value,&keylen);
			if (keylen != 32) 
				{
				GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR,
					GOST_R_INVALID_MAC_KEY_LENGTH);
				OPENSSL_free(keybuf);
				return 0;	
				}
			ret= pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY,
				32,keybuf);
			OPENSSL_free(keybuf);
			return ret;
	
		}
	return -2;
	}	
コード例 #3
0
ファイル: gost_pmeth.c プロジェクト: gost-engine/engine
static int pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx,
                                  const char *type, const char *value)
{
    if (strcmp(type, key_ctrl_string) == 0) {
        if (strlen(value) != 32) {
            GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR,
                    GOST_R_INVALID_MAC_KEY_LENGTH);
            return 0;
        }
        return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY,
                                  32, (char *)value);
    }
    if (strcmp(type, hexkey_ctrl_string) == 0) {
        long keylen;
        int ret;
        unsigned char *keybuf = string_to_hex(value, &keylen);
        if (!keybuf || keylen != 32) {
            GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR,
                    GOST_R_INVALID_MAC_KEY_LENGTH);
            OPENSSL_free(keybuf);
            return 0;
        }
        ret = pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, 32, keybuf);
        OPENSSL_free(keybuf);
        return ret;

    }
    if (!strcmp(type, maclen_ctrl_string)) {
        char *endptr;
        long size = strtol(value, &endptr, 10);
        if (*endptr != '\0') {
            GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_SIZE);
            return 0;
        }
        return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_MAC_LEN, size, NULL);
    }
    if (strcmp(type, param_ctrl_string) == 0) {
        ASN1_OBJECT *obj = OBJ_txt2obj(value, 0);
        const struct gost_cipher_info *param = NULL;
        if (obj == NULL) {
            GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_PARAMS);
            return 0;
        }

        param = get_encryption_params(obj);
				ASN1_OBJECT_free(obj);
        if (param == NULL) {
            GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_PARAMS);
            return 0;
        }


        return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_GOST_PARAMSET, 0,
                                  (void *)param);
    }
    return -2;
}
コード例 #4
0
ファイル: main.c プロジェクト: GarysRefererence2014/vhsm
//Transforms command string into request
static int pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value) {
    printf("Got command: %s with arg: %s\n", type, value);
    if (!strcmp(type, "uid")) {
        return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, strlen(value), (char *)value);
    }
    return -2;
}