blob: dd5262e83acb7c95643c5bd9af2b68bd9ed6dc12 [file] [log] [blame]
Lev Walkinf15320b2004-06-03 03:38:44 +00001/*-
2 * Copyright (c) 2003 Lev Walkin <vlm@lionet.info>. All rights reserved.
3 * Redistribution and modifications are permitted subject to BSD license.
4 */
5#ifndef _OCTET_STRING_H_
6#define _OCTET_STRING_H_
7
Lev Walkin11c3e172004-09-24 21:00:50 +00008#include <asn_application.h>
Lev Walkinf15320b2004-06-03 03:38:44 +00009
10typedef struct OCTET_STRING {
11 uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */
12 int size; /* Size of the buffer */
13
Lev Walkin5e033762004-09-29 13:26:15 +000014 asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */
Lev Walkinf15320b2004-06-03 03:38:44 +000015} OCTET_STRING_t;
16
Lev Walkin5e033762004-09-29 13:26:15 +000017extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING;
Lev Walkinf15320b2004-06-03 03:38:44 +000018
Lev Walkina9cc46e2004-09-22 16:06:28 +000019asn_struct_free_f OCTET_STRING_free;
Lev Walkinf15320b2004-06-03 03:38:44 +000020asn_struct_print_f OCTET_STRING_print;
21asn_struct_print_f OCTET_STRING_print_ascii;
Lev Walkina9cc46e2004-09-22 16:06:28 +000022ber_type_decoder_f OCTET_STRING_decode_ber;
23der_type_encoder_f OCTET_STRING_encode_der;
24xer_type_encoder_f OCTET_STRING_encode_xer;
25xer_type_encoder_f OCTET_STRING_encode_xer_ascii;
Lev Walkinf15320b2004-06-03 03:38:44 +000026
Lev Walkinbbd93252004-10-12 05:57:23 +000027/******************************
28 * Handy conversion routines. *
29 ******************************/
Lev Walkinf15320b2004-06-03 03:38:44 +000030
31/*
32 * This function clears the previous value of the OCTET STRING (if any)
Lev Walkina737f3b2004-09-02 12:11:47 +000033 * and then allocates a new memory and returns a pointer to it.
34 * If size = -1, the size of the original string will be determined
Lev Walkinf15320b2004-06-03 03:38:44 +000035 * using strlen(str).
36 * If str equals to NULL, the function will silently clear the
37 * current contents of the OCTET STRING.
38 * Returns 0 if it was possible to perform operation, -1 otherwise.
39 */
40int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size);
41
Lev Walkinbbd93252004-10-12 05:57:23 +000042/* Handy conversion from the C string into the OCTET STRING. */
43#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1);
44
Lev Walkinf15320b2004-06-03 03:38:44 +000045/*
46 * Allocate and fill the new OCTET STRING and return a pointer to the newly
47 * allocated object. NULL is permitted in str: the function will just allocate
48 * empty OCTET STRING.
49 */
Lev Walkinbbd93252004-10-12 05:57:23 +000050OCTET_STRING_t *OCTET_STRING_new_fromBuf(asn_TYPE_descriptor_t *td,
51 const char *str, int size);
Lev Walkinf15320b2004-06-03 03:38:44 +000052
Lev Walkinbbd93252004-10-12 05:57:23 +000053/****************************
54 * Internally useful stuff. *
55 ****************************/
56
57typedef struct asn_OCTET_STRING_specifics_s {
58 /*
59 * Target structure description.
60 */
61 int struct_size; /* Size of the structure */
62 int ctx_offset; /* Offset of the asn_struct_ctx_t member */
63
64 int subvariant; /* {0,1,2} for O-S, BIT STRING or ANY */
65} asn_OCTET_STRING_specifics_t;
Lev Walkinf15320b2004-06-03 03:38:44 +000066
67#endif /* _OCTET_STRING_H_ */