chiark / gitweb /
Merge branch '2.4.x' into 2.5.x
[catacomb] / pub / rsa-fetch.c
1 /* -*-c-*-
2  *
3  * Key fetching for RSA public and private keys
4  *
5  * (c) 2000 Straylight/Edgeware
6  */
7
8 /*----- Licensing notice --------------------------------------------------*
9  *
10  * This file is part of Catacomb.
11  *
12  * Catacomb is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU Library General Public License as
14  * published by the Free Software Foundation; either version 2 of the
15  * License, or (at your option) any later version.
16  *
17  * Catacomb is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU Library General Public License for more details.
21  *
22  * You should have received a copy of the GNU Library General Public
23  * License along with Catacomb; if not, write to the Free
24  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25  * MA 02111-1307, USA.
26  */
27
28 /*----- Header files ------------------------------------------------------*/
29
30 #include "key.h"
31 #include "rsa.h"
32
33 /*----- Key fetching ------------------------------------------------------*/
34
35 const key_fetchdef rsa_pubfetch[] = {
36   { "n",        offsetof(rsa_pub, n),           KENC_MP,        0 },
37   { "e",        offsetof(rsa_pub, e),           KENC_MP,        0 },
38   { 0,          0,                              0,              0 }
39 };
40
41 static const key_fetchdef priv[] = {
42   { "p",        offsetof(rsa_priv, p),          KENC_MP,        0 },
43   { "q",        offsetof(rsa_priv, q),          KENC_MP,        0 },
44   { "q-inv",    offsetof(rsa_priv, q_inv),      KENC_MP,        0 },
45   { "d",        offsetof(rsa_priv, d),          KENC_MP,        0 },
46   { "d-mod-p",  offsetof(rsa_priv, dp),         KENC_MP,        0 },
47   { "d-mod-q",  offsetof(rsa_priv, dq),         KENC_MP,        0 },
48   { 0,          0,                              0,              0 }
49 };
50
51 const key_fetchdef rsa_privfetch[] = {
52   { "n",        offsetof(rsa_priv, n),          KENC_MP,        0 },
53   { "e",        offsetof(rsa_priv, e),          KENC_MP,        0 },
54   { "private",  0,                              KENC_STRUCT,    priv },
55   { 0,          0,                              0,              0 }
56 };
57
58 /* --- @rsa_pubfree@, @rsa_privfree@ --- *
59  *
60  * Arguments:   @rsa_pub *rp@, @rsa_priv *rp@ = pointer to key block
61  *
62  * Returns:     ---
63  *
64  * Use:         Frees an RSA key block.
65  */
66
67 void rsa_pubfree(rsa_pub *rp)
68 {
69   mp_drop(rp->n);
70   mp_drop(rp->e);
71 }
72
73 void rsa_privfree(rsa_priv *rp)
74 {
75   mp_drop(rp->n);
76   mp_drop(rp->e);
77   mp_drop(rp->p);
78   mp_drop(rp->q);
79   mp_drop(rp->q_inv);
80   mp_drop(rp->d);
81   mp_drop(rp->dp);
82   mp_drop(rp->dq);
83 }
84
85 /*----- That's all, folks -------------------------------------------------*/