projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add tests for dump commands
[tinc]
/
src
/
gcrypt
/
rsa.c
diff --git
a/src/gcrypt/rsa.c
b/src/gcrypt/rsa.c
index
83f177b
..
292c773
100644
(file)
--- a/
src/gcrypt/rsa.c
+++ b/
src/gcrypt/rsa.c
@@
-23,6
+23,7
@@
#include "pem.h"
#include "pem.h"
+#include "asn1.h"
#include "rsa.h"
#include "../logger.h"
#include "../rsa.h"
#include "rsa.h"
#include "../logger.h"
#include "../rsa.h"
@@
-84,20
+85,11
@@
static size_t ber_read_len(unsigned char **p, size_t *buflen) {
}
}
}
}
-
-static bool ber_read_sequence(unsigned char **p, size_t *buflen, size_t *result) {
+static bool ber_skip_sequence(unsigned char **p, size_t *buflen) {
int tag = ber_read_id(p, buflen);
int tag = ber_read_id(p, buflen);
- size_t len = ber_read_len(p, buflen);
- if(tag == 0x10) {
- if(result) {
- *result = len;
- }
-
- return true;
- } else {
- return false;
- }
+ return tag == TAG_SEQUENCE &&
+ ber_read_len(p, buflen) > 0;
}
static bool ber_read_mpi(unsigned char **p, size_t *buflen, gcry_mpi_t *mpi) {
}
static bool ber_read_mpi(unsigned char **p, size_t *buflen, gcry_mpi_t *mpi) {
@@
-119,8
+111,12
@@
static bool ber_read_mpi(unsigned char **p, size_t *buflen, gcry_mpi_t *mpi) {
return mpi ? !err : true;
}
return mpi ? !err : true;
}
+rsa_t *rsa_new(void) {
+ return xzalloc(sizeof(rsa_t));
+}
+
rsa_t *rsa_set_hex_public_key(const char *n, const char *e) {
rsa_t *rsa_set_hex_public_key(const char *n, const char *e) {
- rsa_t *rsa =
xzalloc(sizeof(rsa_t)
);
+ rsa_t *rsa =
rsa_new(
);
gcry_error_t err = gcry_mpi_scan(&rsa->n, GCRYMPI_FMT_HEX, n, 0, NULL);
gcry_error_t err = gcry_mpi_scan(&rsa->n, GCRYMPI_FMT_HEX, n, 0, NULL);
@@
-138,7
+134,7
@@
rsa_t *rsa_set_hex_public_key(const char *n, const char *e) {
}
rsa_t *rsa_set_hex_private_key(const char *n, const char *e, const char *d) {
}
rsa_t *rsa_set_hex_private_key(const char *n, const char *e, const char *d) {
- rsa_t *rsa =
xzalloc(sizeof(rsa_t)
);
+ rsa_t *rsa =
rsa_new(
);
gcry_error_t err = gcry_mpi_scan(&rsa->n, GCRYMPI_FMT_HEX, n, 0, NULL);
gcry_error_t err = gcry_mpi_scan(&rsa->n, GCRYMPI_FMT_HEX, n, 0, NULL);
@@
-170,9
+166,9
@@
rsa_t *rsa_read_pem_public_key(FILE *fp) {
return NULL;
}
return NULL;
}
- rsa_t *rsa =
xzalloc(sizeof(rsa_t)
);
+ rsa_t *rsa =
rsa_new(
);
- if(!ber_
read_sequence(&derp, &derlen, NULL
)
+ if(!ber_
skip_sequence(&derp, &derlen
)
|| !ber_read_mpi(&derp, &derlen, &rsa->n)
|| !ber_read_mpi(&derp, &derlen, &rsa->e)
|| derlen) {
|| !ber_read_mpi(&derp, &derlen, &rsa->n)
|| !ber_read_mpi(&derp, &derlen, &rsa->e)
|| derlen) {
@@
-193,9
+189,9
@@
rsa_t *rsa_read_pem_private_key(FILE *fp) {
return NULL;
}
return NULL;
}
- rsa_t *rsa =
xzalloc(sizeof(rsa_t)
);
+ rsa_t *rsa =
rsa_new(
);
- if(!ber_
read_sequence(&derp, &derlen, NULL
)
+ if(!ber_
skip_sequence(&derp, &derlen
)
|| !ber_read_mpi(&derp, &derlen, NULL)
|| !ber_read_mpi(&derp, &derlen, &rsa->n)
|| !ber_read_mpi(&derp, &derlen, &rsa->e)
|| !ber_read_mpi(&derp, &derlen, NULL)
|| !ber_read_mpi(&derp, &derlen, &rsa->n)
|| !ber_read_mpi(&derp, &derlen, &rsa->e)