|  | // Copyright 2015 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "tag.h" | 
|  |  | 
|  | #include <openssl/base.h> | 
|  |  | 
|  | namespace bssl::der { | 
|  |  | 
|  | Tag ContextSpecificConstructed(uint8_t tag_number) { | 
|  | BSSL_CHECK(tag_number == (tag_number & kTagNumberMask)); | 
|  | return (tag_number & kTagNumberMask) | kTagConstructed | kTagContextSpecific; | 
|  | } | 
|  |  | 
|  | Tag ContextSpecificPrimitive(uint8_t base) { | 
|  | BSSL_CHECK(base == (base & kTagNumberMask)); | 
|  | return (base & kTagNumberMask) | kTagPrimitive | kTagContextSpecific; | 
|  | } | 
|  |  | 
|  | bool IsConstructed(Tag tag) { | 
|  | return (tag & kTagConstructionMask) == kTagConstructed; | 
|  | } | 
|  |  | 
|  | }  // namespace bssl::der |