Example #1
0
void HPAVKeyNMK (uint8_t NMK [], const char * string) 

{
	struct sha256 sha256;
	uint8_t digest [SHA256_DIGEST_LENGTH];
	const uint8_t secret [] = 
	{
		0x08,
		0x85,
		0x6D,
		0xAF,
		0x7C,
		0xF5,
		0x81,
		0x86
	};
	unsigned rehash = 999;
	SHA256Reset (&sha256);
	SHA256Write (&sha256, string, strlen (string));
	SHA256Write (&sha256, secret, sizeof (secret));
	SHA256Fetch (&sha256, digest);
	while (rehash--) 
	{
		SHA256Reset (&sha256);
		SHA256Write (&sha256, digest, sizeof (digest));
		SHA256Fetch (&sha256, digest);
	}
	memcpy (NMK, digest, HPAVKEY_NMK_LEN);
	return;
}
void HPAVKeyNID (uint8_t NID [], const uint8_t NMK [], uint8_t level)

{
	struct sha256 sha256;
	uint8_t digest [SHA256_DIGEST_LENGTH];
	unsigned rehash = 4;
	SHA256Reset (&sha256);
	SHA256Write (&sha256, NMK, HPAVKEY_NMK_LEN);
	SHA256Fetch (&sha256, digest);
	while (rehash--)
	{
		SHA256Reset (&sha256);
		SHA256Write (&sha256, digest, sizeof (digest));
		SHA256Fetch (&sha256, digest);
	}

#if 1

	level <<= 4;
	digest [HPAVKEY_NID_LEN - 1] >>= 4;
	digest [HPAVKEY_NID_LEN - 1] |= level;

#else

	digest [HPAVKEY_NID_LEN - 1] &= ~0xC0;
	digest [HPAVKEY_NID_LEN - 1] |= level << 6;

#endif

	memcpy (NID, digest, HPAVKEY_NID_LEN);
	return;
}
Example #3
0
void HPAVKeyDAK (uint8_t DAK [], const char * string) 

{
	struct sha256 sha256;
	uint8_t digest [SHA256_DIGEST_LENGTH];
	const uint8_t secret [] = 
	{
		0x08,
		0x85,
		0x6D,
		0xAF,
		0x7C,
		0xF5,
		0x81,
		0x85 
	};
	int count = 999;
	SHA256Reset (&sha256);
	SHA256Write (&sha256, (uint8_t *)(string), strlen (string));
	SHA256Write (&sha256, secret, sizeof (secret));
	SHA256Fetch (&sha256, digest);
	while (count-- > 0) 
	{
		SHA256Reset (&sha256);
		SHA256Write (&sha256, digest, sizeof (digest));
		SHA256Fetch (&sha256, digest);
	}
	memcpy (DAK, digest, HPAVKEY_DAK_LEN);
	return;
}
Example #4
0
void HPAVKeyNID (uint8_t NID [], const uint8_t NMK [], uint8_t level) 

{
	struct sha256 sha256;
	uint8_t digest [SHA256_DIGEST_LENGTH];
	int count = 4;
	SHA256Reset (&sha256);
	SHA256Write (&sha256, NMK, HPAVKEY_NMK_LEN);
	SHA256Fetch (&sha256, digest);
	while (count-- > 0) 
	{
		SHA256Reset (&sha256);
		SHA256Write (&sha256, digest, sizeof (digest));
		SHA256Fetch (&sha256, digest);
	}
	level <<= 4;
	digest [HPAVKEY_NID_LEN - 1] >>= 4;
	digest [HPAVKEY_NID_LEN - 1] |= level;
	memcpy (NID, digest, HPAVKEY_NID_LEN);
	return;
}
Example #5
0
void SHA256Ident (signed fd, uint8_t digest []) 

{
	struct sha256 sha256;
	uint8_t buffer [1024];
	signed length;
	SHA256Reset (&sha256);
	while ((length = read (fd, buffer, sizeof (buffer))) > 0) 
	{
		SHA256Write (&sha256, buffer, length);
	}
	SHA256Fetch (&sha256, digest);
	return;
}