File: save.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (29 lines) | stat: -rw-r--r-- 900 bytes parent folder | download | duplicates (3)
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
#include "diffiehellman.ih"

    // save the prime, the generator, the public key, and the private key
void DiffieHellman::save(string const &basename) const
try
{
    ofstream out = Exception::factory<ofstream>(basename + ".pub");
    out << hex <<
            d_prime << '\n' <<
            d_generator << '\n' <<
            d_pubKey << '\n';

    if (not out)
        throw ".pub";

    int fd = open((basename + ".sec").c_str(), O_CREAT | O_RDWR,
                                               S_IRUSR | S_IWUSR);
    if (fd == -1)                           // can't open the .sec-file
        throw ".sec";

    OFdStream outSec{ fd, 512 };
    outSec << hex << d_privKey << '\n';
}
catch (char const *extension)
{
    throw exception() << "could not write " <<
                    (extension == ".pub"s ? "public" : "private") <<
                    " DH info to " << basename << extension;
}