/usr/include/botan/rsa.h is in libbotan1.8-dev 1.8.13-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | /*
* RSA
* (C) 1999-2008 Jack Lloyd
*
* Distributed under the terms of the Botan license
*/
#ifndef BOTAN_RSA_H__
#define BOTAN_RSA_H__
#include <botan/if_algo.h>
namespace Botan {
/**
* RSA Public Key
*/
class BOTAN_DLL RSA_PublicKey : public PK_Encrypting_Key,
public PK_Verifying_with_MR_Key,
public virtual IF_Scheme_PublicKey
{
public:
std::string algo_name() const { return "RSA"; }
SecureVector<byte> encrypt(const byte[], u32bit,
RandomNumberGenerator& rng) const;
SecureVector<byte> verify(const byte[], u32bit) const;
RSA_PublicKey() {}
RSA_PublicKey(const BigInt&, const BigInt&);
protected:
BigInt public_op(const BigInt&) const;
};
/**
* RSA Private Key class.
*/
class BOTAN_DLL RSA_PrivateKey : public RSA_PublicKey,
public PK_Decrypting_Key,
public PK_Signing_Key,
public IF_Scheme_PrivateKey
{
public:
SecureVector<byte> sign(const byte[], u32bit,
RandomNumberGenerator&) const;
SecureVector<byte> decrypt(const byte[], u32bit) const;
bool check_key(RandomNumberGenerator& rng, bool) const;
/**
* Default constructor, does not set any internal values. Use this
* constructor if you wish to decode a DER or PEM encoded key.
*/
RSA_PrivateKey() {}
/**
* Construct a private key from the specified parameters.
* @param rng the random number generator to use
* @param prime1 the first prime
* @param prime2 the second prime
* @param exp the exponent
* @param d_exp if specified, this has to be d with
* exp * d = 1 mod (p - 1, q - 1). Leave it as 0 if you wish to
* the constructor to calculate it.
* @param n if specified, this must be n = p * q. Leave it as 0
* if you wish to the constructor to calculate it.
*/
RSA_PrivateKey(RandomNumberGenerator& rng,
const BigInt& p, const BigInt& q, const BigInt& e,
const BigInt& d = 0, const BigInt& n = 0);
/**
* Create a new private key with the specified bit length
* @param rng the random number generator to use
* @param bits the desired bit length of the private key
* @param exp the public exponent to be used
*/
RSA_PrivateKey(RandomNumberGenerator& rng,
u32bit bits, u32bit exp = 65537);
private:
BigInt private_op(const byte[], u32bit) const;
};
}
#endif
|