blob: abedf8472a759cbf302861729df63de4061c500c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#pragma once
#include <string>
#include <utility>
#include "bigint.h"
namespace RSA{
struct PublicKey{
Bigint mod,exp;
};
struct PrivateKey{
PublicKey pub;
Bigint pexp;
};
Bigint encrypt(const PublicKey &key,Bigint msg);
Bigint decrypt(const PrivateKey &key,Bigint msg);
PrivateKey genkey(int nbits); //nbits is target number of bits of modulus
PrivateKey genkey(int nbits,const std::string &password); //generates key seeded by password
std::pair<std::string,std::string> exportkey(const PrivateKey&); //returns {pub,priv}
PrivateKey importkey(const std::string &pub,const std::string &priv);
}
|