1// Copyright 2017, OpenCensus Authors 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package tag 16 17import "errors" 18 19const ( 20 maxKeyLength = 255 21 22 // valid are restricted to US-ASCII subset (range 0x20 (' ') to 0x7e ('~')). 23 validKeyValueMin = 32 24 validKeyValueMax = 126 25) 26 27var ( 28 errInvalidKeyName = errors.New("invalid key name: only ASCII characters accepted; max length must be 255 characters") 29 errInvalidValue = errors.New("invalid value: only ASCII characters accepted; max length must be 255 characters") 30) 31 32func checkKeyName(name string) bool { 33 if len(name) == 0 { 34 return false 35 } 36 if len(name) > maxKeyLength { 37 return false 38 } 39 return isASCII(name) 40} 41 42func isASCII(s string) bool { 43 for _, c := range s { 44 if (c < validKeyValueMin) || (c > validKeyValueMax) { 45 return false 46 } 47 } 48 return true 49} 50 51func checkValue(v string) bool { 52 if len(v) > maxKeyLength { 53 return false 54 } 55 return isASCII(v) 56} 57