summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2000-01-06 02:19:17 +0100
committerBodo Möller <bodo@openssl.org>2000-01-06 02:19:17 +0100
commitca03109c3aa2a907885f299d7af749754c4d172d (patch)
tree8aadf85d3d6e4bf9ca4e572a3e9e93af1476557e /ssl
parentUse less complicated arrangement for data strutures related to Finished (diff)
downloadopenssl-ca03109c3aa2a907885f299d7af749754c4d172d.tar.xz
openssl-ca03109c3aa2a907885f299d7af749754c4d172d.zip
New functions SSL_get_finished, SSL_get_peer_finished.
Add short state string for MS SGC.
Diffstat (limited to 'ssl')
-rw-r--r--ssl/ssl.h7
-rw-r--r--ssl/ssl_lib.c32
-rw-r--r--ssl/ssl_stat.c1
3 files changed, 40 insertions, 0 deletions
diff --git a/ssl/ssl.h b/ssl/ssl.h
index 96c5a93aec..636b8bc2a2 100644
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -704,6 +704,13 @@ struct ssl_st
#define SSL_ST_READ_BODY 0xF1
#define SSL_ST_READ_DONE 0xF2
+/* Obtain latest Finished message
+ * -- that we sent (SSL_get_finished)
+ * -- that we expected from peer (SSL_get_peer_finished).
+ * Returns length (0 == no Finished so far), copies up to 'count' bytes. */
+size_t SSL_get_finished(SSL *s, void *buf, size_t count);
+size_t SSL_get_peer_finished(SSL *s, void *buf, size_t count);
+
/* use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options
* are 'ored' with SSL_VERIFY_PEER if they are desired */
#define SSL_VERIFY_NONE 0x00
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index 88ff03b3ac..02f8d11256 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -477,6 +477,38 @@ err:
}
#endif
+
+/* return length of latest Finished message we sent, copy to 'buf' */
+size_t SSL_get_finished(SSL *s, void *buf, size_t count)
+ {
+ size_t ret = 0;
+
+ if (s->s3 != NULL)
+ {
+ ret = s->s3->tmp.finish_md_len;
+ if (count > ret)
+ count = ret;
+ memcpy(buf, s->s3->tmp.finish_md, count);
+ }
+ return ret;
+ }
+
+/* return length of latest Finished message we expected, copy to 'buf' */
+size_t SSL_get_peer_finished(SSL *s, void *buf, size_t count)
+ {
+ size_t ret = 0;
+
+ if (s->s3 != NULL)
+ {
+ ret = s->s3->tmp.peer_finish_md_len;
+ if (count > ret)
+ count = ret;
+ memcpy(buf, s->s3->tmp.peer_finish_md, count);
+ }
+ return ret;
+ }
+
+
int SSL_get_verify_mode(SSL *s)
{
return(s->verify_mode);
diff --git a/ssl/ssl_stat.c b/ssl/ssl_stat.c
index 4042c4e75c..1335764fb3 100644
--- a/ssl/ssl_stat.c
+++ b/ssl/ssl_stat.c
@@ -313,6 +313,7 @@ case SSL3_ST_SW_HELLO_REQ_C: str="3WHR_C"; break;
case SSL3_ST_SR_CLNT_HELLO_A: str="3RCH_A"; break;
case SSL3_ST_SR_CLNT_HELLO_B: str="3RCH_B"; break;
case SSL3_ST_SR_CLNT_HELLO_C: str="3RCH_C"; break;
+case SSL3_ST_SR_MS_SGC: str="3RMSSG"; break;
case SSL3_ST_SW_SRVR_HELLO_A: str="3WSH_A"; break;
case SSL3_ST_SW_SRVR_HELLO_B: str="3WSH_B"; break;
case SSL3_ST_SW_CERT_A: str="3WSC_A"; break;