FreeRDP
ber.c File Reference
#include <freerdp/config.h>
#include <stdio.h>
#include <winpr/assert.h>
#include <winpr/crt.h>
#include <winpr/string.h>
#include <freerdp/log.h>
#include <freerdp/crypto/ber.h>

Macros

#define TAG   FREERDP_TAG("crypto")
 

Functions

BOOL ber_read_length (wStream *s, size_t *length)
 
size_t ber_write_length (wStream *s, size_t length)
 
size_t _ber_sizeof_length (size_t length)
 
BOOL ber_read_universal_tag (wStream *s, BYTE tag, BOOL pc)
 
size_t ber_write_universal_tag (wStream *s, BYTE tag, BOOL pc)
 
BOOL ber_read_application_tag (wStream *s, BYTE tag, size_t *length)
 
void ber_write_application_tag (wStream *s, BYTE tag, size_t length)
 
BOOL ber_read_contextual_tag (wStream *s, BYTE tag, size_t *length, BOOL pc)
 
size_t ber_write_contextual_tag (wStream *s, BYTE tag, size_t length, BOOL pc)
 
size_t ber_sizeof_contextual_tag (size_t length)
 
BOOL ber_read_sequence_tag (wStream *s, size_t *length)
 
size_t ber_write_sequence_tag (wStream *s, size_t length)
 
size_t ber_sizeof_sequence (size_t length)
 
size_t ber_sizeof_sequence_tag (size_t length)
 
BOOL ber_read_enumerated (wStream *s, BYTE *enumerated, BYTE count)
 
void ber_write_enumerated (wStream *s, BYTE enumerated, BYTE count)
 
BOOL ber_read_bit_string (wStream *s, size_t *length, BYTE *padding)
 
size_t ber_write_octet_string (wStream *s, const BYTE *oct_str, size_t length)
 
size_t ber_write_contextual_octet_string (wStream *s, BYTE tag, const BYTE *oct_str, size_t length)
 
size_t ber_write_char_to_unicode_octet_string (wStream *s, const char *str)
 
size_t ber_write_contextual_unicode_octet_string (wStream *s, BYTE tag, LPWSTR str)
 
size_t ber_write_contextual_char_to_unicode_octet_string (wStream *s, BYTE tag, const char *str)
 
BOOL ber_read_unicode_octet_string (wStream *s, LPWSTR *str)
 
BOOL ber_read_char_from_unicode_octet_string (wStream *s, char **str)
 
BOOL ber_read_octet_string_tag (wStream *s, size_t *length)
 
BOOL ber_read_octet_string (wStream *s, BYTE **content, size_t *length)
 
size_t ber_write_octet_string_tag (wStream *s, size_t length)
 
size_t ber_sizeof_octet_string (size_t length)
 
size_t ber_sizeof_contextual_octet_string (size_t length)
 
BOOL ber_read_BOOL (wStream *s, BOOL *value)
 Read a BER BOOLEAN. More...
 
void ber_write_BOOL (wStream *s, BOOL value)
 
BOOL ber_read_integer (wStream *s, UINT32 *value)
 
size_t ber_write_integer (wStream *s, UINT32 value)
 
size_t ber_write_contextual_integer (wStream *s, BYTE tag, UINT32 value)
 
size_t ber_sizeof_integer (UINT32 value)
 
size_t ber_sizeof_contextual_integer (UINT32 value)
 
BOOL ber_read_integer_length (wStream *s, size_t *length)
 

Macro Definition Documentation

◆ TAG

#define TAG   FREERDP_TAG("crypto")

FreeRDP: A Remote Desktop Protocol Implementation ASN.1 Basic Encoding Rules (BER)

Copyright 2011-2012 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ _ber_sizeof_length()

size_t _ber_sizeof_length ( size_t  length)
Here is the caller graph for this function:

◆ ber_read_application_tag()

BOOL ber_read_application_tag ( wStream s,
BYTE  tag,
size_t *  length 
)

Read BER Application tag.

Parameters
sstream
tagBER application-defined tag
lengthlength
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_bit_string()

BOOL ber_read_bit_string ( wStream s,
size_t *  length,
BYTE padding 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_BOOL()

BOOL ber_read_BOOL ( wStream s,
BOOL *  value 
)

Read a BER BOOLEAN.

Parameters
sThe stream to read from.
valueA pointer to the value read, must not be NULL
Returns
TRUE for success, FALSE for any failure
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_char_from_unicode_octet_string()

BOOL ber_read_char_from_unicode_octet_string ( wStream s,
char **  str 
)
Here is the call graph for this function:

◆ ber_read_contextual_tag()

BOOL ber_read_contextual_tag ( wStream s,
BYTE  tag,
size_t *  length,
BOOL  pc 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_enumerated()

BOOL ber_read_enumerated ( wStream s,
BYTE enumerated,
BYTE  count 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_integer()

BOOL ber_read_integer ( wStream s,
UINT32 *  value 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_integer_length()

BOOL ber_read_integer_length ( wStream s,
size_t *  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_length()

BOOL ber_read_length ( wStream s,
size_t *  length 
)
Here is the caller graph for this function:

◆ ber_read_octet_string()

BOOL ber_read_octet_string ( wStream s,
BYTE **  content,
size_t *  length 
)
Here is the call graph for this function:

◆ ber_read_octet_string_tag()

BOOL ber_read_octet_string_tag ( wStream s,
size_t *  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_sequence_tag()

BOOL ber_read_sequence_tag ( wStream s,
size_t *  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_read_unicode_octet_string()

BOOL ber_read_unicode_octet_string ( wStream s,
LPWSTR *  str 
)
Here is the call graph for this function:

◆ ber_read_universal_tag()

BOOL ber_read_universal_tag ( wStream s,
BYTE  tag,
BOOL  pc 
)

Read BER Universal tag.

Parameters
sThe stream to read from
tagBER universally-defined tag
Returns
TRUE for success, FALSE otherwise
Here is the caller graph for this function:

◆ ber_sizeof_contextual_integer()

size_t ber_sizeof_contextual_integer ( UINT32  value)
Here is the call graph for this function:

◆ ber_sizeof_contextual_octet_string()

size_t ber_sizeof_contextual_octet_string ( size_t  length)
Here is the call graph for this function:

◆ ber_sizeof_contextual_tag()

size_t ber_sizeof_contextual_tag ( size_t  length)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_sizeof_integer()

size_t ber_sizeof_integer ( UINT32  value)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_sizeof_octet_string()

size_t ber_sizeof_octet_string ( size_t  length)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_sizeof_sequence()

size_t ber_sizeof_sequence ( size_t  length)
Here is the call graph for this function:

◆ ber_sizeof_sequence_tag()

size_t ber_sizeof_sequence_tag ( size_t  length)
Here is the call graph for this function:

◆ ber_write_application_tag()

void ber_write_application_tag ( wStream s,
BYTE  tag,
size_t  length 
)

Write BER Application tag.

Parameters
sstream
tagBER application-defined tag
lengthlength
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_BOOL()

void ber_write_BOOL ( wStream s,
BOOL  value 
)

Write a BER BOOLEAN

Parameters
sA pointer to the stream to write to
valueThe value to write
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_char_to_unicode_octet_string()

size_t ber_write_char_to_unicode_octet_string ( wStream s,
const char *  str 
)
Here is the call graph for this function:

◆ ber_write_contextual_char_to_unicode_octet_string()

size_t ber_write_contextual_char_to_unicode_octet_string ( wStream s,
BYTE  tag,
const char *  str 
)
Here is the call graph for this function:

◆ ber_write_contextual_integer()

size_t ber_write_contextual_integer ( wStream s,
BYTE  tag,
UINT32  value 
)
Here is the call graph for this function:

◆ ber_write_contextual_octet_string()

size_t ber_write_contextual_octet_string ( wStream s,
BYTE  tag,
const BYTE oct_str,
size_t  length 
)
Here is the call graph for this function:

◆ ber_write_contextual_tag()

size_t ber_write_contextual_tag ( wStream s,
BYTE  tag,
size_t  length,
BOOL  pc 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_contextual_unicode_octet_string()

size_t ber_write_contextual_unicode_octet_string ( wStream s,
BYTE  tag,
LPWSTR  str 
)
Here is the call graph for this function:

◆ ber_write_enumerated()

void ber_write_enumerated ( wStream s,
BYTE  enumerated,
BYTE  count 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_integer()

size_t ber_write_integer ( wStream s,
UINT32  value 
)

Write a BER INTEGER

Parameters
sA pointer to the stream to write to
valueThe value to write
Returns
The size in bytes that were written
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_length()

size_t ber_write_length ( wStream s,
size_t  length 
)

Write BER length.

Parameters
sstream
lengthlength
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_octet_string()

size_t ber_write_octet_string ( wStream s,
const BYTE oct_str,
size_t  length 
)

Write a BER OCTET_STRING

Parameters
sstream
oct_stroctet string
lengthstring length
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_octet_string_tag()

size_t ber_write_octet_string_tag ( wStream s,
size_t  length 
)
Here is the call graph for this function:

◆ ber_write_sequence_tag()

size_t ber_write_sequence_tag ( wStream s,
size_t  length 
)

Write BER SEQUENCE tag.

Parameters
sstream
lengthlength
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ber_write_universal_tag()

size_t ber_write_universal_tag ( wStream s,
BYTE  tag,
BOOL  pc 
)

Write BER Universal tag.

Parameters
sstream
tagBER universally-defined tag
pcprimitive (FALSE) or constructed (TRUE)
Here is the call graph for this function:
Here is the caller graph for this function: