sync with OpenBSD -current
This commit is contained in:
parent
332472a19d
commit
3af7aba2fd
15 changed files with 68 additions and 442 deletions
|
@ -336,6 +336,7 @@
|
|||
./usr/include/dev/ic/nec765reg.h
|
||||
./usr/include/dev/ic/ns16450reg.h
|
||||
./usr/include/dev/ic/ns16550reg.h
|
||||
./usr/include/dev/ic/nvmeio.h
|
||||
./usr/include/dev/ic/nvmereg.h
|
||||
./usr/include/dev/ic/nvmevar.h
|
||||
./usr/include/dev/ic/oosiopreg.h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile,v 1.194 2024/04/25 16:14:00 tb Exp $
|
||||
# $OpenBSD: Makefile,v 1.195 2024/05/24 19:16:53 tb Exp $
|
||||
|
||||
LIB= crypto
|
||||
LIBREBUILD=y
|
||||
|
@ -264,7 +264,6 @@ SRCS+= ecb3_enc.c
|
|||
SRCS+= ecb_enc.c
|
||||
SRCS+= ede_cbcm_enc.c
|
||||
SRCS+= enc_read.c
|
||||
SRCS+= enc_writ.c
|
||||
SRCS+= fcrypt.c
|
||||
SRCS+= fcrypt_b.c
|
||||
SRCS+= ofb64ede.c
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bs_ber.c,v 1.2 2021/12/15 18:02:39 jsing Exp $ */
|
||||
/* $OpenBSD: bs_ber.c,v 1.3 2024/05/25 15:12:47 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
|
@ -15,6 +15,7 @@
|
|||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "bytestring.h"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bs_cbb.c,v 1.4 2022/07/07 17:16:05 tb Exp $ */
|
||||
/* $OpenBSD: bs_cbb.c,v 1.5 2024/05/25 15:12:47 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
|
@ -15,6 +15,7 @@
|
|||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bs_cbs.c,v 1.2 2021/12/15 18:02:39 jsing Exp $ */
|
||||
/* $OpenBSD: bs_cbs.c,v 1.3 2024/05/25 15:12:47 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
|
@ -15,6 +15,7 @@
|
|||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: des_local.h,v 1.2 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: des_local.h,v 1.3 2024/05/24 19:21:58 tb Exp $ */
|
||||
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -73,11 +73,6 @@
|
|||
__BEGIN_HIDDEN_DECLS
|
||||
|
||||
#define ITERATIONS 16
|
||||
#define HALF_ITERATIONS 8
|
||||
|
||||
/* used in des_read and des_write */
|
||||
#define MAXWRITE (1024*16)
|
||||
#define BSIZE (MAXWRITE+4)
|
||||
|
||||
#define c2l(c,l) (l =((DES_LONG)(*((c)++))) , \
|
||||
l|=((DES_LONG)(*((c)++)))<< 8L, \
|
||||
|
@ -105,20 +100,6 @@ __BEGIN_HIDDEN_DECLS
|
|||
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>24L)&0xff))
|
||||
|
||||
/* replacements for htonl and ntohl since I have no idea what to do
|
||||
* when faced with machines with 8 byte longs. */
|
||||
#define HDRSIZE 4
|
||||
|
||||
#define n2l(c,l) (l =((DES_LONG)(*((c)++)))<<24L, \
|
||||
l|=((DES_LONG)(*((c)++)))<<16L, \
|
||||
l|=((DES_LONG)(*((c)++)))<< 8L, \
|
||||
l|=((DES_LONG)(*((c)++))))
|
||||
|
||||
#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
|
||||
*((c)++)=(unsigned char)(((l) )&0xff))
|
||||
|
||||
/* NOTE - c is not incremented as per l2c */
|
||||
#define l2cn(l1,l2,c,n) { \
|
||||
c+=n; \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: enc_read.c,v 1.18 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* $OpenBSD: enc_read.c,v 1.19 2024/05/24 19:16:53 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -56,168 +56,30 @@
|
|||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* This has some uglies in it but it works - even over sockets. */
|
||||
/*extern int errno;*/
|
||||
int DES_rw_mode = DES_PCBC_MODE;
|
||||
|
||||
/*
|
||||
* WARNINGS:
|
||||
*
|
||||
* - The data format used by DES_enc_write() and DES_enc_read()
|
||||
* has a cryptographic weakness: When asked to write more
|
||||
* than MAXWRITE bytes, DES_enc_write will split the data
|
||||
* into several chunks that are all encrypted
|
||||
* using the same IV. So don't use these functions unless you
|
||||
* are sure you know what you do (in which case you might
|
||||
* not want to use them anyway).
|
||||
*
|
||||
* - This code cannot handle non-blocking sockets.
|
||||
*
|
||||
* - This function uses an internal state and thus cannot be
|
||||
* used on multiple files.
|
||||
* XXX - remove this file in the next major bump
|
||||
*/
|
||||
|
||||
int DES_rw_mode = DES_PCBC_MODE;
|
||||
|
||||
int
|
||||
DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
||||
DES_cblock *iv)
|
||||
{
|
||||
/* data to be unencrypted */
|
||||
int net_num = 0;
|
||||
static unsigned char *net = NULL;
|
||||
/* extra unencrypted data
|
||||
* for when a block of 100 comes in but is des_read one byte at
|
||||
* a time. */
|
||||
static unsigned char *unnet = NULL;
|
||||
static int unnet_start = 0;
|
||||
static int unnet_left = 0;
|
||||
static unsigned char *tmpbuf = NULL;
|
||||
int i;
|
||||
long num = 0, rnum;
|
||||
unsigned char *p;
|
||||
|
||||
if (tmpbuf == NULL) {
|
||||
tmpbuf = malloc(BSIZE);
|
||||
if (tmpbuf == NULL)
|
||||
return (-1);
|
||||
}
|
||||
if (net == NULL) {
|
||||
net = malloc(BSIZE);
|
||||
if (net == NULL)
|
||||
return (-1);
|
||||
}
|
||||
if (unnet == NULL) {
|
||||
unnet = malloc(BSIZE);
|
||||
if (unnet == NULL)
|
||||
return (-1);
|
||||
}
|
||||
/* left over data from last decrypt */
|
||||
if (unnet_left != 0) {
|
||||
if (unnet_left < len) {
|
||||
/* we still still need more data but will return
|
||||
* with the number of bytes we have - should always
|
||||
* check the return value */
|
||||
memcpy(buf, &(unnet[unnet_start]),
|
||||
unnet_left);
|
||||
/* eay 26/08/92 I had the next 2 lines
|
||||
* reversed :-( */
|
||||
i = unnet_left;
|
||||
unnet_start = unnet_left = 0;
|
||||
} else {
|
||||
memcpy(buf, &(unnet[unnet_start]), len);
|
||||
unnet_start += len;
|
||||
unnet_left -= len;
|
||||
i = len;
|
||||
}
|
||||
return (i);
|
||||
}
|
||||
|
||||
/* We need to get more data. */
|
||||
if (len > MAXWRITE)
|
||||
len = MAXWRITE;
|
||||
|
||||
/* first - get the length */
|
||||
while (net_num < HDRSIZE) {
|
||||
i = read(fd, (void *)&(net[net_num]), HDRSIZE - net_num);
|
||||
#ifdef EINTR
|
||||
if ((i == -1) && (errno == EINTR))
|
||||
continue;
|
||||
#endif
|
||||
if (i <= 0)
|
||||
return (0);
|
||||
net_num += i;
|
||||
}
|
||||
|
||||
/* we now have at net_num bytes in net */
|
||||
p = net;
|
||||
/* num=0; */
|
||||
n2l(p, num);
|
||||
/* num should be rounded up to the next group of eight
|
||||
* we make sure that we have read a multiple of 8 bytes from the net.
|
||||
*/
|
||||
if ((num > MAXWRITE) || (num < 0)) /* error */
|
||||
return (-1);
|
||||
rnum = (num < 8) ? 8 : ((num + 7)/8*8);
|
||||
|
||||
net_num = 0;
|
||||
while (net_num < rnum) {
|
||||
i = read(fd, (void *)&(net[net_num]), rnum - net_num);
|
||||
#ifdef EINTR
|
||||
if ((i == -1) && (errno == EINTR))
|
||||
continue;
|
||||
#endif
|
||||
if (i <= 0)
|
||||
return (0);
|
||||
net_num += i;
|
||||
}
|
||||
|
||||
/* Check if there will be data left over. */
|
||||
if (len < num) {
|
||||
if (DES_rw_mode & DES_PCBC_MODE)
|
||||
DES_pcbc_encrypt(net, unnet, num, sched, iv,
|
||||
DES_DECRYPT);
|
||||
else
|
||||
DES_cbc_encrypt(net, unnet, num, sched, iv,
|
||||
DES_DECRYPT);
|
||||
memcpy(buf, unnet, len);
|
||||
unnet_start = len;
|
||||
unnet_left = num - len;
|
||||
|
||||
/* The following line is done because we return num
|
||||
* as the number of bytes read. */
|
||||
num = len;
|
||||
} else {
|
||||
/* >output is a multiple of 8 byes, if len < rnum
|
||||
* >we must be careful. The user must be aware that this
|
||||
* >routine will write more bytes than he asked for.
|
||||
* >The length of the buffer must be correct.
|
||||
* FIXED - Should be ok now 18-9-90 - eay */
|
||||
if (len < rnum) {
|
||||
if (DES_rw_mode & DES_PCBC_MODE)
|
||||
DES_pcbc_encrypt(net, tmpbuf, num, sched, iv,
|
||||
DES_DECRYPT);
|
||||
else
|
||||
DES_cbc_encrypt(net, tmpbuf, num, sched, iv,
|
||||
DES_DECRYPT);
|
||||
|
||||
/* eay 26/08/92 fix a bug that returned more
|
||||
* bytes than you asked for (returned len bytes :-( */
|
||||
memcpy(buf, tmpbuf, num);
|
||||
} else {
|
||||
if (DES_rw_mode & DES_PCBC_MODE)
|
||||
DES_pcbc_encrypt(net, buf, num, sched, iv,
|
||||
DES_DECRYPT);
|
||||
else
|
||||
DES_cbc_encrypt(net, buf, num, sched, iv,
|
||||
DES_DECRYPT);
|
||||
}
|
||||
}
|
||||
return num;
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_read);
|
||||
|
||||
int
|
||||
DES_enc_write(int fd, const void *_buf, int len,
|
||||
DES_key_schedule *sched, DES_cblock *iv)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_write);
|
||||
|
|
|
@ -1,168 +0,0 @@
|
|||
/* $OpenBSD: enc_writ.c,v 1.18 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/*
|
||||
* WARNINGS:
|
||||
*
|
||||
* - The data format used by DES_enc_write() and DES_enc_read()
|
||||
* has a cryptographic weakness: When asked to write more
|
||||
* than MAXWRITE bytes, DES_enc_write will split the data
|
||||
* into several chunks that are all encrypted
|
||||
* using the same IV. So don't use these functions unless you
|
||||
* are sure you know what you do (in which case you might
|
||||
* not want to use them anyway).
|
||||
*
|
||||
* - This code cannot handle non-blocking sockets.
|
||||
*/
|
||||
|
||||
int
|
||||
DES_enc_write(int fd, const void *_buf, int len,
|
||||
DES_key_schedule *sched, DES_cblock *iv)
|
||||
{
|
||||
#ifdef _LIBC
|
||||
extern unsigned long time();
|
||||
extern int write();
|
||||
#endif
|
||||
const unsigned char *buf = _buf;
|
||||
long rnum;
|
||||
int i, j, k, outnum;
|
||||
static unsigned char *outbuf = NULL;
|
||||
unsigned char shortbuf[8];
|
||||
unsigned char *p;
|
||||
const unsigned char *cp;
|
||||
static int start = 1;
|
||||
|
||||
if (outbuf == NULL) {
|
||||
outbuf = malloc(BSIZE + HDRSIZE);
|
||||
if (outbuf == NULL)
|
||||
return (-1);
|
||||
}
|
||||
/* If we are sending less than 8 bytes, the same char will look
|
||||
* the same if we don't pad it out with random bytes */
|
||||
if (start) {
|
||||
start = 0;
|
||||
}
|
||||
|
||||
/* lets recurse if we want to send the data in small chunks */
|
||||
if (len > MAXWRITE) {
|
||||
j = 0;
|
||||
for (i = 0; i < len; i += k) {
|
||||
k = DES_enc_write(fd, &(buf[i]),
|
||||
((len - i) > MAXWRITE) ? MAXWRITE : (len - i),
|
||||
sched, iv);
|
||||
if (k < 0)
|
||||
return (k);
|
||||
else
|
||||
j += k;
|
||||
}
|
||||
return (j);
|
||||
}
|
||||
|
||||
/* write length first */
|
||||
p = outbuf;
|
||||
l2n(len, p);
|
||||
|
||||
/* pad short strings */
|
||||
if (len < 8) {
|
||||
cp = shortbuf;
|
||||
memcpy(shortbuf, buf, len);
|
||||
arc4random_buf(shortbuf + len, 8 - len);
|
||||
rnum = 8;
|
||||
} else {
|
||||
cp = buf;
|
||||
rnum = ((len + 7)/8*8); /* round up to nearest eight */
|
||||
}
|
||||
|
||||
if (DES_rw_mode & DES_PCBC_MODE)
|
||||
DES_pcbc_encrypt(cp, &(outbuf[HDRSIZE]), (len < 8) ? 8 : len,
|
||||
sched, iv, DES_ENCRYPT);
|
||||
else
|
||||
DES_cbc_encrypt(cp, &(outbuf[HDRSIZE]), (len < 8) ? 8 : len,
|
||||
sched, iv, DES_ENCRYPT);
|
||||
|
||||
/* output */
|
||||
outnum = rnum + HDRSIZE;
|
||||
|
||||
for (j = 0; j < outnum; j += i) {
|
||||
/* eay 26/08/92 I was not doing writing from where we
|
||||
* got up to. */
|
||||
i = write(fd, (void *)&(outbuf[j]), outnum - j);
|
||||
if (i == -1) {
|
||||
#ifdef EINTR
|
||||
if (errno == EINTR)
|
||||
i = 0;
|
||||
else
|
||||
#endif
|
||||
/* This is really a bad error - very bad
|
||||
* It will stuff-up both ends. */
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
||||
return (len);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_write);
|
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: DES_set_key.3,v 1.16 2023/11/16 20:27:43 schwarze Exp $
|
||||
.\" $OpenBSD: DES_set_key.3,v 1.17 2024/05/24 19:18:07 tb Exp $
|
||||
.\" full merge up to:
|
||||
.\" OpenSSL man3/DES_random_key 521738e9 Oct 5 14:58:30 2018 -0400
|
||||
.\"
|
||||
|
@ -115,7 +115,7 @@
|
|||
.\" copied and put under another distribution licence
|
||||
.\" [including the GNU Public Licence.]
|
||||
.\"
|
||||
.Dd $Mdocdate: November 16 2023 $
|
||||
.Dd $Mdocdate: May 24 2024 $
|
||||
.Dt DES_SET_KEY 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -148,9 +148,7 @@
|
|||
.Nm DES_string_to_key ,
|
||||
.Nm DES_string_to_2keys ,
|
||||
.Nm DES_fcrypt ,
|
||||
.Nm DES_crypt ,
|
||||
.Nm DES_enc_read ,
|
||||
.Nm DES_enc_write
|
||||
.Nm DES_crypt
|
||||
.Nd DES encryption
|
||||
.Sh SYNOPSIS
|
||||
.In openssl/des.h
|
||||
|
@ -392,22 +390,6 @@
|
|||
.Fa "const char *buf"
|
||||
.Fa "const char *salt"
|
||||
.Fc
|
||||
.Ft int
|
||||
.Fo DES_enc_read
|
||||
.Fa "int fd"
|
||||
.Fa "void *buf"
|
||||
.Fa "int len"
|
||||
.Fa "DES_key_schedule *sched"
|
||||
.Fa "DES_cblock *iv"
|
||||
.Fc
|
||||
.Ft int
|
||||
.Fo DES_enc_write
|
||||
.Fa "int fd"
|
||||
.Fa "const void *buf"
|
||||
.Fa "int len"
|
||||
.Fa "DES_key_schedule *sched"
|
||||
.Fa "DES_cblock *iv"
|
||||
.Fc
|
||||
.Sh DESCRIPTION
|
||||
This library contains a fast implementation of the DES encryption
|
||||
algorithm.
|
||||
|
@ -686,71 +668,6 @@ This function calls
|
|||
with a static array passed as the third parameter.
|
||||
This emulates the normal non-thread safe semantics of
|
||||
.Xr crypt 3 .
|
||||
.Pp
|
||||
.Fn DES_enc_write
|
||||
writes
|
||||
.Fa len
|
||||
bytes to file descriptor
|
||||
.Fa fd
|
||||
from buffer
|
||||
.Fa buf .
|
||||
The data is encrypted via
|
||||
.Em pcbc_encrypt
|
||||
(default) using
|
||||
.Fa sched
|
||||
for the key and
|
||||
.Fa iv
|
||||
as a starting vector.
|
||||
The actual data send down
|
||||
.Fa fd
|
||||
consists of 4 bytes (in network byte order) containing the length of the
|
||||
following encrypted data.
|
||||
The encrypted data then follows, padded with random data out to a
|
||||
multiple of 8 bytes.
|
||||
.Pp
|
||||
.Fn DES_enc_read
|
||||
is used to read
|
||||
.Fa len
|
||||
bytes from file descriptor
|
||||
.Fa fd
|
||||
into buffer
|
||||
.Fa buf .
|
||||
The data being read from
|
||||
.Fa fd
|
||||
is assumed to have come from
|
||||
.Fn DES_enc_write
|
||||
and is decrypted using
|
||||
.Fa sched
|
||||
for the key schedule and
|
||||
.Fa iv
|
||||
for the initial vector.
|
||||
.Pp
|
||||
.Sy Warning :
|
||||
The data format used by
|
||||
.Fn DES_enc_write
|
||||
and
|
||||
.Fn DES_enc_read
|
||||
has a cryptographic weakness: when asked to write more than
|
||||
.Dv MAXWRITE
|
||||
bytes,
|
||||
.Fn DES_enc_write
|
||||
will split the data into several chunks that are all encrypted using the
|
||||
same IV.
|
||||
So don't use these functions unless you are sure you know what
|
||||
you do (in which case you might not want to use them anyway).
|
||||
They cannot handle non-blocking sockets.
|
||||
.Fn DES_enc_read
|
||||
uses an internal state and thus cannot be used on multiple files.
|
||||
.Pp
|
||||
.Em DES_rw_mode
|
||||
is used to specify the encryption mode to use with
|
||||
.Fn DES_enc_read .
|
||||
If set to
|
||||
.Dv DES_PCBC_MODE
|
||||
(the default), DES_pcbc_encrypt is used.
|
||||
If set to
|
||||
.Dv DES_CBC_MODE ,
|
||||
DES_cbc_encrypt is used.
|
||||
.Sh RETURN VALUES
|
||||
.Fn DES_set_key ,
|
||||
.Fn DES_key_sched ,
|
||||
|
@ -802,10 +719,8 @@ with the MIT Kerberos library.
|
|||
.Fn DES_quad_cksum ,
|
||||
.Fn DES_string_to_key ,
|
||||
.Fn DES_string_to_2keys ,
|
||||
.Fn DES_crypt ,
|
||||
.Fn DES_enc_read ,
|
||||
and
|
||||
.Fn DES_enc_write
|
||||
.Fn DES_crypt
|
||||
appeared in SSLeay 0.4 or earlier.
|
||||
.Fn DES_ncbc_encrypt
|
||||
first appeared in SSLeay 0.4.2.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bs_ber.c,v 1.11 2021/05/16 10:58:27 jsing Exp $ */
|
||||
/* $OpenBSD: bs_ber.c,v 1.12 2024/05/25 15:14:26 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
|
@ -15,6 +15,7 @@
|
|||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "bytestring.h"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bs_cbb.c,v 1.28 2022/07/07 17:12:15 tb Exp $ */
|
||||
/* $OpenBSD: bs_cbb.c,v 1.29 2024/05/25 15:14:26 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
|
@ -15,6 +15,7 @@
|
|||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bs_cbs.c,v 1.24 2021/12/15 17:36:49 jsing Exp $ */
|
||||
/* $OpenBSD: bs_cbs.c,v 1.25 2024/05/25 15:14:26 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
|
@ -15,6 +15,7 @@
|
|||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: asn1time.c,v 1.26 2024/04/08 19:57:40 beck Exp $ */
|
||||
/* $OpenBSD: asn1time.c,v 1.28 2024/05/25 12:47:25 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2015 Joel Sing <jsing@openbsd.org>
|
||||
* Copyright (c) 2024 Google Inc.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ufshci.c,v 1.31 2024/05/24 09:51:14 mglocker Exp $ */
|
||||
/* $OpenBSD: ufshci.c,v 1.32 2024/05/24 20:34:06 mglocker Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022 Marcus Glocker <mglocker@openbsd.org>
|
||||
|
@ -111,7 +111,7 @@ int
|
|||
ufshci_intr(void *arg)
|
||||
{
|
||||
struct ufshci_softc *sc = arg;
|
||||
uint32_t status;
|
||||
uint32_t status, hcs;
|
||||
int handled = 0;
|
||||
|
||||
status = UFSHCI_READ_4(sc, UFSHCI_REG_IS);
|
||||
|
@ -131,6 +131,17 @@ ufshci_intr(void *arg)
|
|||
|
||||
handled = 1;
|
||||
}
|
||||
/* If Auto-Hibernate raises an interrupt, it's to yield an error. */
|
||||
if (status & UFSHCI_REG_IS_UHES) {
|
||||
hcs = UFSHCI_READ_4(sc, UFSHCI_REG_HCS);
|
||||
printf("%s: Auto-Hibernate enter error UPMCRS=0x%x\n",
|
||||
__func__, UFSHCI_REG_HCS_UPMCRS(hcs));
|
||||
}
|
||||
if (status & UFSHCI_REG_IS_UHXS) {
|
||||
hcs = UFSHCI_READ_4(sc, UFSHCI_REG_HCS);
|
||||
printf("%s: Auto-Hibernate exit error UPMCRS=0x%x\n",
|
||||
__func__, UFSHCI_REG_HCS_UPMCRS(hcs));
|
||||
}
|
||||
|
||||
if (handled == 0) {
|
||||
printf("%s: UNKNOWN interrupt, status=0x%08x\n",
|
||||
|
@ -223,6 +234,12 @@ ufshci_attach(struct ufshci_softc *sc)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* Enable Auto-Hibernate Idle Timer (AHIT) and set it to 150ms. */
|
||||
if (sc->sc_cap & UFSHCI_REG_AUTOH8) {
|
||||
UFSHCI_WRITE_4(sc, UFSHCI_REG_AHIT,
|
||||
UFSHCI_REG_AHIT_TS(UFSHCI_REG_AHIT_TS_1MS) | 150);
|
||||
}
|
||||
|
||||
/* Attach to SCSI layer */
|
||||
saa.saa_adapter = &ufshci_switch;
|
||||
saa.saa_adapter_softc = sc;
|
||||
|
@ -365,8 +382,14 @@ ufshci_init(struct ufshci_softc *sc)
|
|||
*/
|
||||
|
||||
/* 7.1.1 Host Controller Initialization: 5) */
|
||||
UFSHCI_WRITE_4(sc, UFSHCI_REG_IE,
|
||||
UFSHCI_REG_IE_UTRCE | UFSHCI_REG_IE_UTMRCE);
|
||||
if (sc->sc_cap & UFSHCI_REG_AUTOH8) {
|
||||
UFSHCI_WRITE_4(sc, UFSHCI_REG_IE,
|
||||
UFSHCI_REG_IE_UTRCE | UFSHCI_REG_IE_UTMRCE |
|
||||
UFSHCI_REG_IS_UHES | UFSHCI_REG_IS_UHXS);
|
||||
} else {
|
||||
UFSHCI_WRITE_4(sc, UFSHCI_REG_IE,
|
||||
UFSHCI_REG_IE_UTRCE | UFSHCI_REG_IE_UTMRCE);
|
||||
}
|
||||
|
||||
/* 7.1.1 Host Controller Initialization: 6) */
|
||||
UFSHCI_WRITE_4(sc, UFSHCI_REG_UICCMD,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ufshcireg.h,v 1.12 2024/05/24 09:51:14 mglocker Exp $ */
|
||||
/* $OpenBSD: ufshcireg.h,v 1.13 2024/05/24 20:34:06 mglocker Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022 Marcus Glocker <mglocker@openbsd.org>
|
||||
|
@ -56,6 +56,13 @@
|
|||
#define UFSHCI_REG_HCMID_MIC(x) ((x >> 0) & 0x000000ff) /* RO */
|
||||
/* Auto-Hibernate Idle Timer */
|
||||
#define UFSHCI_REG_AHIT 0x18
|
||||
#define UFSHCI_REG_AHIT_TS(x) (x << 10)
|
||||
#define UFSHCI_REG_AHIT_TS_1US 0x00
|
||||
#define UFSHCI_REG_AHIT_TS_10US 0x01
|
||||
#define UFSHCI_REG_AHIT_TS_100US 0x02
|
||||
#define UFSHCI_REG_AHIT_TS_1MS 0x03
|
||||
#define UFSHCI_REG_AHIT_TS_10MS 0x04
|
||||
#define UFSHCI_REG_AHIT_TS_100MS 0x05
|
||||
|
||||
/*
|
||||
* Operation and Runtime Registers
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue