Based on Nekogram. Key additions: - Rebrand to FoxiGram (app name, APK name, applicationId com.foxigram.app) - Embedded Xray (VLESS+Reality) proxy client via JNI libxray.so - Bundled hidden one-tap proxies (LTE + WiFi), read-only in UI - Auto-restore proxy on restart, rebind to active network (LTE/WiFi) - Server credentials externalized to git-ignored XrayServers.java (+ template) - libxray Go source included; compiled .so, keystore, google-services.json ignored
71 lines
2.9 KiB
C++
71 lines
2.9 KiB
C++
// Copyright 2015 The Chromium Authors
|
|
//
|
|
// 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
|
|
//
|
|
// https://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.
|
|
|
|
#ifndef BSSL_PKI_VERIFY_NAME_MATCH_H_
|
|
#define BSSL_PKI_VERIFY_NAME_MATCH_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <openssl/base.h>
|
|
|
|
BSSL_NAMESPACE_BEGIN
|
|
|
|
class CertErrors;
|
|
|
|
namespace der {
|
|
class Input;
|
|
} // namespace der
|
|
|
|
// Normalizes DER-encoded X.501 Name |name_rdn_sequence| (which should not
|
|
// include the Sequence tag). If successful, returns true and stores the
|
|
// normalized DER-encoded Name into |normalized_rdn_sequence| (not including an
|
|
// outer Sequence tag). Returns false if there was an error parsing or
|
|
// normalizing the input, and adds error information to |errors|. |errors| must
|
|
// be non-null.
|
|
OPENSSL_EXPORT bool NormalizeName(der::Input name_rdn_sequence,
|
|
std::string *normalized_rdn_sequence,
|
|
CertErrors *errors);
|
|
|
|
// Compares DER-encoded X.501 Name values according to RFC 5280 rules.
|
|
// |a_rdn_sequence| and |b_rdn_sequence| should be the DER-encoded RDNSequence
|
|
// values (not including the Sequence tag).
|
|
// Returns true if |a_rdn_sequence| and |b_rdn_sequence| match.
|
|
OPENSSL_EXPORT bool VerifyNameMatch(der::Input a_rdn_sequence,
|
|
der::Input b_rdn_sequence);
|
|
|
|
// Compares |name_rdn_sequence| and |parent_rdn_sequence| and return true if
|
|
// |name_rdn_sequence| is within the subtree defined by |parent_rdn_sequence| as
|
|
// defined by RFC 5280 section 7.1. |name_rdn_sequence| and
|
|
// |parent_rdn_sequence| should be the DER-encoded sequence values (not
|
|
// including the Sequence tag).
|
|
OPENSSL_EXPORT bool VerifyNameInSubtree(der::Input name_rdn_sequence,
|
|
der::Input parent_rdn_sequence);
|
|
|
|
// Helper functions:
|
|
|
|
// Find all emailAddress attribute values in |name_rdn_sequence|.
|
|
// Returns true if parsing was successful, in which case
|
|
// |*contained_email_address| will contain zero or more values. The values
|
|
// returned in |*contained_email_addresses| will be UTF8 strings and have been
|
|
// checked that they were valid strings for the string type of the attribute
|
|
// tag, but otherwise have not been validated.
|
|
// Returns false if there was a parsing error.
|
|
[[nodiscard]] bool FindEmailAddressesInName(
|
|
der::Input name_rdn_sequence,
|
|
std::vector<std::string> *contained_email_addresses);
|
|
|
|
BSSL_NAMESPACE_END
|
|
|
|
#endif // BSSL_PKI_VERIFY_NAME_MATCH_H_
|