From: Richard Levitte Date: Mon, 27 Jul 2020 16:39:51 +0000 (+0200) Subject: DER writer: Make context-specific tags constructed (i.e. explicit) X-Git-Tag: openssl-3.0.0-alpha6~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c6b20d59153cd29e38dfebee0b8a6f998402254;p=thirdparty%2Fopenssl.git DER writer: Make context-specific tags constructed (i.e. explicit) For now, that's what we see being used. It's possible that we will have to figure out a way to specific if these should be implicit or explicit on a case by case basis. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/12544) --- diff --git a/crypto/der_writer.c b/crypto/der_writer.c index 87627875047..117b5dff90f 100644 --- a/crypto/der_writer.c +++ b/crypto/der_writer.c @@ -38,10 +38,14 @@ static int int_end_context(WPACKET *pkt, int tag) return 1; if (!ossl_assert(tag <= 30)) return 0; + + /* Context specific are normally (?) constructed */ + tag |= DER_F_CONSTRUCTED | DER_C_CONTEXT; + return WPACKET_get_total_written(pkt, &size1) && WPACKET_close(pkt) && WPACKET_get_total_written(pkt, &size2) - && (size1 == size2 || WPACKET_put_bytes_u8(pkt, DER_C_CONTEXT | tag)); + && (size1 == size2 || WPACKET_put_bytes_u8(pkt, tag)); } int DER_w_precompiled(WPACKET *pkt, int tag,