summaryrefslogtreecommitdiff
path: root/lib/gnutls_buffers.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gnutls_buffers.c')
-rw-r--r--lib/gnutls_buffers.c51
1 files changed, 49 insertions, 2 deletions
diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c
index 840de05439..689d2ed03f 100644
--- a/lib/gnutls_buffers.c
+++ b/lib/gnutls_buffers.c
@@ -108,7 +108,7 @@ int gnutls_getDataFromBuffer(ContentType type, GNUTLS_STATE state, char *data, i
return length;
}
-ssize_t Read(int fd, void *iptr, size_t sizeOfPtr)
+ssize_t _gnutls_Read(int fd, void *iptr, size_t sizeOfPtr)
{
size_t left;
ssize_t i=0;
@@ -151,7 +151,7 @@ ssize_t Read(int fd, void *iptr, size_t sizeOfPtr)
}
-ssize_t Write(int fd, const void *iptr, size_t n)
+ssize_t _gnutls_Write(int fd, const void *iptr, size_t n)
{
size_t left;
#ifdef WRITE_DEBUG
@@ -307,3 +307,50 @@ int gnutls_getHashDataFromBuffer(int type, GNUTLS_STATE state, char *data, int l
return length;
}
}
+
+int gnutls_readHashDataFromBuffer(int type, GNUTLS_STATE state, char *data, int length)
+{
+ if (type==GNUTLS_SERVER) {
+ if (length > state->gnutls_internals.server_hash_bufferSize) {
+ length = state->gnutls_internals.server_hash_bufferSize;
+ }
+#ifdef HARD_DEBUG
+ fprintf(stderr, "Read %d bytes of SSL3 Server Hash Data(%d) from buffer\n", length, type);
+#endif
+ memmove(data, state->gnutls_internals.server_hash_buffer, length);
+ return length;
+
+ } else { /* CLIENT */
+ if (length > state->gnutls_internals.client_hash_bufferSize) {
+ length = state->gnutls_internals.client_hash_bufferSize;
+ }
+#ifdef HARD_DEBUG
+ fprintf(stderr, "Read %d bytes of SSL3 Client Hash Data(%d) from buffer\n", length, type);
+#endif
+ memmove(data, state->gnutls_internals.client_hash_buffer, length);
+ return length;
+ }
+}
+
+
+
+int gnutls_clearHashDataBuffer(int type, GNUTLS_STATE state)
+{
+ if (type==GNUTLS_SERVER) {
+#ifdef HARD_DEBUG
+ fprintf(stderr, "Cleared SSL3 Server Hash Data(%d) from buffer\n",type);
+#endif
+ state->gnutls_internals.server_hash_bufferSize = 0;
+ gnutls_free(state->gnutls_internals.server_hash_buffer);
+ state->gnutls_internals.server_hash_buffer = NULL;
+ } else { /* CLIENT */
+#ifdef HARD_DEBUG
+ fprintf(stderr, "Cleared SSL3 Client Hash Data(%d) from buffer\n", type);
+#endif
+ state->gnutls_internals.client_hash_bufferSize = 0;
+ gnutls_free(state->gnutls_internals.client_hash_buffer);
+ state->gnutls_internals.client_hash_buffer = NULL;
+ }
+
+ return 0;
+}