CVS commit: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k
Module Name:src Committed By: mlelstv Date: Wed Mar 7 06:55:01 UTC 2018 Modified Files: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k: aes-m68k.S Log Message: Use local ELF labels and avoid an unsupported 16bit relocation. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.3 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.2 Mon Mar 5 00:59:43 2018 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S Wed Mar 7 06:55:01 2018 @@ -1,4 +1,4 @@ -| $NetBSD: aes-m68k.S,v 1.2 2018/03/05 00:59:43 christos Exp $ +| $NetBSD: aes-m68k.S,v 1.3 2018/03/07 06:55:01 mlelstv Exp $ | Copyright (C) 2016 Tetsuya Isaki. All rights reserved. | Copyright (C) 2016 Y.Sugahara (moveccr). All rights reserved. @@ -34,19 +34,20 @@ .global AES_set_encrypt_key .type AES_set_encrypt_key, @function AES_set_encrypt_key: +.Laes_set_encrypt_key: moveml %d2-%d7/%a2-%a6,%sp@- moveal %sp@(44+4),%a0 | userKey moveal %sp@(44+8),%a1 | bits moveal %sp@(44+12),%a3 | key tstl %a0 - beq pek_return1 | return -1 if userKey == NULL + beq .Lpek_return1 | return -1 if userKey == NULL tstl %a3 - beq pek_return1 | return -1 if key == NULL + beq .Lpek_return1 | return -1 if key == NULL cmpaw #128,%a1 - bne pek192_check | unless bits == 128 -pek128: + bne .Lpek192_check | unless bits == 128 +.Lpek128: | %d0-%d7 rk[0..7] | %a0 userKey, Te0 | %a1 Te1 @@ -80,7 +81,7 @@ pek128: lea %pc@(rcon_byte),%a4 lea %a4@(10),%a6 -pek128_loop: +.Lpek128_loop: | d6 consists of four Te index bytes movel %d3,%d5 | d5=rk[3] as {1,2,3,0} moveb %d5,%d7 | d7=temp @@ -111,21 +112,21 @@ pek128_loop: movel %d3,%a5@+ cmpal %a4,%a6 - bne pek128_loop |if (++i == 10) return 0; + bne .Lpek128_loop |if (++i == 10) return 0; -pek_return0: +.Lpek_return0: moveql #0,%d0 -pek_return: +.Lpek_return: moveml %sp@+,%d2-%d7/%a2-%a6 rts -pek192_check: +.Lpek192_check: | %a0 userKey | %a1 bits | %a3 key cmpaw #192,%a1 - bne pek256_check | unless bits == 192 -pek192: + bne .Lpek256_check | unless bits == 192 +.Lpek192: | %a0 Te0 | %a1 Te1 | %a2 Te2 @@ -160,15 +161,15 @@ pek192: moveq #0,%d7 lea %pc@(rcon_byte),%a4 lea %a4@(8),%a6 - bra pek192_loop_start + bra .Lpek192_loop_start -pek192_loop: +.Lpek192_loop: eorl %d3,%d4 | rk[10] = rk[4] ^ rk[9] movel %d4,%a5@+ | %d4 is rk[10] eorl %d4,%d5 | rk[11] = rk[5] ^ rk[10] movel %d5,%a5@ | %d5 is rk[11] -pek192_loop_start: +.Lpek192_loop_start: | %d0..%d5 = rk[0..5] | | temp = rk[5]; @@ -206,17 +207,17 @@ pek192_loop_start: movel %d3,%a5@+ | %d3 is rk[9] cmpal %a4,%a6 - bne pek192_loop - bra pek_return0 + bne .Lpek192_loop + bra .Lpek_return0 -pek256_check: +.Lpek256_check: | %a0 userKey | %a1 bits | %a3 key cmpaw #256,%a1 - bne pek_return2 | otherwise return -2 -pek256: + bne .Lpek_return2 | otherwise return -2 +.Lpek256: | %a0 Te0 | %a1 Te1 | %a2 Te2 @@ -254,9 +255,9 @@ pek256: lea %pc@(rcon_byte),%a4 lea %a4@(7),%a6 - bra pek256_loop_start + bra .Lpek256_loop_start -pek256_loop: +.Lpek256_loop: | %d0: rk[8] -> work | %d1: rk[9] -> work | %d2: rk[10] @@ -314,7 +315,7 @@ pek256_loop: moveml %a5@(-8*4),%d0-%d1 | %d0..%d1 = rk[8..9] movel %a5@(-5*4),%d3 | %d3 = rk[11] -pek256_loop_start: +.Lpek256_loop_start: | %d0: rk[0] | %d1: rk[1] | %d2: rk[2] @@ -369,15 +370,15 @@ pek256_loop_start: | %d7: work cmpal %a4,%a6 - bne pek256_loop - bra pek_return0 + bne .Lpek256_loop + bra .Lpek_return0 -pek_return1: +.Lpek_return1: moveql #-1,%d0 - bra pek_return -pek_return2: + bra .Lpek_return +.Lpek_return2: moveql #-2,%d0 - bra pek_return + bra .Lpek_return .size AES_set_encrypt_key, .-AES_set_encrypt_key @@ -397,9 +398,9 @@ AES_set_decrypt_key: movel %a3,%sp@- movel %a1,%sp@- movel %a0,%sp@- - bsr AES_set_encrypt_key + bsr .Laes_set_encrypt_key lea %sp@(12),%sp - bmi pdk_return + bmi .Lpdk_return /* invert the order of the round keys: */ lea %a3@(rd_key),%a5 | %a5 := [0] @@ -407,7 +408,7 @@ AES_set_decrypt_key: lslw #4,%d4 lea %a5@(%d4),%a4 | %a4 := [j] moveal %a4,%a6 | %a6 for the next loop -pdk_invert_loop: +.Lpdk_invert_loop: movel %a5@,%d0 movel %a4@,%a5@+ movel %d0,%a4@+ @@ -427,7 +428,7 @@ pdk_invert_loop: lea %a4@(-28),%a4 cmpal %a4,%a5 - bcs pdk_invert_loop + bcs .Lpdk_invert_loop /* * apply the inverse MixColumn transform to all round keys but @@ -442,7 +443,7 @@ pdk_invert_loop: | for (i = 1; i <
CVS commit: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k
Module Name:src Committed By: christos Date: Mon Mar 5 01:00:12 UTC 2018 Added Files: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k: crypto.inc Log Message: need CRYPTO_memcmp. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/crypto.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/crypto.inc diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/crypto.inc:1.1 --- /dev/null Sun Mar 4 20:00:12 2018 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/crypto.inc Sun Mar 4 20:00:12 2018 @@ -0,0 +1,5 @@ +.PATH.S: ${.PARSEDIR} + +CRYPTO_SRCS += libc-memequal.c + +.include "../../crypto.inc"
CVS commit: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k
Module Name:src Committed By: christos Date: Mon Mar 5 00:59:43 UTC 2018 Modified Files: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k: aes-m68k.S Log Message: make the key functions public, and provide function type and size attributes. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.2 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.1 Tue Feb 7 06:18:43 2017 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S Sun Mar 4 19:59:43 2018 @@ -1,4 +1,4 @@ -| $NetBSD: aes-m68k.S,v 1.1 2017/02/07 11:18:43 isaki Exp $ +| $NetBSD: aes-m68k.S,v 1.2 2018/03/05 00:59:43 christos Exp $ | Copyright (C) 2016 Tetsuya Isaki. All rights reserved. | Copyright (C) 2016 Y.Sugahara (moveccr). All rights reserved. @@ -28,12 +28,12 @@ #define rounds (60 * 4) | int -| private_AES_set_encrypt_key(const unsigned char *userKey, +| AES_set_encrypt_key(const unsigned char *userKey, | const int bits, | AES_KEY *key) -.global private_AES_set_encrypt_key -private_AES_set_encrypt_key: -_private_AES_set_encrypt_key: + .global AES_set_encrypt_key + .type AES_set_encrypt_key, @function +AES_set_encrypt_key: moveml %d2-%d7/%a2-%a6,%sp@- moveal %sp@(44+4),%a0 | userKey moveal %sp@(44+8),%a1 | bits @@ -378,14 +378,16 @@ pek_return1: pek_return2: moveql #-2,%d0 bra pek_return + .size AES_set_encrypt_key, .-AES_set_encrypt_key | int | private_AES_set_decrypt_key(const unsigned char *userKey, | const int bits, | AES_KEY *key) -.global private_AES_set_decrypt_key -private_AES_set_decrypt_key: + .global AES_set_decrypt_key + .type AES_set_decrypt_key, @function +AES_set_decrypt_key: moveml %d2-%d7/%a2-%a6,%sp@- moveal %sp@(44+4),%a0 | userKey moveal %sp@(44+8),%a1 | bits @@ -395,7 +397,7 @@ private_AES_set_decrypt_key: movel %a3,%sp@- movel %a1,%sp@- movel %a0,%sp@- - bsr _private_AES_set_encrypt_key + bsr AES_set_encrypt_key lea %sp@(12),%sp bmi pdk_return @@ -473,13 +475,15 @@ pdk_apply_loop: pdk_return: moveml %sp@+,%d2-%d7/%a2-%a6 rts + .size AES_set_decrypt_key, .-AES_set_decrypt_key | void | AES_encrypt(const unsigned char *in, | unsigned char *out, | const AES_KEY *key) -.global AES_encrypt + .global AES_encrypt + .type AES_encrypt, @function AES_encrypt: | %a0 in, Te0 | %a1 out, Te1 @@ -823,12 +827,14 @@ enc_last: moveml %sp@+,%d2-%d7/%a2-%a5 rts + .size AES_set_decrypt_key, .-AES_set_decrypt_key | void | AES_decrypt(const unsigned char *in, | unsigned char *out, | const AES_KEY *key) -.global AES_decrypt + .global AES_decrypt + .type AES_decrypt, @function AES_decrypt: | %a0 in, Td0 | %a1 out, Td1 @@ -1183,6 +1189,7 @@ dec_loop_start: moveml %sp@+,%d2-%d7/%a2-%a5 rts + .size AES_decrypt, .-AES_decrypt .data .balign 4
CVS commit: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k
Module Name:src Committed By: rin Date: Wed Feb 8 21:43:53 UTC 2017 Modified Files: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k: aes.inc Log Message: Do not use the assembler version of AES routines for m68000; they contain instructions available for 68020 and later. Fix sun2 build. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc:1.2 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc:1.1 Tue Feb 7 11:18:43 2017 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc Wed Feb 8 21:43:53 2017 @@ -1,4 +1,6 @@ +.if ${MACHINE_ARCH} != "m68000" .PATH.S: ${.PARSEDIR} AES_SRCS = aes-m68k.S aes_cbc.c AESCPPFLAGS = -DAES_ASM +.endif .include "../../aes.inc"
CVS commit: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k
Module Name:src Committed By: isaki Date: Tue Feb 7 11:18:43 UTC 2017 Added Files: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k: aes-m68k.S aes.inc Log Message: Implement m68k assembly version of AES. It's approx 1.4 times faster than the original one. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S:1.1 --- /dev/null Tue Feb 7 11:18:43 2017 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/m68k/aes-m68k.S Tue Feb 7 11:18:43 2017 @@ -0,0 +1,1745 @@ +| $NetBSD: aes-m68k.S,v 1.1 2017/02/07 11:18:43 isaki Exp $ + +| Copyright (C) 2016 Tetsuya Isaki. All rights reserved. +| Copyright (C) 2016 Y.Sugahara (moveccr). All rights reserved. +| +| 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 above 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. +| +| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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. + +#define rd_key (0) +#define rounds (60 * 4) + +| int +| private_AES_set_encrypt_key(const unsigned char *userKey, +| const int bits, +| AES_KEY *key) +.global private_AES_set_encrypt_key +private_AES_set_encrypt_key: +_private_AES_set_encrypt_key: + moveml %d2-%d7/%a2-%a6,%sp@- + moveal %sp@(44+4),%a0 | userKey + moveal %sp@(44+8),%a1 | bits + moveal %sp@(44+12),%a3 | key + + tstl %a0 + beq pek_return1 | return -1 if userKey == NULL + tstl %a3 + beq pek_return1 | return -1 if key == NULL + + cmpaw #128,%a1 + bne pek192_check | unless bits == 128 +pek128: + | %d0-%d7 rk[0..7] + | %a0 userKey, Te0 + | %a1 Te1 + | %a2 Te2 + | %a3 key, Te3 + | %a4 rcon_byte + | %a5 [4] + | %a6 end of rcon_byte + + moveq #10,%d0 + movel %d0,%a3@(rounds) | key->rounds = 10 + + lea %a3@(rd_key),%a5 | [0] + + | rk[0] = GETU32(userKey ); + | rk[1] = GETU32(userKey + 4); + | rk[2] = GETU32(userKey + 8); + | rk[3] = GETU32(userKey + 12); + moveml %a0@,%d0-%d3 + movel %d0,%a5@+ + movel %d1,%a5@+ + movel %d2,%a5@+ + movel %d3,%a5@+ + + lea %pc@(Te0),%a0 | %a0 = Te0 + lea %a0@(256*4),%a1 | %a1 = Te1 + lea %a1@(256*4),%a2 | %a2 = Te2 + lea %a2@(256*4),%a3 | %a3 = Te3 + + moveq #0,%d7 + lea %pc@(rcon_byte),%a4 + lea %a4@(10),%a6 + +pek128_loop: + | d6 consists of four Te index bytes + movel %d3,%d5 | d5=rk[3] as {1,2,3,0} + moveb %d5,%d7 | d7=temp + moveb %a0@(2,%d7:w:4),%d4 | d4=$xx00 + swap %d5 | d5={3,0,1,2} + lsll #8,%d4 | d4=$00xx + moveb %d5,%d7 | d7=temp>>16 + moveb %a2@(0,%d7:w:4),%d6 | d6=$xx22 + lsrl #8,%d5 | d5={x,3,0,1} + moveb %a4@+,%d7 | LSByte ^= rcon[i] + eorb %d7,%d6 + lsll #8,%d6 | d6=$22xx + moveb %d5,%d7 | d7=temp>>24 + moveb %a1@(3,%d7:w:4),%d4 | d4=$0011 + swap %d5 | d5={0,1,x,3} + moveb %d5,%d7 | d7=temp>>8 + moveb %a3@(1,%d7:w:4),%d6 | d6=$2233 + swap %d6 | d6=$2233 + movew %d4,%d6 | d6=$22330011 + + eorl %d6,%d0 | rk[4] = rk[0]^ (Te..) + movel %d0,%a5@+ + eorl %d0,%d1 | rk[5] = rk[1] ^ rk[4]; + movel %d1,%a5@+ + eorl %d1,%d2 | rk[6] = rk[2] ^ rk[5]; + movel %d2,%a5@+ + eorl %d2,%d3 | rk[7] = rk[3] ^ rk[6]; + movel %d3,%a5@+ + + cmpal %a4,%a6 + bne pek128_loop |if (++i == 10) return 0; + +pek_return0: + moveql #0,%d0 +pek_return: + moveml %sp@+,%d2-%d7/%a2-%a6 + rts + +pek192_check: + | %a0 userKey + | %a1 bits + | %a3 key + cmpaw #192,%a1 + bne pek256_check | unless bits == 192 +pek192: + | %a0 Te0 + | %a1 Te1 + | %a2 Te2 + | %a3 Te3 + | %a4 rcon_byte + | %a5 [6] + | %a6 end of rcon_byte + moveq #12,%d0 + movel %d0,%a3@(rounds) | key->rounds = 12 + + lea