noinst_HEADERS = cipher.h conf.h connection.h control.h crypto.h device.h digest.h edge.h graph.h logger.h meta.h net.h netutl.h node.h process.h \
protocol.h route.h rsa.h subnet.h
-LIBS = @LIBS@ @LIBINTL@
+LIBS = @LIBS@ @LIBGCRYPT_LIBS@ @LIBINTL@
tincd_LDADD = \
$(top_builddir)/lib/libvpn.a
return true;
}
-bool cipher_set_key(cipher_t *cipher, void *key, size_t len, bool encrypt) {
+bool cipher_set_key_from_rsa(cipher_t *cipher, void *key, size_t len, bool encrypt) {
memcpy(cipher->key, key + len - cipher->keylen, cipher->keylen + cipher->blklen);
memcpy(cipher->key + cipher->keylen, key + len - cipher->keylen - cipher->blklen, cipher->blklen);
extern bool cipher_open_blowfish_ofb(struct cipher *);
extern void cipher_close(struct cipher *);
extern size_t cipher_keylength(const struct cipher *);
-extern void cipher_get_key(const struct cipher *, void *, bool);
+extern void cipher_get_key(const struct cipher *, void *);
extern bool cipher_set_key(struct cipher *, void *, bool);
extern bool cipher_set_key_from_rsa(struct cipher *, void *, size_t, bool);
-extern bool cipher_regenerate_key(struct cipher *);
+extern bool cipher_regenerate_key(struct cipher *, bool);
extern bool cipher_encrypt(struct cipher *, const void *indata, size_t inlen, void *outdata, size_t *outlen, bool oneshot);
extern bool cipher_decrypt(struct cipher *, const void *indata, size_t inlen, void *outdata, size_t *outlen, bool oneshot);
extern int cipher_get_nid(const struct cipher *);
uint16_t len;
} digest_t;
-static bool digest_open_by_name(struct digest *, const char *);
-static bool digest_open_by_nid(struct digest *, int);
-static bool digest_open_sha1(struct digest *);
-static void digest_close(struct digest *);
-static bool digest_create(struct digest *, const void *indata, size_t inlen, void *outdata);
-static bool digest_verify(struct digest *, const void *indata, size_t inlen, const void *digestdata);
-static int digest_get_nid(const struct digest *);
-static size_t digest_length(const struct digest *);
-static bool digest_active(const struct digest *);
+extern bool digest_open_by_name(struct digest *, const char *);
+extern bool digest_open_by_nid(struct digest *, int);
+extern bool digest_open_sha1(struct digest *);
+extern void digest_close(struct digest *);
+extern bool digest_create(struct digest *, const void *indata, size_t inlen, void *outdata);
+extern bool digest_verify(struct digest *, const void *indata, size_t inlen, const void *digestdata);
+extern int digest_get_nid(const struct digest *);
+extern size_t digest_length(const struct digest *);
+extern bool digest_active(const struct digest *);
#endif
continue;
for(i = 0; line[i] >= ' '; i++) {
- if(line[i] >= 128 || line[i] < 0 || b64d[(int)line[i]] == 0xff)
+ if((signed char)line[i] < 0 || b64d[(int)line[i]] == 0xff)
break;
word |= b64d[(int)line[i]] << shift;
shift -= 6;
bool rsa_set_hex_public_key(rsa_t *rsa, char *n, char *e) {
gcry_error_t err = 0;
- err = gcry_mpi_scan(&rsa->n, GCRY_FMT_HEX, n, 0, NULL)
- ?: gcry_mpi_scan(&rsa->e, GCRY_FMT_HEX, n, 0, NULL);
+ err = gcry_mpi_scan(&rsa->n, GCRYMPI_FMT_HEX, n, 0, NULL)
+ ?: gcry_mpi_scan(&rsa->e, GCRYMPI_FMT_HEX, n, 0, NULL);
if(err) {
logger(LOG_ERR, _("Error while reading RSA public key: %s"), gcry_strerror(errno));
return false;
}
+
+ return true;
}
bool rsa_set_hex_private_key(rsa_t *rsa, char *n, char *e, char *d) {
gcry_error_t err = 0;
- err = gcry_mpi_scan(&rsa->n, GCRY_FMT_HEX, n, 0, NULL)
- ?: gcry_mpi_scan(&rsa->e, GCRY_FMT_HEX, n, 0, NULL)
- ?: gcry_mpi_scan(&rsa->d, GCRY_FMT_HEX, n, 0, NULL);
+ err = gcry_mpi_scan(&rsa->n, GCRYMPI_FMT_HEX, n, 0, NULL)
+ ?: gcry_mpi_scan(&rsa->e, GCRYMPI_FMT_HEX, n, 0, NULL)
+ ?: gcry_mpi_scan(&rsa->d, GCRYMPI_FMT_HEX, n, 0, NULL);
if(err) {
logger(LOG_ERR, _("Error while reading RSA public key: %s"), gcry_strerror(errno));
return false;
}
+
+ return true;
}
// Read PEM RSA keys
-bool read_pem_rsa_public_key(rsa_t *rsa, FILE *fp) {
+bool rsa_read_pem_public_key(rsa_t *rsa, FILE *fp) {
uint8_t derbuf[8096], *derp = derbuf;
size_t derlen;
return true;
}
-bool read_pem_rsa_private_key(rsa_t *rsa, FILE *fp) {
+bool rsa_read_pem_private_key(rsa_t *rsa, FILE *fp) {
uint8_t derbuf[8096], *derp = derbuf;
size_t derlen;
return true;
}
-bool rsa_public_decrypt(rsa_t *rsa, void *in, size_t len, void *out) {
+bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t len, void *out) {
gcry_mpi_t inmpi;
check(gcry_mpi_scan(&inmpi, GCRYMPI_FMT_USG, in, len, NULL));