send_clear, recv_clear

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3359 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-09-03 18:12:18 +00:00
parent b87cd3002c
commit 16c19410b9

View File

@@ -91,3 +91,42 @@ recv_priv(krb5_context context, krb5_auth_context ac, int fd, krb5_data *out)
free(buf);
return 0;
}
krb5_error_code
send_clear(krb5_context context, int fd, krb5_data data)
{
unsigned char tmp[4];
int len;
tmp[0] = (data.length >> 24) & 0xff;
tmp[1] = (data.length >> 16) & 0xff;
tmp[2] = (data.length >> 8) & 0xff;
tmp[3] = (data.length >> 0) & 0xff;
len = write(fd, tmp, sizeof(tmp));
if(len == sizeof(tmp))
len = write(fd, data.data, data.length);
if(len != data.length)
return errno;
return 0;
}
krb5_error_code
recv_clear(krb5_context context, int fd, krb5_data *out)
{
unsigned char tmp[4];
int len;
len = read(fd, tmp, sizeof(tmp));
if(len == 0){
memset(out, 0, sizeof(*out));
return 0;
}
if(len == sizeof(tmp)){
len = (tmp[0] << 24) | (tmp[1] << 16) | (tmp[2] << 8) | tmp[3];
krb5_data_alloc(out, len);
len = read(fd, out->data, out->length);
}
if(len != out->length)
return errno;
return 0;
}