blob: 532f9693dc37a385a25597de5c515d114a08b6ad [file] [log] [blame]
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "cobalt/csp/source_list_directive.h"
namespace cobalt {
namespace csp {
bool SourceListDirective::LocalNetworkChecker::IsIPInLocalNetwork(
const SbSocketAddress& destination) const {
return ::cobalt::network::IsIPInLocalNetwork(destination);
}
bool SourceListDirective::LocalNetworkChecker::IsIPInPrivateRange(
const SbSocketAddress& destination) const {
return ::cobalt::network::IsIPInPrivateRange(destination);
}
SourceListDirective::SourceListDirective(const std::string& name,
const std::string& value,
ContentSecurityPolicy* policy)
: Directive(name, value, policy),
source_list_(&local_network_checker_, policy, name) {
source_list_.Parse(base::StringPiece(value));
}
bool SourceListDirective::Allows(
const GURL& url,
ContentSecurityPolicy::RedirectStatus redirectStatus) const {
return source_list_.Matches(url.is_empty() ? policy()->url() : url,
redirectStatus);
}
bool SourceListDirective::AllowInline() const {
return source_list_.AllowInline();
}
bool SourceListDirective::AllowEval() const { return source_list_.AllowEval(); }
bool SourceListDirective::AllowNonce(const std::string& nonce) const {
std::string trimmed_nonce;
TrimWhitespaceASCII(nonce, TRIM_ALL, &trimmed_nonce);
return source_list_.AllowNonce(trimmed_nonce);
}
bool SourceListDirective::AllowHash(const HashValue& hashValue) const {
return source_list_.AllowHash(hashValue);
}
bool SourceListDirective::hash_or_nonce_present() const {
return source_list_.hash_or_nonce_present();
}
uint8 SourceListDirective::hash_algorithms_used() const {
return source_list_.hash_algorithms_used();
}
} // namespace csp
} // namespace cobalt