1<?php
2/*
3 * Copyright 2019 Google LLC
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18namespace Google\Auth;
19
20/**
21 * Describes a class which supports signing arbitrary strings.
22 */
23interface SignBlobInterface extends FetchAuthTokenInterface
24{
25    /**
26     * Sign a string using the method which is best for a given credentials type.
27     *
28     * @param string $stringToSign The string to sign.
29     * @param bool $forceOpenssl Require use of OpenSSL for local signing. Does
30     *        not apply to signing done using external services. **Defaults to**
31     *        `false`.
32     * @return string The resulting signature. Value should be base64-encoded.
33     */
34    public function signBlob($stringToSign, $forceOpenssl = false);
35
36    /**
37     * Returns the current Client Name.
38     *
39     * @param callable $httpHandler callback which delivers psr7 request, if
40     *     one is required to obtain a client name.
41     * @return string
42     */
43    public function getClientName(callable $httpHandler = null);
44}
45