| // Copyright 2017 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Package asn1 contains supporting types for parsing and building ASN.1 |
| // messages with the cryptobyte package. |
| package asn1 // import "golang.org/x/crypto/cryptobyte/asn1" |
| |
| // Tag represents an ASN.1 identifier octet, consisting of a tag number |
| // (indicating a type) and class (such as context-specific or constructed). |
| // |
| // Methods in the cryptobyte package only support the low-tag-number form, i.e. |
| // a single identifier octet with bits 7-8 encoding the class and bits 1-6 |
| // encoding the tag number. |
| type Tag uint8 |
| |
| const ( |
| classConstructed = 0x20 |
| classContextSpecific = 0x80 |
| ) |
| |
| // Constructed returns t with the constructed class bit set. |
| func (t Tag) Constructed() Tag { return t | classConstructed } |
| |
| // ContextSpecific returns t with the context-specific class bit set. |
| func (t Tag) ContextSpecific() Tag { return t | classContextSpecific } |
| |
| // The following is a list of standard tag and class combinations. |
| const ( |
| BOOLEAN = Tag(1) |
| INTEGER = Tag(2) |
| BIT_STRING = Tag(3) |
| OCTET_STRING = Tag(4) |
| NULL = Tag(5) |
| OBJECT_IDENTIFIER = Tag(6) |
| ENUM = Tag(10) |
| UTF8String = Tag(12) |
| SEQUENCE = Tag(16 | classConstructed) |
| SET = Tag(17 | classConstructed) |
| PrintableString = Tag(19) |
| T61String = Tag(20) |
| IA5String = Tag(22) |
| UTCTime = Tag(23) |
| GeneralizedTime = Tag(24) |
| GeneralString = Tag(27) |
| ) |