blob: d2192ef5591eae2a56174ee56866c18f75badb16 [file] [log] [blame]
Bob Beckbc97b7a2023-04-18 08:35:15 -06001// Copyright 2015 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "tag.h"
6
Bob Beck05007562023-08-17 20:22:17 +00007#include <openssl/base.h>
Bob Beckbc97b7a2023-04-18 08:35:15 -06008
9namespace bssl::der {
10
11Tag ContextSpecificConstructed(uint8_t tag_number) {
Bob Beck05007562023-08-17 20:22:17 +000012 BSSL_CHECK(tag_number == (tag_number & kTagNumberMask));
Bob Beckbc97b7a2023-04-18 08:35:15 -060013 return (tag_number & kTagNumberMask) | kTagConstructed | kTagContextSpecific;
14}
15
16Tag ContextSpecificPrimitive(uint8_t base) {
Bob Beck05007562023-08-17 20:22:17 +000017 BSSL_CHECK(base == (base & kTagNumberMask));
Bob Beckbc97b7a2023-04-18 08:35:15 -060018 return (base & kTagNumberMask) | kTagPrimitive | kTagContextSpecific;
19}
20
21bool IsConstructed(Tag tag) {
22 return (tag & kTagConstructionMask) == kTagConstructed;
23}
24
25} // namespace bssl::der