// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

@internal
library amplify_auth_cognito.flow.helpers;

import 'dart:convert';

import 'package:crypto/crypto.dart';
import 'package:meta/meta.dart';

/// Computes the client's secret hash for use in Cognito operations.
String computeSecretHash(
  String userId,
  String clientId,
  String clientSecret,
) {
  final message = '$userId$clientId';
  final keyBytes = utf8.encode(clientSecret);
  final messageBytes = utf8.encode(message);

  final hash = Hmac(sha256, keyBytes);
  final secretHash = hash.convert(messageBytes).bytes;

  return base64Encode(secretHash);
}