Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Wim Lewis
nettle
Commits
91a6ac38
Commit
91a6ac38
authored
Nov 07, 2002
by
Niels Möller
Browse files
(dsa_keypair_from_sexp_alist, dsa_keypair_from_sexp):
New file, new functions. Rev: src/nettle/sexp2dsa.c:1.1
parent
f3848a07
Changes
1
Hide whitespace changes
Inline
Side-by-side
sexp2dsa.c
0 → 100644
View file @
91a6ac38
/* sexp2dsa.c
*
*/
/* nettle, low-level cryptographics library
*
* Copyright (C) 2002 Niels Mller
*
* The nettle library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or (at your
* option) any later version.
*
* The nettle library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the nettle library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*/
#if HAVE_CONFIG_H
#include
"config.h"
#endif
#if WITH_PUBLIC_KEY
#include
"dsa.h"
#include
"bignum.h"
#include
"sexp.h"
#include
<string.h>
#define GET(x, l, v) \
do { if (!nettle_mpz_set_sexp((x), (l), (v))) return 0; } while(0)
/* Iterator should point past the algorithm tag, e.g.
*
* (public-key (dsa (p |xxxx|) ...)
* ^ here
*/
int
dsa_keypair_from_sexp_alist
(
struct
dsa_public_key
*
pub
,
struct
dsa_private_key
*
priv
,
unsigned
limit
,
struct
sexp_iterator
*
i
)
{
static
const
uint8_t
*
names
[
5
]
=
{
"p"
,
"q"
,
"g"
,
"y"
,
"x"
};
struct
sexp_iterator
values
[
5
];
unsigned
nvalues
=
priv
?
5
:
4
;
if
(
!
sexp_iterator_assoc
(
i
,
nvalues
,
names
,
values
))
return
0
;
if
(
priv
)
GET
(
priv
->
x
,
limit
,
&
values
[
4
]);
GET
(
pub
->
p
,
limit
,
&
values
[
0
]);
GET
(
pub
->
q
,
DSA_Q_BITS
,
&
values
[
1
]);
GET
(
pub
->
g
,
limit
,
&
values
[
2
]);
GET
(
pub
->
y
,
limit
,
&
values
[
3
]);
return
1
;
}
int
dsa_keypair_from_sexp
(
struct
dsa_public_key
*
pub
,
struct
dsa_private_key
*
priv
,
unsigned
limit
,
unsigned
length
,
const
uint8_t
*
expr
)
{
struct
sexp_iterator
i
;
return
sexp_iterator_first
(
&
i
,
length
,
expr
)
&&
sexp_iterator_check_type
(
&
i
,
priv
?
"private-key"
:
"public-key"
)
&&
sexp_iterator_check_type
(
&
i
,
"dsa"
)
&&
dsa_keypair_from_sexp_alist
(
pub
,
priv
,
limit
,
&
i
);
}
#endif
/* WITH_PUBLIC_KEY */
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment