Пример #1
0
asn1_error_code
k5_asn1_encode_bytestring(asn1buf *buf, unsigned char *const *val, size_t len,
                          size_t *len_out)
{
    if (len > 0 && val == NULL)
        return ASN1_MISSING_FIELD;
    *len_out = len;
    return asn1buf_insert_octetstring(buf, len, *val);
}
Пример #2
0
asn1_error_code
asn1_encode_opaque(asn1buf *buf, unsigned int len, const void *val,
                   unsigned int *retlen)
{
    asn1_error_code retval;

    retval = asn1buf_insert_octetstring(buf, len, val);
    if (retval) return retval;
    *retlen = len;
    return 0;
}
Пример #3
0
asn1_error_code
k5_asn1_encode_bitstring(asn1buf *buf, unsigned char *const *val, size_t len,
                         size_t *len_out)
{
    asn1_error_code ret;

    ret = asn1buf_insert_octetstring(buf, len, *val);
    if (ret)
        return ret;
    *len_out = len + 1;
    return asn1buf_insert_octet(buf, '\0');
}
Пример #4
0
asn1_error_code
asn1_encode_bitstring(asn1buf *buf, unsigned int len, const void *val,
                      unsigned int *retlen)
{
    asn1_error_code retval;
    unsigned int length;

    retval = asn1buf_insert_octetstring(buf, len, val);
    if (retval) return retval;
    retval = asn1buf_insert_octet(buf, 0);
    if (retval) return retval;
    retval = asn1_make_tag(buf, UNIVERSAL, PRIMITIVE, ASN1_BITSTRING,
                           len+1, &length);
    if (retval) return retval;
    *retlen = len + 1 + length;
    return 0;
}
Пример #5
0
static asn1_error_code
encode_bytestring_with_tag(asn1buf *buf, unsigned int len,
                           const void *val, int tag,
                           unsigned int *retlen)
{
    asn1_error_code retval;
    unsigned int length;

    if (len > 0 && val == 0) return ASN1_MISSING_FIELD;
    retval = asn1buf_insert_octetstring(buf, len, val);
    if (retval) return retval;
    retval = asn1_make_tag(buf, UNIVERSAL, PRIMITIVE, tag,
                           len, &length);
    if (retval) return retval;

    *retlen = len + length;
    return 0;
}