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/nec765reg.h
|
||||||
./usr/include/dev/ic/ns16450reg.h
|
./usr/include/dev/ic/ns16450reg.h
|
||||||
./usr/include/dev/ic/ns16550reg.h
|
./usr/include/dev/ic/ns16550reg.h
|
||||||
|
./usr/include/dev/ic/nvmeio.h
|
||||||
./usr/include/dev/ic/nvmereg.h
|
./usr/include/dev/ic/nvmereg.h
|
||||||
./usr/include/dev/ic/nvmevar.h
|
./usr/include/dev/ic/nvmevar.h
|
||||||
./usr/include/dev/ic/oosiopreg.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
|
LIB= crypto
|
||||||
LIBREBUILD=y
|
LIBREBUILD=y
|
||||||
|
@ -264,7 +264,6 @@ SRCS+= ecb3_enc.c
|
||||||
SRCS+= ecb_enc.c
|
SRCS+= ecb_enc.c
|
||||||
SRCS+= ede_cbcm_enc.c
|
SRCS+= ede_cbcm_enc.c
|
||||||
SRCS+= enc_read.c
|
SRCS+= enc_read.c
|
||||||
SRCS+= enc_writ.c
|
|
||||||
SRCS+= fcrypt.c
|
SRCS+= fcrypt.c
|
||||||
SRCS+= fcrypt_b.c
|
SRCS+= fcrypt_b.c
|
||||||
SRCS+= ofb64ede.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.
|
* Copyright (c) 2014, Google Inc.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "bytestring.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.
|
* Copyright (c) 2014, Google Inc.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.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.
|
* Copyright (c) 2014, Google Inc.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.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)
|
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -73,11 +73,6 @@
|
||||||
__BEGIN_HIDDEN_DECLS
|
__BEGIN_HIDDEN_DECLS
|
||||||
|
|
||||||
#define ITERATIONS 16
|
#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)++))) , \
|
#define c2l(c,l) (l =((DES_LONG)(*((c)++))) , \
|
||||||
l|=((DES_LONG)(*((c)++)))<< 8L, \
|
l|=((DES_LONG)(*((c)++)))<< 8L, \
|
||||||
|
@ -105,20 +100,6 @@ __BEGIN_HIDDEN_DECLS
|
||||||
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
|
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
|
||||||
*((c)++)=(unsigned char)(((l)>>24L)&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 */
|
/* NOTE - c is not incremented as per l2c */
|
||||||
#define l2cn(l1,l2,c,n) { \
|
#define l2cn(l1,l2,c,n) { \
|
||||||
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)
|
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -56,168 +56,30 @@
|
||||||
* [including the GNU Public Licence.]
|
* [including the GNU Public Licence.]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <openssl/opensslconf.h>
|
#include <openssl/opensslconf.h>
|
||||||
|
|
||||||
#include "des_local.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:
|
* XXX - remove this file in the next major bump
|
||||||
*
|
|
||||||
* - 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int DES_rw_mode = DES_PCBC_MODE;
|
||||||
|
|
||||||
int
|
int
|
||||||
DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
||||||
DES_cblock *iv)
|
DES_cblock *iv)
|
||||||
{
|
{
|
||||||
/* data to be unencrypted */
|
return -1;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
LCRYPTO_ALIAS(DES_enc_read);
|
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:
|
.\" full merge up to:
|
||||||
.\" OpenSSL man3/DES_random_key 521738e9 Oct 5 14:58:30 2018 -0400
|
.\" OpenSSL man3/DES_random_key 521738e9 Oct 5 14:58:30 2018 -0400
|
||||||
.\"
|
.\"
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
.\" copied and put under another distribution licence
|
.\" copied and put under another distribution licence
|
||||||
.\" [including the GNU Public Licence.]
|
.\" [including the GNU Public Licence.]
|
||||||
.\"
|
.\"
|
||||||
.Dd $Mdocdate: November 16 2023 $
|
.Dd $Mdocdate: May 24 2024 $
|
||||||
.Dt DES_SET_KEY 3
|
.Dt DES_SET_KEY 3
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -148,9 +148,7 @@
|
||||||
.Nm DES_string_to_key ,
|
.Nm DES_string_to_key ,
|
||||||
.Nm DES_string_to_2keys ,
|
.Nm DES_string_to_2keys ,
|
||||||
.Nm DES_fcrypt ,
|
.Nm DES_fcrypt ,
|
||||||
.Nm DES_crypt ,
|
.Nm DES_crypt
|
||||||
.Nm DES_enc_read ,
|
|
||||||
.Nm DES_enc_write
|
|
||||||
.Nd DES encryption
|
.Nd DES encryption
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.In openssl/des.h
|
.In openssl/des.h
|
||||||
|
@ -392,22 +390,6 @@
|
||||||
.Fa "const char *buf"
|
.Fa "const char *buf"
|
||||||
.Fa "const char *salt"
|
.Fa "const char *salt"
|
||||||
.Fc
|
.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
|
.Sh DESCRIPTION
|
||||||
This library contains a fast implementation of the DES encryption
|
This library contains a fast implementation of the DES encryption
|
||||||
algorithm.
|
algorithm.
|
||||||
|
@ -686,71 +668,6 @@ This function calls
|
||||||
with a static array passed as the third parameter.
|
with a static array passed as the third parameter.
|
||||||
This emulates the normal non-thread safe semantics of
|
This emulates the normal non-thread safe semantics of
|
||||||
.Xr crypt 3 .
|
.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
|
.Sh RETURN VALUES
|
||||||
.Fn DES_set_key ,
|
.Fn DES_set_key ,
|
||||||
.Fn DES_key_sched ,
|
.Fn DES_key_sched ,
|
||||||
|
@ -802,10 +719,8 @@ with the MIT Kerberos library.
|
||||||
.Fn DES_quad_cksum ,
|
.Fn DES_quad_cksum ,
|
||||||
.Fn DES_string_to_key ,
|
.Fn DES_string_to_key ,
|
||||||
.Fn DES_string_to_2keys ,
|
.Fn DES_string_to_2keys ,
|
||||||
.Fn DES_crypt ,
|
|
||||||
.Fn DES_enc_read ,
|
|
||||||
and
|
and
|
||||||
.Fn DES_enc_write
|
.Fn DES_crypt
|
||||||
appeared in SSLeay 0.4 or earlier.
|
appeared in SSLeay 0.4 or earlier.
|
||||||
.Fn DES_ncbc_encrypt
|
.Fn DES_ncbc_encrypt
|
||||||
first appeared in SSLeay 0.4.2.
|
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.
|
* Copyright (c) 2014, Google Inc.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "bytestring.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.
|
* Copyright (c) 2014, Google Inc.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.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.
|
* Copyright (c) 2014, Google Inc.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.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) 2015 Joel Sing <jsing@openbsd.org>
|
||||||
* Copyright (c) 2024 Google Inc.
|
* 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>
|
* Copyright (c) 2022 Marcus Glocker <mglocker@openbsd.org>
|
||||||
|
@ -111,7 +111,7 @@ int
|
||||||
ufshci_intr(void *arg)
|
ufshci_intr(void *arg)
|
||||||
{
|
{
|
||||||
struct ufshci_softc *sc = arg;
|
struct ufshci_softc *sc = arg;
|
||||||
uint32_t status;
|
uint32_t status, hcs;
|
||||||
int handled = 0;
|
int handled = 0;
|
||||||
|
|
||||||
status = UFSHCI_READ_4(sc, UFSHCI_REG_IS);
|
status = UFSHCI_READ_4(sc, UFSHCI_REG_IS);
|
||||||
|
@ -131,6 +131,17 @@ ufshci_intr(void *arg)
|
||||||
|
|
||||||
handled = 1;
|
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) {
|
if (handled == 0) {
|
||||||
printf("%s: UNKNOWN interrupt, status=0x%08x\n",
|
printf("%s: UNKNOWN interrupt, status=0x%08x\n",
|
||||||
|
@ -223,6 +234,12 @@ ufshci_attach(struct ufshci_softc *sc)
|
||||||
return 1;
|
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 */
|
/* Attach to SCSI layer */
|
||||||
saa.saa_adapter = &ufshci_switch;
|
saa.saa_adapter = &ufshci_switch;
|
||||||
saa.saa_adapter_softc = sc;
|
saa.saa_adapter_softc = sc;
|
||||||
|
@ -365,8 +382,14 @@ ufshci_init(struct ufshci_softc *sc)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* 7.1.1 Host Controller Initialization: 5) */
|
/* 7.1.1 Host Controller Initialization: 5) */
|
||||||
|
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_WRITE_4(sc, UFSHCI_REG_IE,
|
||||||
UFSHCI_REG_IE_UTRCE | UFSHCI_REG_IE_UTMRCE);
|
UFSHCI_REG_IE_UTRCE | UFSHCI_REG_IE_UTMRCE);
|
||||||
|
}
|
||||||
|
|
||||||
/* 7.1.1 Host Controller Initialization: 6) */
|
/* 7.1.1 Host Controller Initialization: 6) */
|
||||||
UFSHCI_WRITE_4(sc, UFSHCI_REG_UICCMD,
|
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>
|
* Copyright (c) 2022 Marcus Glocker <mglocker@openbsd.org>
|
||||||
|
@ -56,6 +56,13 @@
|
||||||
#define UFSHCI_REG_HCMID_MIC(x) ((x >> 0) & 0x000000ff) /* RO */
|
#define UFSHCI_REG_HCMID_MIC(x) ((x >> 0) & 0x000000ff) /* RO */
|
||||||
/* Auto-Hibernate Idle Timer */
|
/* Auto-Hibernate Idle Timer */
|
||||||
#define UFSHCI_REG_AHIT 0x18
|
#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
|
* Operation and Runtime Registers
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue