aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/google/safehtml/template/trustedtemplate.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2023-02-22 22:16:50 +0100
committerTaras Madan <tarasmadan@google.com>2023-02-24 12:47:23 +0100
commit4165372ec8fd142475a4e35fd0cf4f8042132208 (patch)
tree21cd62211b4dd80bee469054c5b65db77342333c /vendor/github.com/google/safehtml/template/trustedtemplate.go
parent2b3ed821a493b8936c8bacfa6f8b4f1c90a00855 (diff)
dependencies: update
set go min requirements to 1.19 update dependencies update vendor
Diffstat (limited to 'vendor/github.com/google/safehtml/template/trustedtemplate.go')
-rw-r--r--vendor/github.com/google/safehtml/template/trustedtemplate.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/github.com/google/safehtml/template/trustedtemplate.go b/vendor/github.com/google/safehtml/template/trustedtemplate.go
new file mode 100644
index 000000000..bd3b1b46a
--- /dev/null
+++ b/vendor/github.com/google/safehtml/template/trustedtemplate.go
@@ -0,0 +1,36 @@
+// Copyright (c) 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 or at
+// https://developers.google.com/open-source/licenses/bsd
+
+package template
+
+// A TrustedTemplate is an immutable string-like type containing a
+// safehtml/template template body. It can be safely loaded as template
+// text without the risk of untrusted template execution.
+//
+// In order to ensure that an attacker cannot influence the TrustedTemplate
+// value, a TrustedTemplate can be instantiated only from untyped string constants,
+// and never from arbitrary string values potentially representing untrusted user input.
+//
+type TrustedTemplate struct {
+ // We declare a TrustedTemplate not as a string but as a struct wrapping a string
+ // to prevent construction of TrustedTemplate values through string conversion.
+ tmpl string
+}
+
+// MakeTrustedTemplate constructs a TrustedTemplate with its underlying
+// tmpl set to the given tmpl, which must be an untyped string constant.
+//
+// No runtime validation or sanitization is performed on tmpl; being under
+// application control, it is simply assumed to comply with the TrustedTemplate type
+// contract.
+func MakeTrustedTemplate(tmpl stringConstant) TrustedTemplate {
+ return TrustedTemplate{string(tmpl)}
+}
+
+// String returns the string form of the TrustedTemplate.
+func (t TrustedTemplate) String() string {
+ return t.tmpl
+}