EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)vp, 12);
EVP_SignUpdate(&ctx, vp->ptr, sizeof(struct autokey));
- if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
+ if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
vp->siglen = htonl(len);
- else
- msyslog(LOG_ERR, "make_keys: %s",
- ERR_error_string(ERR_get_error(), NULL));
- peer->flags |= FLAG_ASSOC;
+ peer->flags |= FLAG_ASSOC;
+ }
}
#ifdef DEBUG
if (debug)
* remains valid until its expiration.
*
* Returns
- * XEVNT_CRT bad or missing certificate
* XEVNT_OK success
+ * XEVNT_CRT bad or missing certificate
* XEVNT_PER host certificate expired
* XEVNT_PUB bad or missing public key
* XEVNT_VFY certificate not verified
int rval; /* cookie snatcher */
keyid_t pkeyid = 0, tkeyid = 0; /* key IDs */
#endif /* OPENSSL */
-
+#ifdef WINTIME
static unsigned char zero_key[16];
+#endif /* WINTIME */
/*
* Monitor the packet and get restrictions. Note that the packet
}
peer->flash |= TEST8;
rval = crypto_recv(peer, rbufp);
- if (rval == XEVNT_OK)
+ if (rval == XEVNT_OK) {
peer->unreach = 0;
- if (rval != XEVNT_OK) {
- report_event(PEVNT_RESTART, peer,
- "crypto");
- peer_clear(peer, "CRYP");
- peer->flash |= TEST9; /* bad crypt */
- if (peer->flags & FLAG_PREEMPT)
- unpeer(peer);
+ } else {
+ if (rval == XEVNT_ERR) {
+ report_event(PEVNT_RESTART, peer,
+ "crypto");
+ peer_clear(peer, "CRYP");
+ peer->flash |= TEST9; /* bad crypt */
+ if (peer->flags & FLAG_PREEMPT)
+ unpeer(peer);
+ }
return;
+ }
/*
* If server mode, verify the receive key ID matches
* the transmit key ID.
*/
- } else if (hismode == MODE_SERVER) {
+ if (hismode == MODE_SERVER) {
if (skeyid == peer->keyid)
peer->flash &= ~TEST8;
else if (!(peer->crypto & CRYPTO_FLAG_AUTO))
exten = crypto_args(peer, CRYPTO_AUTO,
peer->assoc, NULL);
- else if (peer->flags & FLAG_ASSOC)
+ else if (peer->flags & FLAG_ASSOC &&
+ peer->crypto & CRYPTO_FLAG_SIGN)
exten = crypto_args(peer, CRYPTO_AUTO |
CRYPTO_RESP, peer->assoc, NULL);