X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcasn1%2Fsilcasn1_encode.c;h=f4937390e76de8fd575eb91d133ae20550cc1370;hb=d3342e968cc12587121b96d83fb4fda83f1a181f;hp=0245185fc00686e7c2b81ec4d9a1c794af796f17;hpb=0e0503a0c47a3950e0c8e65af965499e3ac270aa;p=silc.git diff --git a/lib/silcasn1/silcasn1_encode.c b/lib/silcasn1/silcasn1_encode.c index 0245185f..f4937390 100644 --- a/lib/silcasn1/silcasn1_encode.c +++ b/lib/silcasn1/silcasn1_encode.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2003 - 2006 Pekka Riikonen + Copyright (C) 2003 - 2007 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -555,8 +555,17 @@ silc_asn1_encoder(SilcAsn1 asn1, SilcStack stack1, SilcStack stack2, case SILC_ASN1_TAG_OCTET_STRING: { - /* Octet string. We put it in as 8-bit ASCII */ - SILC_ASN1_ENCODE_STRING(SILC_STRING_ASCII); + /* Octet string. Put data as is. */ + unsigned char *d = va_arg(asn1->ap, unsigned char *); + SilcUInt32 d_len = va_arg(asn1->ap, SilcUInt32); + + len = silc_ber_encoded_len(tag, d_len, indef); + dest = silc_buffer_srealloc_size(stack1, dest, + silc_buffer_truelen(dest) + len); + ret = silc_ber_encode(dest, ber_class, SILC_BER_ENC_PRIMITIVE, + tag, d, d_len, indef); + if (!ret) + goto fail; break; }