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

class Nonce {
  String nonce;
  List<int> key;
  String? encoded;

  Nonce({required this.nonce, required this.key});

  Future encode(String message) async {
    List<int> messageBytes = utf8.encode(message);
    Hmac hmac = Hmac(sha512, key);
    Digest digest = hmac.convert(messageBytes);
    encoded = base64.encode(digest.bytes);
  }

  Map<String, String> header() {
    return {
      "X-Authorizationpolicy-Nonce": nonce,
      "X-Authorizationpolicy-Key": encoded ?? "",
      "X-Authorizationpolicy-Version": "v2",
    };
  }
}