Bob Beck | bc97b7a | 2023-04-18 08:35:15 -0600 | [diff] [blame] | 1 | // 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 Beck | 0500756 | 2023-08-17 20:22:17 +0000 | [diff] [blame] | 7 | #include <openssl/base.h> |
Bob Beck | bc97b7a | 2023-04-18 08:35:15 -0600 | [diff] [blame] | 8 | |
| 9 | namespace bssl::der { |
| 10 | |
| 11 | Tag ContextSpecificConstructed(uint8_t tag_number) { |
Bob Beck | 0500756 | 2023-08-17 20:22:17 +0000 | [diff] [blame] | 12 | BSSL_CHECK(tag_number == (tag_number & kTagNumberMask)); |
Bob Beck | bc97b7a | 2023-04-18 08:35:15 -0600 | [diff] [blame] | 13 | return (tag_number & kTagNumberMask) | kTagConstructed | kTagContextSpecific; |
| 14 | } |
| 15 | |
| 16 | Tag ContextSpecificPrimitive(uint8_t base) { |
Bob Beck | 0500756 | 2023-08-17 20:22:17 +0000 | [diff] [blame] | 17 | BSSL_CHECK(base == (base & kTagNumberMask)); |
Bob Beck | bc97b7a | 2023-04-18 08:35:15 -0600 | [diff] [blame] | 18 | return (base & kTagNumberMask) | kTagPrimitive | kTagContextSpecific; |
| 19 | } |
| 20 | |
| 21 | bool IsConstructed(Tag tag) { |
| 22 | return (tag & kTagConstructionMask) == kTagConstructed; |
| 23 | } |
| 24 | |
| 25 | } // namespace bssl::der |