Moved in CVS tree. Also renamed directory sparc to sparc32.
Rev: nettle/.bootstrap:1.1 Rev: nettle/.c-style:1.1 Rev: nettle/.cvsignore:1.1 Rev: nettle/AUTHORS:1.1 Rev: nettle/COPYING:1.1 Rev: nettle/COPYING.LIB:1.1 Rev: nettle/ChangeLog:1.1 Rev: nettle/Makefile.in:1.1 Rev: nettle/NEWS:1.1 Rev: nettle/README:1.1 Rev: nettle/TODO:1.1 Rev: nettle/aes-decrypt-internal.c:1.1 Rev: nettle/aes-decrypt.c:1.1 Rev: nettle/aes-encrypt-internal.c:1.1 Rev: nettle/aes-encrypt-table.c:1.1 Rev: nettle/aes-encrypt.c:1.1 Rev: nettle/aes-internal.h:1.1 Rev: nettle/aes-meta.c:1.1 Rev: nettle/aes-set-decrypt-key.c:1.1 Rev: nettle/aes-set-encrypt-key.c:1.1 Rev: nettle/aes.h:1.1 Rev: nettle/aesdata.c:1.1 Rev: nettle/arcfour-crypt.c:1.1 Rev: nettle/arcfour-meta.c:1.1 Rev: nettle/arcfour.c:1.1 Rev: nettle/arcfour.h:1.1 Rev: nettle/arctwo-meta.c:1.1 Rev: nettle/arctwo.c:1.1 Rev: nettle/arctwo.h:1.1 Rev: nettle/asm.m4:1.1 Rev: nettle/asn1.h:1.1 Rev: nettle/base16-decode.c:1.1 Rev: nettle/base16-encode.c:1.1 Rev: nettle/base16-meta.c:1.1 Rev: nettle/base16.h:1.1 Rev: nettle/base64-decode.c:1.1 Rev: nettle/base64-encode.c:1.1 Rev: nettle/base64-meta.c:1.1 Rev: nettle/base64.h:1.1 Rev: nettle/bignum-random.c:1.1 Rev: nettle/bignum.c:1.1 Rev: nettle/bignum.h:1.1 Rev: nettle/blowfish.c:1.1 Rev: nettle/blowfish.h:1.1 Rev: nettle/buffer-init.c:1.1 Rev: nettle/buffer.c:1.1 Rev: nettle/buffer.h:1.1 Rev: nettle/cast128-meta.c:1.1 Rev: nettle/cast128.c:1.1 Rev: nettle/cast128.h:1.1 Rev: nettle/cast128_sboxes.h:1.1 Rev: nettle/cbc.c:1.1 Rev: nettle/cbc.h:1.1 Rev: nettle/config.m4.in:1.1 Rev: nettle/config.make.in:1.1 Rev: nettle/configure.ac:1.1 Rev: nettle/ctr.c:1.1 Rev: nettle/ctr.h:1.1 Rev: nettle/der-iterator.c:1.1 Rev: nettle/der2rsa.c:1.1 Rev: nettle/des-compat.c:1.1 Rev: nettle/des-compat.h:1.1 Rev: nettle/des.c:1.1 Rev: nettle/des.h:1.1 Rev: nettle/des3.c:1.1 Rev: nettle/desCode.h:1.1 Rev: nettle/descore.README:1.1 Rev: nettle/desdata.c:1.1 Rev: nettle/desinfo.h:1.1 Rev: nettle/dsa-keygen.c:1.1 Rev: nettle/dsa-sign.c:1.1 Rev: nettle/dsa-verify.c:1.1 Rev: nettle/dsa.c:1.1 Rev: nettle/dsa.h:1.1 Rev: nettle/examples/.c-style:1.1 Rev: nettle/examples/.cvsignore:1.1 Rev: nettle/examples/Makefile.in:1.1 Rev: nettle/examples/io.c:1.1 Rev: nettle/examples/io.h:1.1 Rev: nettle/examples/nettle-benchmark.c:1.1 Rev: nettle/examples/nettle-openssl.c:1.1 Rev: nettle/examples/rsa-decrypt.c:1.1 Rev: nettle/examples/rsa-encrypt-test:1.1 Rev: nettle/examples/rsa-encrypt.c:1.1 Rev: nettle/examples/rsa-keygen.c:1.1 Rev: nettle/examples/rsa-session.h:1.1 Rev: nettle/examples/rsa-sign-test:1.1 Rev: nettle/examples/rsa-sign.c:1.1 Rev: nettle/examples/rsa-verify-test:1.1 Rev: nettle/examples/rsa-verify.c:1.1 Rev: nettle/examples/setup-env:1.1 Rev: nettle/examples/teardown-env:1.1 Rev: nettle/hmac-md5.c:1.1 Rev: nettle/hmac-sha1.c:1.1 Rev: nettle/hmac-sha256.c:1.1 Rev: nettle/hmac.c:1.1 Rev: nettle/hmac.h:1.1 Rev: nettle/index.html:1.1 Rev: nettle/knuth-lfib.c:1.1 Rev: nettle/knuth-lfib.h:1.1 Rev: nettle/list-obj-sizes.awk:1.1 Rev: nettle/macros.h:1.1 Rev: nettle/md2-meta.c:1.1 Rev: nettle/md2.c:1.1 Rev: nettle/md2.h:1.1 Rev: nettle/md4-meta.c:1.1 Rev: nettle/md4.c:1.1 Rev: nettle/md4.h:1.1 Rev: nettle/md5-compat.c:1.1 Rev: nettle/md5-compat.h:1.1 Rev: nettle/md5-compress.c:1.1 Rev: nettle/md5-meta.c:1.1 Rev: nettle/md5.c:1.1 Rev: nettle/md5.h:1.1 Rev: nettle/memxor.c:1.1 Rev: nettle/memxor.h:1.1 Rev: nettle/nettle-internal.c:1.1 Rev: nettle/nettle-internal.h:1.1 Rev: nettle/nettle-meta.h:1.1 Rev: nettle/nettle-types.h:1.1 Rev: nettle/nettle.texinfo:1.1 Rev: nettle/pgp-encode.c:1.1 Rev: nettle/pgp.h:1.1 Rev: nettle/pkcs1-rsa-md5.c:1.1 Rev: nettle/pkcs1-rsa-sha1.c:1.1 Rev: nettle/pkcs1-rsa-sha256.c:1.1 Rev: nettle/pkcs1.c:1.1 Rev: nettle/pkcs1.h:1.1 Rev: nettle/realloc.c:1.1 Rev: nettle/realloc.h:1.1 Rev: nettle/rsa-compat.c:1.1 Rev: nettle/rsa-compat.h:1.1 Rev: nettle/rsa-decrypt.c:1.1 Rev: nettle/rsa-encrypt.c:1.1 Rev: nettle/rsa-keygen.c:1.1 Rev: nettle/rsa-md5-sign.c:1.1 Rev: nettle/rsa-md5-verify.c:1.1 Rev: nettle/rsa-sha1-sign.c:1.1 Rev: nettle/rsa-sha1-verify.c:1.1 Rev: nettle/rsa-sha256-sign.c:1.1 Rev: nettle/rsa-sha256-verify.c:1.1 Rev: nettle/rsa-sign.c:1.1 Rev: nettle/rsa-verify.c:1.1 Rev: nettle/rsa.c:1.1 Rev: nettle/rsa.h:1.1 Rev: nettle/rsa2openpgp.c:1.1 Rev: nettle/rsa2sexp.c:1.1 Rev: nettle/serpent-meta.c:1.1 Rev: nettle/serpent.c:1.1 Rev: nettle/serpent.h:1.1 Rev: nettle/serpent_sboxes.h:1.1 Rev: nettle/sexp-format.c:1.1 Rev: nettle/sexp-transport-format.c:1.1 Rev: nettle/sexp-transport.c:1.1 Rev: nettle/sexp.c:1.1 Rev: nettle/sexp.h:1.1 Rev: nettle/sexp2bignum.c:1.1 Rev: nettle/sexp2dsa.c:1.1 Rev: nettle/sexp2rsa.c:1.1 Rev: nettle/sha-example.c:1.1 Rev: nettle/sha.h:1.1 Rev: nettle/sha1-compress.c:1.1 Rev: nettle/sha1-meta.c:1.1 Rev: nettle/sha1.c:1.1 Rev: nettle/sha256-meta.c:1.1 Rev: nettle/sha256.c:1.1 Rev: nettle/shadata.c:1.1 Rev: nettle/sparc32/aes-decrypt-internal.asm:1.1 Rev: nettle/sparc32/aes-encrypt-internal.asm:1.1 Rev: nettle/sparc32/aes.m4:1.1 Rev: nettle/sparc32/arcfour-crypt.asm:1.1 Rev: nettle/sparc32/machine.m4:1.1 Rev: nettle/sparc64/aes-decrypt-internal.asm:1.1 Rev: nettle/sparc64/aes-encrypt-internal.asm:1.1 Rev: nettle/sparc64/arcfour-crypt.asm:1.1 Rev: nettle/sparc64/machine.m4:1.1 Rev: nettle/testsuite/.c-style:1.1 Rev: nettle/testsuite/.cvsignore:1.1 Rev: nettle/testsuite/.test-rules.make:1.1 Rev: nettle/testsuite/Makefile.in:1.1 Rev: nettle/testsuite/aes-test.c:1.1 Rev: nettle/testsuite/aes-test.out:1.1 Rev: nettle/testsuite/arcfour-test.c:1.1 Rev: nettle/testsuite/arctwo-test.c:1.1 Rev: nettle/testsuite/base16-test.c:1.1 Rev: nettle/testsuite/base64-test.c:1.1 Rev: nettle/testsuite/bignum-test.c:1.1 Rev: nettle/testsuite/blowfish-test.c:1.1 Rev: nettle/testsuite/buffer-test.c:1.1 Rev: nettle/testsuite/cast128-test.c:1.1 Rev: nettle/testsuite/cbc-test.c:1.1 Rev: nettle/testsuite/ctr-test.c:1.1 Rev: nettle/testsuite/cxx-test.cxx:1.1 Rev: nettle/testsuite/des-compat-test.c:1.1 Rev: nettle/testsuite/des-test.c:1.1 Rev: nettle/testsuite/des3-test.c:1.1 Rev: nettle/testsuite/dsa-keygen-test.c:1.1 Rev: nettle/testsuite/dsa-test.c:1.1 Rev: nettle/testsuite/gold-bug.txt:1.1 Rev: nettle/testsuite/hmac-test.c:1.1 Rev: nettle/testsuite/knuth-lfib-test.c:1.1 Rev: nettle/testsuite/md2-test.c:1.1 Rev: nettle/testsuite/md4-test.c:1.1 Rev: nettle/testsuite/md5-compat-test.c:1.1 Rev: nettle/testsuite/md5-test.c:1.1 Rev: nettle/testsuite/pkcs1-conv-test:1.1 Rev: nettle/testsuite/pkcs1-test.c:1.1 Rev: nettle/testsuite/rsa-encrypt-test.c:1.1 Rev: nettle/testsuite/rsa-keygen-test.c:1.1 Rev: nettle/testsuite/rsa-test.c:1.1 Rev: nettle/testsuite/rsa2sexp-test.c:1.1 Rev: nettle/testsuite/serpent-test.c:1.1 Rev: nettle/testsuite/sexp-conv-test:1.1 Rev: nettle/testsuite/sexp-format-test.c:1.1 Rev: nettle/testsuite/sexp-test.c:1.1 Rev: nettle/testsuite/sexp2rsa-test.c:1.1 Rev: nettle/testsuite/sha1-huge-test.c:1.1 Rev: nettle/testsuite/sha1-test.c:1.1 Rev: nettle/testsuite/sha256-test.c:1.1 Rev: nettle/testsuite/symbols-test:1.1 Rev: nettle/testsuite/teardown-env:1.1 Rev: nettle/testsuite/testutils.c:1.1 Rev: nettle/testsuite/testutils.h:1.1 Rev: nettle/testsuite/twofish-test.c:1.1 Rev: nettle/testsuite/yarrow-test.c:1.1 Rev: nettle/testsuite/yarrow-test.out:1.1 Rev: nettle/tools/.c-style:1.1 Rev: nettle/tools/.cvsignore:1.1 Rev: nettle/tools/.gdbinit:1.1 Rev: nettle/tools/Makefile.in:1.1 Rev: nettle/tools/input.c:1.1 Rev: nettle/tools/input.h:1.1 Rev: nettle/tools/misc.c:1.1 Rev: nettle/tools/misc.h:1.1 Rev: nettle/tools/nettle-lfib-stream.c:1.1 Rev: nettle/tools/output.c:1.1 Rev: nettle/tools/output.h:1.1 Rev: nettle/tools/parse.c:1.1 Rev: nettle/tools/parse.h:1.1 Rev: nettle/tools/pkcs1-conv.c:1.1 Rev: nettle/tools/sexp-conv.c:1.1 Rev: nettle/twofish-meta.c:1.1 Rev: nettle/twofish.c:1.1 Rev: nettle/twofish.h:1.1 Rev: nettle/x86/aes-decrypt-internal.asm:1.1 Rev: nettle/x86/aes-encrypt-internal.asm:1.1 Rev: nettle/x86/aes.m4:1.1 Rev: nettle/x86/arcfour-crypt.asm:1.1 Rev: nettle/x86/machine.m4:1.1 Rev: nettle/x86/md5-compress.asm:1.1 Rev: nettle/x86/sha1-compress.asm:1.1 Rev: nettle/yarrow.h:1.1 Rev: nettle/yarrow256.c:1.1 Rev: nettle/yarrow_key_event.c:1.1
Showing
sparc32/aes.m4
0 → 100644
sparc32/arcfour-crypt.asm
0 → 100644
C -*- mode: asm; asm-comment-char: ?C; -*- | ||
C nettle, low-level cryptographics library | ||
C | ||
C Copyright (C) 2002, 2005 Niels Mller | ||
C | ||
C The nettle library is free software; you can redistribute it and/or modify | ||
C it under the terms of the GNU Lesser General Public License as published by | ||
C the Free Software Foundation; either version 2.1 of the License, or (at your | ||
C option) any later version. | ||
C | ||
C The nettle library is distributed in the hope that it will be useful, but | ||
C WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | ||
C or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | ||
C License for more details. | ||
C | ||
C You should have received a copy of the GNU Lesser General Public License | ||
C along with the nettle library; see the file COPYING.LIB. If not, write to | ||
C the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, | ||
C MA 02111-1307, USA. | ||
C Define to YES, to enable the complex code to special case SRC | ||
C and DST with compatible alignment. | ||
define(<WITH_ALIGN>, <YES>) | ||
C Registers | ||
define(<CTX>, <%i0>) | ||
define(<LENGTH>,<%i1>) | ||
define(<DST>, <%i2>) | ||
define(<SRC>, <%i3>) | ||
define(<I1>, <%i4>) | ||
define(<I2>, <%i5>) | ||
define(<J>, <%g1>) | ||
define(<SI>, <%g2>) | ||
define(<SJ>, <%g3>) | ||
define(<TMP>, <%o0>) | ||
define(<TMP2>, <%o1>) | ||
define(<N>, <%o2>) | ||
define(<DATA>, <%o3>) | ||
C Computes the next byte of the key stream. As input, i must | ||
C already point to the index for the current access, the index | ||
C for the next access is stored in ni. The resulting key byte is | ||
C stored in res. | ||
C ARCFOUR_BYTE(i, ni, res) | ||
define(<ARCFOUR_BYTE>, < | ||
ldub [CTX + $1], SI | ||
add $1, 1, $2 | ||
add J, SI, J | ||
and J, 0xff, J | ||
ldub [CTX + J], SJ | ||
and $2, 0xff, $2 | ||
stb SI, [CTX + J] | ||
add SI, SJ, SI | ||
and SI, 0xff, SI | ||
stb SJ, [CTX + $1] | ||
ldub [CTX + SI], $3 | ||
>)dnl | ||
C FIXME: Consider using the callers window | ||
define(<FRAME_SIZE>, 104) | ||
.file "arcfour-crypt.asm" | ||
C arcfour_crypt(struct arcfour_ctx *ctx, | ||
C unsigned length, uint8_t *dst, | ||
C const uint8_t *src) | ||
.section ".text" | ||
.align 16 | ||
.proc 020 | ||
PROLOGUE(nettle_arcfour_crypt) | ||
save %sp, -FRAME_SIZE, %sp | ||
cmp LENGTH, 0 | ||
be .Lend | ||
nop | ||
C Load both I and J | ||
lduh [CTX + ARCFOUR_I], I1 | ||
and I1, 0xff, J | ||
srl I1, 8, I1 | ||
C We want an even address for DST | ||
andcc DST, 1, %g0 | ||
add I1, 1 ,I1 | ||
beq .Laligned2 | ||
and I1, 0xff, I1 | ||
mov I1, I2 | ||
ldub [SRC], DATA | ||
ARCFOUR_BYTE(I2, I1, TMP) | ||
subcc LENGTH, 1, LENGTH | ||
add SRC, 1, SRC | ||
xor DATA, TMP, DATA | ||
stb DATA, [DST] | ||
beq .Ldone | ||
add DST, 1, DST | ||
.Laligned2: | ||
cmp LENGTH, 2 | ||
blu .Lfinal1 | ||
C Harmless delay slot instruction | ||
andcc DST, 2, %g0 | ||
beq .Laligned4 | ||
nop | ||
ldub [SRC], DATA | ||
ARCFOUR_BYTE(I1, I2, TMP) | ||
ldub [SRC + 1], TMP2 | ||
add SRC, 2, SRC | ||
xor DATA, TMP, DATA | ||
sll DATA, 8, DATA | ||
ARCFOUR_BYTE(I2, I1, TMP) | ||
xor TMP2, TMP, TMP | ||
subcc LENGTH, 2, LENGTH | ||
or DATA, TMP, DATA | ||
sth DATA, [DST] | ||
beq .Ldone | ||
add DST, 2, DST | ||
.Laligned4: | ||
cmp LENGTH, 4 | ||
blu .Lfinal2 | ||
C Harmless delay slot instruction | ||
srl LENGTH, 2, N | ||
.Loop: | ||
C Main loop, with aligned writes | ||
C FIXME: Could check if SRC is aligned, and | ||
C use 32-bit reads in that case. | ||
ldub [SRC], DATA | ||
ARCFOUR_BYTE(I1, I2, TMP) | ||
ldub [SRC + 1], TMP2 | ||
xor TMP, DATA, DATA | ||
sll DATA, 8, DATA | ||
ARCFOUR_BYTE(I2, I1, TMP) | ||
xor TMP2, TMP, TMP | ||
ldub [SRC + 2], TMP2 | ||
or TMP, DATA, DATA | ||
sll DATA, 8, DATA | ||
ARCFOUR_BYTE(I1, I2, TMP) | ||
xor TMP2, TMP, TMP | ||
ldub [SRC + 3], TMP2 | ||
or TMP, DATA, DATA | ||
sll DATA, 8, DATA | ||
ARCFOUR_BYTE(I2, I1, TMP) | ||
xor TMP2, TMP, TMP | ||
or TMP, DATA, DATA | ||
subcc N, 1, N | ||
add SRC, 4, SRC | ||
st DATA, [DST] | ||
bne .Loop | ||
add DST, 4, DST | ||
andcc LENGTH, 3, LENGTH | ||
beq .Ldone | ||
nop | ||
.Lfinal2: | ||
C DST address must be 2-aligned | ||
cmp LENGTH, 2 | ||
blu .Lfinal1 | ||
nop | ||
ldub [SRC], DATA | ||
ARCFOUR_BYTE(I1, I2, TMP) | ||
ldub [SRC + 1], TMP2 | ||
add SRC, 2, SRC | ||
xor DATA, TMP, DATA | ||
sll DATA, 8, DATA | ||
ARCFOUR_BYTE(I2, I1, TMP) | ||
xor TMP2, TMP, TMP | ||
or DATA, TMP, DATA | ||
sth DATA, [DST] | ||
beq .Ldone | ||
add DST, 2, DST | ||
.Lfinal1: | ||
mov I1, I2 | ||
ldub [SRC], DATA | ||
< |