Beispiel #1
0
RET_CODE sys_get_host_key(UINT8 *key, UINT32 *len, UINT32 type)
{
	unsigned long addr;
	CIPLUS_KEY_HDR hdr;
	UINT8 aes_key[16];
	UINT8 *encryped_data;
	struct sto_device *dev = (struct sto_device *)dev_get_by_id(HLD_DEV_TYPE_STO, 0);

	libc_printf("%s - type %d\n",__FUNCTION__,type);

	if(RET_SUCCESS != find_key(CIPLUS_KEY_AES_KEY, &addr, &hdr))
		return RET_FAILURE;

	sto_get_data(dev, aes_key, addr, 16);
	
	if(RET_SUCCESS != find_key(type, &addr, &hdr))
		return RET_FAILURE;

	encryped_data = (UINT8 *)MALLOC(hdr.size);
	//encryped_data = g_ci_tmp_buff;

	sto_get_data(dev, encryped_data, addr, hdr.size);

	decrypt_key(encryped_data, key, aes_key, hdr.size);

	if(len)
		*len = hdr.size;
	
	FREE(encryped_data);

	return RET_SUCCESS;
}
Beispiel #2
0
int main(int argc, char **argv)
{
	char *encrypted_key = "fhcrefrperg";
	char key_copy[100];

	strcpy(key_copy, encrypted_key);
	decrypt_key(key_copy);

	return 0;
}
Beispiel #3
0
GByteArray *
crypto_decrypt_private_key_data (const GByteArray *contents,
                                 const char *password,
                                 NMCryptoKeyType *out_key_type,
                                 GError **error)
{
	GByteArray *decrypted = NULL;
	NMCryptoKeyType key_type = NM_CRYPTO_KEY_TYPE_RSA;
	GByteArray *data;
	char *iv = NULL;
	char *cipher = NULL;

	g_return_val_if_fail (contents != NULL, NULL);
	if (out_key_type)
		g_return_val_if_fail (*out_key_type == NM_CRYPTO_KEY_TYPE_UNKNOWN, NULL);

	/* OpenSSL non-standard legacy PEM files */

	/* Try RSA keys first */
	data = parse_old_openssl_key_file (contents, key_type, &cipher, &iv, error);
	if (!data) {
		g_clear_error (error);

		/* DSA next */
		key_type = NM_CRYPTO_KEY_TYPE_DSA;
		data = parse_old_openssl_key_file (contents, key_type, &cipher, &iv, error);
		if (!data) {
			g_clear_error (error);
			g_set_error (error, NM_CRYPTO_ERROR,
			             NM_CRYPTO_ERR_FILE_FORMAT_INVALID,
			             _("Unable to determine private key type."));
		}
	}

	if (data) {
		/* return the key type even if decryption failed */
		if (out_key_type)
			*out_key_type = key_type;

		if (password) {
			decrypted = decrypt_key (cipher,
			                         key_type,
			                         data,
			                         iv,
			                         password,
			                         error);
		}
		g_byte_array_free (data, TRUE);
	}

	g_free (cipher);
	g_free (iv);

	return decrypted;
}
Beispiel #4
0
int main(int argc, char* argv[]) {
  uint8* pass = NULL;
  uint8* key = NULL;

  if (argc < 3) {
    fprintf(stderr,
        "usage: genpass <platform> <ramdisk.dmg> <filesystem.dmg>\n");
    return -1;
  }

  char* platform = argv[1];
  char* ramdisk = argv[2];
  char* filesystem = argv[3];

  pass = generate_passphrase(platform, ramdisk);
  if (pass == NULL) {
    fprintf(stderr, "unable to generate asr passphrase\n");
    return -1;
  }
  //printf("asr passphrase: ");
  //print_hex(pass, 0x20);

  key = decrypt_key(filesystem, pass);
  if (key == NULL) {
    fprintf(stderr, "unable to decrypt vfdecrypt key\n");
    return -1;
  }
  printf("vfdecrypt key: ");
  print_hex(key, 0x24);

  if (pass)
    free(pass);
  if (key)
    free(key);

  return 0;
}