Beispiel #1
0
int ber_write_integer(STREAM* s, uint32 value)
{
	ber_write_universal_tag(s, BER_TAG_INTEGER, false);

	if (value <= 0xFF)
	{
		ber_write_length(s, 1);
		stream_write_uint8(s, value);
		return 2;
	}
	else if (value <= 0xFFFF)
	{
		ber_write_length(s, 2);
		stream_write_uint16_be(s, value);
		return 3;
	}
	else if (value <= 0xFFFFFFFF)
	{
		ber_write_length(s, 4);
		stream_write_uint32_be(s, value);
		return 5;
	}

	return 0;
}
Beispiel #2
0
int ber_write_octet_string(wStream* s, const BYTE* oct_str, int length)
{
	int size = 0;
	size += ber_write_universal_tag(s, BER_TAG_OCTET_STRING, FALSE);
	size += ber_write_length(s, length);
	Stream_Write(s, oct_str, length);
	size += length;
	return size;
}
Beispiel #3
0
void test_ber_write_universal_tag(void)
{
	STREAM* s;

	s = stream_new(sizeof(ber_universal_tag_expected));
	ber_write_universal_tag(s, 1, false);

	ASSERT_STREAM(s, (uint8*) ber_universal_tag_expected, sizeof(ber_universal_tag_expected));

	stream_free(s);
}
Beispiel #4
0
int ber_write_integer(wStream* s, UINT32 value)
{
	if (value <  0x80)
	{
		ber_write_universal_tag(s, BER_TAG_INTEGER, FALSE);
		ber_write_length(s, 1);
		Stream_Write_UINT8(s, value);
		return 3;
	}
	else if (value <  0x8000)
	{
		ber_write_universal_tag(s, BER_TAG_INTEGER, FALSE);
		ber_write_length(s, 2);
		Stream_Write_UINT16_BE(s, value);
		return 4;
	}
	else if (value <  0x800000)
	{
		ber_write_universal_tag(s, BER_TAG_INTEGER, FALSE);
		ber_write_length(s, 3);
		Stream_Write_UINT8(s, (value >> 16));
		Stream_Write_UINT16_BE(s, (value & 0xFFFF));
		return 5;
	}
Beispiel #5
0
int ber_write_integer(STREAM* s, uint32 value)
{
	ber_write_universal_tag(s, BER_TAG_INTEGER, false);

	if (value <= 0xFF)
	{
		ber_write_length(s, 1);
		stream_write_uint8(s, value);
		return 2;
	}
	else if (value < 0xFF80)
	{
		ber_write_length(s, 2);
		stream_write_uint16_be(s, value);
		return 3;
	}
	else if (value < 0xFF8000)
	{
		ber_write_length(s, 3);
		stream_write_uint8(s, (value >> 16));
		stream_write_uint16_be(s, (value & 0xFFFF));
		return 4;
	}
Beispiel #6
0
int ber_write_integer(wStream* s, UINT32 value)
{
	ber_write_universal_tag(s, BER_TAG_INTEGER, FALSE);

	if (value <= 0xFF)
	{
		ber_write_length(s, 1);
		stream_write_BYTE(s, value);
		return 2;
	}
	else if (value < 0xFF80)
	{
		ber_write_length(s, 2);
		stream_write_UINT16_be(s, value);
		return 3;
	}
	else if (value < 0xFF8000)
	{
		ber_write_length(s, 3);
		stream_write_BYTE(s, (value >> 16));
		stream_write_UINT16_be(s, (value & 0xFFFF));
		return 4;
	}
Beispiel #7
0
void ber_write_boolean(STREAM* s, boolean value)
{
	ber_write_universal_tag(s, BER_TAG_BOOLEAN, false);
	ber_write_length(s, 1);
	stream_write_uint8(s, (value == true) ? 0xFF : 0);
}
Beispiel #8
0
int ber_write_octet_string_tag(STREAM* s, int length)
{
	ber_write_universal_tag(s, BER_TAG_OCTET_STRING, false);
	ber_write_length(s, length);
	return 1 + _ber_skip_length(length);
}
Beispiel #9
0
void ber_write_octet_string(STREAM* s, const uint8* oct_str, int length)
{
	ber_write_universal_tag(s, BER_TAG_OCTET_STRING, false);
	ber_write_length(s, length);
	stream_write(s, oct_str, length);
}
Beispiel #10
0
void ber_write_enumerated(STREAM* s, uint8 enumerated, uint8 count)
{
	ber_write_universal_tag(s, BER_TAG_ENUMERATED, false);
	ber_write_length(s, 1);
	stream_write_uint8(s, enumerated);
}
Beispiel #11
0
void ber_write_BOOL(wStream* s, BOOL value)
{
	ber_write_universal_tag(s, BER_TAG_BOOLEAN, FALSE);
	ber_write_length(s, 1);
	Stream_Write_UINT8(s, (value == TRUE) ? 0xFF : 0);
}
Beispiel #12
0
int ber_write_octet_string_tag(wStream* s, int length)
{
	ber_write_universal_tag(s, BER_TAG_OCTET_STRING, FALSE);
	ber_write_length(s, length);
	return 1 + _ber_sizeof_length(length);
}
Beispiel #13
0
void ber_write_enumerated(wStream* s, BYTE enumerated, BYTE count)
{
	ber_write_universal_tag(s, BER_TAG_ENUMERATED, FALSE);
	ber_write_length(s, 1);
	Stream_Write_UINT8(s, enumerated);
}
Beispiel #14
0
void ber_write_octet_string(wStream* s, const BYTE* oct_str, int length)
{
	ber_write_universal_tag(s, BER_TAG_OCTET_STRING, FALSE);
	ber_write_length(s, length);
	stream_write(s, oct_str, length);
}