diff options
author | jospaeth <spaethj@in.tum.de> | 2020-07-13 18:43:29 +0200 |
---|---|---|
committer | jospaeth <spaethj@in.tum.de> | 2020-07-13 18:43:29 +0200 |
commit | 9916fbea6c32518329ff95f07e6b9818490f9eae (patch) | |
tree | 8fd3c4e33fae4f8b1c1518153366cfeaeebfab44 /src | |
parent | 33bb7ee2507c9b72f366eae9c6c2136c3c6badb5 (diff) | |
download | gnunet-9916fbea6c32518329ff95f07e6b9818490f9eae.tar.gz gnunet-9916fbea6c32518329ff95f07e6b9818490f9eae.zip |
add crypto method for ecdsa privkey from string
Diffstat (limited to 'src')
-rw-r--r-- | src/include/gnunet_crypto_lib.h | 17 | ||||
-rw-r--r-- | src/util/crypto_ecc.c | 35 |
2 files changed, 50 insertions, 2 deletions
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h index 320701643..dd9ff3da5 100644 --- a/src/include/gnunet_crypto_lib.h +++ b/src/include/gnunet_crypto_lib.h | |||
@@ -1177,6 +1177,21 @@ GNUNET_CRYPTO_eddsa_public_key_to_string ( | |||
1177 | 1177 | ||
1178 | 1178 | ||
1179 | /** | 1179 | /** |
1180 | * Convert a string representing a private key to a private key. | ||
1181 | * | ||
1182 | * @param enc encoded private key | ||
1183 | * @param enclen number of bytes in @a enc (without 0-terminator) | ||
1184 | * @param priv where to store the private key | ||
1185 | * @return #GNUNET_OK on success | ||
1186 | */ | ||
1187 | int | ||
1188 | GNUNET_CRYPTO_ecdsa_private_key_from_string ( | ||
1189 | const char *enc, | ||
1190 | size_t enclen, | ||
1191 | struct GNUNET_CRYPTO_EcdsaPrivateKey *pub); | ||
1192 | |||
1193 | |||
1194 | /** | ||
1180 | * Convert a string representing a public key to a public key. | 1195 | * Convert a string representing a public key to a public key. |
1181 | * | 1196 | * |
1182 | * @param enc encoded public key | 1197 | * @param enc encoded public key |
@@ -1194,7 +1209,7 @@ GNUNET_CRYPTO_ecdsa_public_key_from_string ( | |||
1194 | /** | 1209 | /** |
1195 | * Convert a string representing a private key to a private key. | 1210 | * Convert a string representing a private key to a private key. |
1196 | * | 1211 | * |
1197 | * @param enc encoded public key | 1212 | * @param enc encoded private key |
1198 | * @param enclen number of bytes in @a enc (without 0-terminator) | 1213 | * @param enclen number of bytes in @a enc (without 0-terminator) |
1199 | * @param priv where to store the private key | 1214 | * @param priv where to store the private key |
1200 | * @return #GNUNET_OK on success | 1215 | * @return #GNUNET_OK on success |
diff --git a/src/util/crypto_ecc.c b/src/util/crypto_ecc.c index e1608ae55..3db5b19ab 100644 --- a/src/util/crypto_ecc.c +++ b/src/util/crypto_ecc.c | |||
@@ -388,6 +388,39 @@ GNUNET_CRYPTO_ecdsa_public_key_from_string ( | |||
388 | 388 | ||
389 | 389 | ||
390 | /** | 390 | /** |
391 | * Convert a string representing a private key to a private key. | ||
392 | * | ||
393 | * @param enc encoded private key | ||
394 | * @param enclen number of bytes in @a enc (without 0-terminator) | ||
395 | * @param priv where to store the private key | ||
396 | * @return #GNUNET_OK on success | ||
397 | */ | ||
398 | int | ||
399 | GNUNET_CRYPTO_ecdsa_private_key_from_string ( | ||
400 | const char *enc, | ||
401 | size_t enclen, | ||
402 | struct GNUNET_CRYPTO_EcdsaPrivateKey *priv) | ||
403 | { | ||
404 | size_t keylen = (sizeof(struct GNUNET_CRYPTO_EcdsaPrivateKey)) * 8; | ||
405 | |||
406 | if (keylen % 5 > 0) | ||
407 | keylen += 5 - keylen % 5; | ||
408 | keylen /= 5; | ||
409 | if (enclen != keylen) | ||
410 | return GNUNET_SYSERR; | ||
411 | |||
412 | if (GNUNET_OK != | ||
413 | GNUNET_STRINGS_string_to_data (enc, | ||
414 | enclen, | ||
415 | priv, | ||
416 | sizeof( | ||
417 | struct GNUNET_CRYPTO_EcdsaPrivateKey))) | ||
418 | return GNUNET_SYSERR; | ||
419 | return GNUNET_OK; | ||
420 | } | ||
421 | |||
422 | |||
423 | /** | ||
391 | * Convert a string representing a public key to a public key. | 424 | * Convert a string representing a public key to a public key. |
392 | * | 425 | * |
393 | * @param enc encoded public key | 426 | * @param enc encoded public key |
@@ -423,7 +456,7 @@ GNUNET_CRYPTO_eddsa_public_key_from_string ( | |||
423 | /** | 456 | /** |
424 | * Convert a string representing a private key to a private key. | 457 | * Convert a string representing a private key to a private key. |
425 | * | 458 | * |
426 | * @param enc encoded public key | 459 | * @param enc encoded private key |
427 | * @param enclen number of bytes in @a enc (without 0-terminator) | 460 | * @param enclen number of bytes in @a enc (without 0-terminator) |
428 | * @param priv where to store the private key | 461 | * @param priv where to store the private key |
429 | * @return #GNUNET_OK on success | 462 | * @return #GNUNET_OK on success |