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
Nettle
nettle
Commits
2d796c6e
Commit
2d796c6e
authored
Apr 03, 2013
by
Niels Möller
Browse files
Implemented ecc_point_mul and ecc_point_mul_g.
parent
c44b8d2e
Changes
5
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
2d796c6e
2013-04-03 Niels Möller <nisse@lysator.liu.se>
* ecc-point-mul-g.c (ecc_point_mul_g): New file and function.
* ecc-point-mul.c (ecc_point_mul): New file and function.
* ecc.h: Updated declarations and name mangling.
* Makefile.in (hogweed_SOURCES): Added ecc-point-mul.c and
ecc-point-mul-g.c.
* testsuite/salsa20-test.c (test_main): Tests for salsa20r12,
contributed by Nikos Mavrogiannopoulos.
...
...
Makefile.in
View file @
2d796c6e
...
...
@@ -133,7 +133,7 @@ hogweed_SOURCES = sexp.c sexp-format.c \
ecc-size.c ecc-j-to-a.c ecc-a-to-j.c
\
ecc-dup-jj.c ecc-add-jja.c ecc-add-jjj.c
\
ecc-mul-g.c ecc-mul-a.c ecc-hash.c ecc-random.c
\
ecc-point.c ecc-scalar.c
\
ecc-point.c ecc-scalar.c
ecc-point-mul.c ecc-point-mul-g.c
\
ecc-ecdsa-sign.c ecdsa-sign.c
\
ecc-ecdsa-verify.c ecdsa-verify.c ecdsa-keygen.c
...
...
ecc-point-mul-g.c
0 → 100644
View file @
2d796c6e
/* ecc-point-mul-g.c */
/* nettle, low-level cryptographics library
*
* Copyright (C) 2013 Niels Möller
*
* 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., 51 Franklin Street, Fifth Floor, Boston,
* MA 02111-1301, USA.
*/
/* Development of Nettle's ECC support was funded by Internetfonden. */
#if HAVE_CONFIG_H
# include "config.h"
#endif
#include
<assert.h>
#include
"ecc.h"
#include
"ecc-internal.h"
#include
"gmp-glue.h"
#include
"nettle-internal.h"
void
ecc_point_mul_g
(
struct
ecc_point
*
r
,
const
struct
ecc_scalar
*
n
)
{
TMP_DECL
(
scratch
,
mp_limb_t
,
3
*
ECC_MAX_SIZE
+
ECC_MUL_G_ITCH
(
ECC_MAX_SIZE
));
mp_limb_t
size
=
r
->
ecc
->
size
;
mp_size_t
itch
=
3
*
size
+
ECC_MUL_G_ITCH
(
size
);
assert
(
r
->
ecc
==
n
->
ecc
);
TMP_ALLOC
(
scratch
,
itch
);
ecc_mul_g
(
r
->
ecc
,
scratch
,
n
->
p
,
scratch
+
3
*
size
);
ecc_j_to_a
(
r
->
ecc
,
1
,
r
->
p
,
scratch
,
scratch
+
3
*
size
);
}
ecc-point-mul.c
0 → 100644
View file @
2d796c6e
/* ecc-point-mul.c */
/* nettle, low-level cryptographics library
*
* Copyright (C) 2013 Niels Möller
*
* 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., 51 Franklin Street, Fifth Floor, Boston,
* MA 02111-1301, USA.
*/
/* Development of Nettle's ECC support was funded by Internetfonden. */
#if HAVE_CONFIG_H
# include "config.h"
#endif
#include
<assert.h>
#include
"ecc.h"
#include
"ecc-internal.h"
#include
"gmp-glue.h"
void
ecc_point_mul
(
struct
ecc_point
*
r
,
const
struct
ecc_scalar
*
n
,
const
struct
ecc_point
*
p
)
{
mp_limb_t
size
=
p
->
ecc
->
size
;
mp_size_t
itch
=
3
*
size
+
ECC_MUL_A_ITCH
(
size
);
mp_limb_t
*
scratch
=
gmp_alloc_limbs
(
itch
);
assert
(
n
->
ecc
==
p
->
ecc
);
assert
(
r
->
ecc
==
p
->
ecc
);
ecc_mul_a
(
p
->
ecc
,
1
,
scratch
,
n
->
p
,
p
->
p
,
scratch
+
3
*
size
);
ecc_j_to_a
(
r
->
ecc
,
1
,
r
->
p
,
scratch
,
scratch
+
3
*
size
);
gmp_free_limbs
(
scratch
,
itch
);
}
ecc.h
View file @
2d796c6e
...
...
@@ -38,6 +38,8 @@ extern "C" {
#define ecc_point_clear nettle_ecc_point_clear
#define ecc_point_set nettle_ecc_point_set
#define ecc_point_get nettle_ecc_point_get
#define ecc_point_mul nettle_ecc_point_mul
#define ecc_point_mul_g nettle_ecc_point_mul_g
#define ecc_scalar_init nettle_ecc_scalar_init
#define ecc_scalar_clear nettle_ecc_scalar_clear
#define ecc_scalar_set nettle_ecc_scalar_set
...
...
@@ -118,6 +120,10 @@ void
ecc_point_mul
(
struct
ecc_point
*
r
,
const
struct
ecc_scalar
*
n
,
const
struct
ecc_point
*
p
);
/* Computes r = n g */
void
ecc_point_mul_g
(
struct
ecc_point
*
r
,
const
struct
ecc_scalar
*
n
);
/* Low-level interface */
...
...
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