#pragma once

#include <vector>
#include "rsa.h"

namespace netplus {

class rsa_pss_sha384 {
public:
    // Sign message using RSA-PSS with SHA-384
    static std::vector<uint8_t> sign(netplus::rsa& key, const std::vector<uint8_t>& message);
    
    // Verify signature using RSA-PSS with SHA-384
    static bool verify(const netplus::rsa& key, const std::vector<uint8_t>& signature,
                      const std::vector<uint8_t>& message);

private:
    // Utility functions
    static std::vector<uint8_t> sha384(const std::vector<uint8_t>& in);
    static std::vector<uint8_t> mgf1_sha384(const std::vector<uint8_t>& seed, size_t outLen);
    static std::vector<uint8_t> emsa_pss_encode(const std::vector<uint8_t>& mHash, size_t emBits);
};

} // namespace netplus
