github.com/hashgraph/hedera-sdk-go/v2@v2.48.0/account_info_flow.go (about)

     1  package hedera
     2  
     3  /*-
     4   *
     5   * Hedera Go SDK
     6   *
     7   * Copyright (C) 2020 - 2024 Hedera Hashgraph, LLC
     8   *
     9   * Licensed under the Apache License, Version 2.0 (the "License");
    10   * you may not use this file except in compliance with the License.
    11   * You may obtain a copy of the License at
    12   *
    13   *      http://www.apache.org/licenses/LICENSE-2.0
    14   *
    15   * Unless required by applicable law or agreed to in writing, software
    16   * distributed under the License is distributed on an "AS IS" BASIS,
    17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    18   * See the License for the specific language governing permissions and
    19   * limitations under the License.
    20   *
    21   */
    22  
    23  // AccountInfoFlowVerifySignature Verifies signature using AccountInfoQuery
    24  func AccountInfoFlowVerifySignature(client *Client, accountID AccountID, message []byte, signature []byte) (bool, error) {
    25  	info, err := NewAccountInfoQuery().
    26  		SetAccountID(accountID).
    27  		Execute(client)
    28  
    29  	if err != nil {
    30  		return false, err
    31  	}
    32  
    33  	if key, ok := info.Key.(PublicKey); ok {
    34  		return key.Verify(message, signature), nil
    35  	}
    36  
    37  	return false, nil
    38  }
    39  
    40  // AccountInfoFlowVerifyTransaction Verifies transaction using AccountInfoQuery
    41  func AccountInfoFlowVerifyTransaction(client *Client, accountID AccountID, tx Transaction, _ []byte) (bool, error) {
    42  	info, err := NewAccountInfoQuery().
    43  		SetAccountID(accountID).
    44  		Execute(client)
    45  
    46  	if err != nil {
    47  		return false, err
    48  	}
    49  
    50  	if key, ok := info.Key.(PublicKey); ok {
    51  		return key.VerifyTransaction(tx), nil
    52  	}
    53  
    54  	return false, nil
    55  }