aboutsummaryrefslogtreecommitdiff
path: root/rsa.h
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);

}