Commit graph

206 commits

Author SHA1 Message Date
cinap_lenrek
3356e0e731 libsec: AES-NI support for amd64
Add assembler versions for aes_encrypt/aes_decrypt and the key
setup using AES-NI instruction set. This makes aes_encrypt and
aes_decrypt into function pointers which get initialized by
the first call to setupAESstate().

Note that the expanded round key words are *NOT* stored in big
endian order as with the portable implementation. For that reason
the AESstate.ekey and AESstate.dkey fields have been changed to
void* forcing an error when someone is accessing the roundkey
words. One offender was aesXCBmac, which doesnt appear to be
used and the code looks horrible so it has been deleted.

The AES-NI implementation is for amd64 only as it requires the
kernel to save/restore the FPU state across syscalls and
pagefaults.
2017-11-12 23:15:15 +01:00
cinap_lenrek
5c1afc882c aes(2): document aes_xts_encrypt() and aes_xts_decrypt() functions 2017-10-30 03:04:05 +01:00
cinap_lenrek
e3d8fe9d4a libc: cleanup atexit and put exits() in its own compilation unit
this avoids having to pull in atexit() and its dependencies
(lock(), unlock()) into every program. (as exits() is called
by _main() from main9.s).
2017-10-20 20:58:38 +02:00
cinap_lenrek
45b7d60bf3 libsec: add AES CFB and AES OFB stream ciphers 2017-10-17 21:34:01 +02:00
Ethan Grammatikidis
64195aea41 print(2): clean up vlong flag description 2017-07-02 19:12:50 +01:00
aiju
20b945a382 bio(2): manpage typo 2017-05-04 17:47:03 +00:00
aiju
f681cf835a bio: add support for custom I/O handler via Biofn 2017-05-04 17:42:12 +00:00
cinap_lenrek
38d421ec00 ctime(2): fix example (thanks raiz)
raiz → the reason that the manpage example works not because
it's a correct timezone file format, but because readtimezone()
(in libc) fails and defaults to GMT.
2017-05-03 20:47:46 +02:00
spew
ff8ae67b70 libregexp: miscellaneous little cleanups 2017-04-30 15:08:36 -05:00
cinap_lenrek
f8478eb4c4 lib9p: allow rewinding in 9pfile directories 2017-04-30 01:49:21 +02:00
spew
1f6a604c23 libavl: fix documentation 2017-04-24 10:50:03 -05:00
cinap_lenrek
346f5828e0 libsec: sha256 support for thumbprint files, use it in ssh as well
initThumbprints() now takes an application tag argument
so x509 and ssh can coexist.

the thumbprint entries can now hold both sha1 and sha256
hashes. okThumbprint() now takes a len argument for the
hash length used.

the new function okCertificate() hashes the certificate
with both and checks for any matches.

on failure, okCertificate() returns 0 and sets error string.

we also check for include loops now in thumbfiles, limiting
the number of includes to 8.
2017-04-23 19:00:08 +02:00
spew
6261dcb06b replica: use libavl for avl tree implementation 2017-04-22 14:28:02 -05:00
spew
9cf5198145 libavl: lookup can return the closest match 2017-04-22 13:59:37 -05:00
aiju
1d891d163e fix typo in 9p(2) manpage 2017-04-03 00:11:40 +00:00
spew
04c7d5d8f6 plumb(2): Fix typo in description of Plumbdelattr (thanks sam-d) 2017-03-22 18:13:51 -05:00
cinap_lenrek
7d4a1e3643 ec(2), rsa(2): document X509toECpub(), X509ecdsaverify(), X509ecdsaverifydigest(), X509rsaverifydigest() 2017-02-10 22:39:47 +01:00
cinap_lenrek
34a9d22ec6 rsa(2): document rsafill() 2017-02-10 21:12:45 +01:00
cinap_lenrek
8a1c587c9c ec(2): document ecencodepub(), ecdecodepub() and ecpubfree() and list all the curve parameter functions 2017-02-10 20:42:56 +01:00
cinap_lenrek
26c39ddc8d 9p(2): remove reference to ssh(1) 2017-01-13 19:18:08 +01:00
cinap_lenrek
2e23780d2f libsec: implement extended 192-bit nonce xchacha variant and hchacha function 2017-01-12 20:16:38 +01:00
cinap_lenrek
ed9fdc72f5 libsec: replace des based X9.17 genrandom() with chacha random number generator 2016-12-28 02:02:00 +01:00
spew
ff384cbddc libavl: fix manpage example, minor improvement to code 2016-12-24 17:58:31 -06:00
spew
6187b862b7 avl: fix man page example 2016-12-22 18:44:45 -06:00
spew
0885ed1e80 alv(2): new avl implementation 2016-12-22 16:47:41 -06:00
cinap_lenrek
efe5c58c01 authsrv(2): update Nvrsafe structure to include aesmachkey 2016-09-08 10:40:19 +02:00
aiju
cf2f2a8841 mp: fix mpnot and add mpasr 2016-08-28 10:49:41 +02:00
cinap_lenrek
b59aa67922 rand(2), cons(3): clarify /dev/random behaviour 2016-08-27 21:27:52 +02:00
cinap_lenrek
8a73650874 libc: add poolisoverlap() and definitions for Pool *secrmem 2016-08-27 20:23:55 +02:00
aiju
a07a2025da document mplogic functions 2016-08-08 22:19:29 +02:00
cinap_lenrek
333468d668 thread(2): threadgrp() -> threadgetgrp(), thanks jpm 2016-08-06 15:09:18 +02:00
spew
eef8f57b22 add history for libregexp 2016-07-04 14:25:08 -05:00
cinap_lenrek
bd8b6c2f99 aml(2): document amlintmask 2016-06-05 15:15:03 +02:00
cinap_lenrek
ca5b491753 rune(2): add Runeerror reencoding considerations in BUGS section (thanks aiju) 2016-04-28 01:53:09 +02:00
aiju
e558c88821 aes(2): mention aesCBC bug 2016-04-09 20:51:24 +02:00
cinap_lenrek
9408c5faa1 qball(2): fix bad manpage reference 2016-04-07 21:51:56 +02:00
cinap_lenrek
aa6673fcfb add portable AES-GCM (Galois/Counter Mode) implementation to libsec and devtls 2016-03-23 02:45:35 +01:00
BurnZeZ
63abfb5056 manpage references/typos 2016-03-01 15:24:07 -05:00
cinap_lenrek
e3434eb5fb authsrv(2): document _asgetpakkey(), authpak_hash(), authpak_new(), authpak_finish() 2016-02-28 23:23:05 +01:00
cinap_lenrek
2ca8e31066 removing libgio, this is not golang mveery >:-( 2016-02-10 05:11:11 +01:00
Matthew Veety
a54782d69b Imported ngfs libgio. This is a library to create virtual file descriptors, similar to common lisp grey-streams or golang's io.Reader/io.Writer. Now 95% bug-free. 2016-02-09 16:24:41 -05:00
cinap_lenrek
a291bbdedd libsec: ecdsa client support for tlshand, cleanups 2016-02-01 21:34:49 +01:00
cinap_lenrek
7cfe4aef3c salsa(2): fix source reference 2016-01-19 13:06:22 +01:00
cinap_lenrek
876e19c652 salsa(2): some formating fixes 2016-01-19 13:02:12 +01:00
cinap_lenrek
7cf11db685 libsec: add salsa20 stream cipher 2016-01-19 12:50:33 +01:00
cinap_lenrek
36d2092a33 fix manpage references 2016-01-12 08:43:36 +01:00
cinap_lenrek
d30b160fe3 libmp: support for c-style base prefixes for strtomp(), octal support 2016-01-03 22:43:44 +01:00
cinap_lenrek
39f18c9d88 libsec: implement TLS-PSK for tlsClient()/tlsServer() 2015-12-25 17:05:05 +01:00
cinap_lenrek
a53ae2782a libjson: added printing support (thanks spew) 2015-12-22 18:12:56 +01:00
cinap_lenrek
7be7d0681f kernel: use uintptr for ibrk() return value (for base >2GB) and clarify segbrk(2) 2015-12-16 21:06:51 +01:00
cinap_lenrek
254031cf70 libsec: add chacha20 poly1305 aead, allow 64 bit iv's for chacha, add tsmemcmp()
chacha20 comes in two variants: ietf rfc7539, using 96 bit iv and 32 bit counter
and draft-agl-tls-chacha20poly1305 using 64 bit iv and a 64 bit counter. so
setupChachastate() now takes a ivlen argument which sets the mode.

add ccpoly_encrypt()/ccpoly_decrypt() routines.

to implement timing safe ccpoly_decrypt(), a constant time memcmp was needed, so
adding tsmemcmp() to libsec.
2015-11-26 15:25:10 +01:00
cinap_lenrek
38e1e5272f libmp: initial attempt at constant time code, faster reductions for special primes (for ecc)
introduce MPtimesafe flag to request time invariant computation
disables normalization so significant digits are not leaked.
2015-11-21 09:39:59 +01:00
cinap_lenrek
93d63dc1f3 mp(2): fix typo mnprand() -> mpnrand() 2015-10-28 13:39:17 +01:00
cinap_lenrek
847f3a0cf5 libsec: add chacha cipher (from charles forsyth) 2015-10-22 07:48:26 +02:00
cinap_lenrek
7effba9d98 libsec: add poly1305 2015-10-22 07:17:25 +02:00
aiju
27d2955ccf lib9p: add reqqueuefree 2015-10-12 10:41:40 +02:00
cinap_lenrek
8003c8b1e2 utf(6), rune(2): document 21-bit runes 2015-09-24 12:14:08 +02:00
cinap_lenrek
7562da90e5 libc: remove privfree(), simplify privalloc() 2015-09-06 20:43:05 +02:00
cinap_lenrek
e3a64494e7 libsec: remove flawed aes() digest and hmac_aes() implementations (thanks aiju) 2015-09-01 21:35:43 +02:00
cinap_lenrek
8f2e408448 libmp: add mpnrand() function to generate uniform random number 0 ≤ x < n 2015-08-25 20:20:25 +02:00
cinap_lenrek
63b18e7925 introduce AES key into nvram and keyfs 2015-08-21 02:43:31 +02:00
cinap_lenrek
02cfcfeab4 libauthsrv: generalize ticket service, not hardcoding ticket format and DES encryption
this is in preparation for replacing DES ticket encryption with
something better. but first need to make the code stop making
assumptions.

the wire encoding of the Ticket might be variable length
with TICKETLEN just giving an upper bound. the details will be
handled by libauthsrv _asgetticket() and _asgetresp() funciotns.

the Authenticator and Passwordreq structures are encrypted
with the random ticket key. The encryption schmeme will depend
on the Ticket format used, so we pass the Ticket* structure
instead of the DES key.

introduce Authkey structure that will hold all the required
cryptographic keys instead of passing DES key.
2015-08-19 21:06:17 +02:00
cinap_lenrek
d457a43461 libc: make atoi() not parse c-style octal and hex numbers
interpreting octal breaks parsing of decimal numbers with
leading zeros. the manpage listed this in the BUGS section,
so we'r going to fix it as this just causes confusion as
most callers of atoi() do not expect it.
2015-08-03 18:10:53 +02:00
cinap_lenrek
f42a7ade70 bio(2): Bterm() closes filedescriptor for Bfdopen() allocated buffer 2015-08-01 03:16:35 +02:00
stanley lieber
20e255110c open(2): fix typo 2015-07-01 21:46:47 -04:00
cinap_lenrek
e6220b39c9 exec(2): return register (R0) contains address of Tos structure. 2015-06-19 09:02:59 +02:00
ftrvxmtrx
e56e61fed1 addpt(2): put badrect in .SH NAME so that it gets into the searchindex 2015-06-09 12:32:38 +02:00
ftrvxmtrx
86acce7c4d esetcursor(2), alarm(2): fix prototypes 2015-06-09 12:29:57 +02:00
ftrvxmtrx
72a168b5fb event(2): fix estartfn prototype 2015-06-09 11:54:22 +02:00
ftrvxmtrx
a314302e64 libdraw: sync allocimage/allocwindow prototypes with man pages 2015-06-09 10:33:30 +02:00
ftrvxmtrx
2c505c160e addpt(2): document badrect function 2015-06-09 23:34:36 +02:00
ftrvxmtrx
e77002cdab freeimage(2), readcolmap(2), writecolmap(2): fix prototypes 2015-06-09 23:23:00 +02:00
cinap_lenrek
477f3ce3ea exec(2): exec argument size only limited by user stack size 2015-06-08 21:08:57 +02:00
ftrvxmtrx
e89e54d1a3 exec(2): fix prototypes 2015-06-08 12:59:51 +02:00
cinap_lenrek
de3c058efb cputime(2): fix prototype for cycles() (thanks qrstuv) 2015-05-28 18:11:45 +02:00
cinap_lenrek
ff2e8f308d thread(2): fix prototype for threadint() and threadkillgrp() (thanks qwx!) 2015-05-25 13:03:45 +02:00
cinap_lenrek
40360a992d libsec: implement tlsClient support for RFC6066 server name identification (SNI)
tlsClient() now can optionally send the server_name in the ClientHello
message by setting the TLSconn.serverName. This is required for some
https sites.
2015-05-21 02:26:57 +02:00
cinap_lenrek
12bb7bcfff libsec: remove aesCTRencrypt()/aesCTRdecrypt() (thanks mischief and qrstuv)
as mischief and qrstuv point out, these functions are not very usefull
and are even implemented wrong (incrementCTR()), so deleting the code.
2015-04-29 02:58:10 +02:00
stanley lieber
3b5c56561c pushtls(2): tls.h -> libsec.h (thanks, pr) 2015-03-18 18:33:34 -04:00
stanley lieber
17ae0ea757 mp(2) man page: mpinvert, not mpinverse (thanks, pr) 2015-03-16 23:34:37 -04:00
cinap_lenrek
9babf6a347 encode(2): clarify lim argument to enc*(), add SOURCE reference for encodefmt() 2015-03-11 17:48:24 +01:00
cinap_lenrek
dfed1eb851 pushtls(2): fix signature to TLSconn.trace() 2015-03-10 00:41:46 +01:00
cinap_lenrek
07c7fa6716 libthread: get rid of chaninit() (thanks qrstuv)
chaninit() does not initialize Chan.qentry and Chan.nentry
and there is no way to get rid of such a channel. nobody is
using it, so removing the function to avoid confusion.
2015-03-04 10:20:31 +01:00
cinap_lenrek
692e32caf4 thread(2): remove another instance of /mnt/temp 2015-02-28 13:27:00 +01:00
cinap_lenrek
45d1d31847 libthread: use devdup instead of mounting pipe to /mnt/temp for close-on-exec in procexec()
the namespace might be shared by other processes. instead, we
create a anonymous pipe with pipe() and use devdup to open one
end close-on-exec. this is shorter and avoids the race condition.

do not touch Execargs after writing the error message as the
process might be gone after the write. this was to manually
close the fd which isnt neccesary as the kernel will do it
for us on the following exit.
2015-02-28 12:50:17 +01:00
cinap_lenrek
91d3af942a auth(2): fix prototype for auth_getinfo() in manual page 2015-01-25 07:40:52 +01:00
mischief
1b4b4e89aa bin(2): fix tab formatting 2014-12-31 23:45:05 -08:00
mischief
ba47daaab3 memlayer(2): fix memdraw signature 2014-12-28 12:14:24 -08:00
cinap_lenrek
035aacf6f5 bio: add Bfdopen() from plan9port 2014-12-14 20:21:42 +01:00
cinap_lenrek
972577b61e strcat(2): fix strchr() and strrchr() function prototypes (thanks BurnZeZ) 2014-12-07 14:26:41 +01:00
cinap_lenrek
20cc2799af mouse(2): fix atomouse (thanks qrstuv) 2014-11-06 04:59:07 +01:00
cinap_lenrek
168b9f3de4 libdraw: add missing borderop() (thanks aiju) 2014-07-21 18:10:58 +02:00
cinap_lenrek
013054ef6f merge 2014-07-03 01:11:05 +02:00
stanley lieber
5814e66560 9pqueue(2): english 2014-07-02 19:01:20 -04:00
cinap_lenrek
2dc3180f98 9p(2): add reference to 9pqueue(2) 2014-07-03 00:57:40 +02:00
cinap_lenrek
fa56753ed8 add 9pqueue(2), medium to low quality manpage. 2014-07-03 00:47:10 +02:00
cinap_lenrek
4ad63a4c56 nusb: fix spelling, sorry 2014-06-28 19:55:14 +02:00
cinap_lenrek
4275c49e72 nusb: implement aijus stable uniqueue device names
instead of naming devices by ther dynamically assigned device address,
we hash device uniqueue fields from the device descriptor and produce
a 5 digit hex string that will identify the device across machines.

when there is a collision (less than 1% chance with 100 devices),
usbd will append the device address to the name to make it uniqueue
for this machine.

the hname is passed to drivers in the devid argument, which now has
the form addr:hname, where the colon and hname can be omited (for backwards
compatibility).

when the new behaviour isnt desired, nousbhname= environment variable
can be defined giving the old behaviour.
2014-06-28 18:09:43 +02:00
cinap_lenrek
7abf926bcf libc: dont cache /dev/bintime filedescriptor for nsec() 2014-05-20 05:01:26 +02:00
ftrvxmtrx
4468438c70 merge 2014-04-26 13:22:48 +02:00