diff options
author | djm <> | 2009-01-09 12:14:11 +0000 |
---|---|---|
committer | djm <> | 2009-01-09 12:14:11 +0000 |
commit | a0fdc9ec41594852f67ec77dfad9cb06bacc4186 (patch) | |
tree | c43f6b3a4d93ad2cb3dcf93275295679d895a033 /src/lib/libcrypto/aes | |
parent | 5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80 (diff) | |
download | openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.tar.gz openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.tar.bz2 openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.zip |
import openssl-0.9.8j
Diffstat (limited to 'src/lib/libcrypto/aes')
-rw-r--r-- | src/lib/libcrypto/aes/aes.h | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/aes/aes_cbc.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/aes/aes_core.c | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/aes/asm/aes-586.pl | 3 | ||||
-rwxr-xr-x | src/lib/libcrypto/aes/asm/aes-x86_64.pl | 7 |
5 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/libcrypto/aes/aes.h b/src/lib/libcrypto/aes/aes.h index baf0222d49..450f2b4051 100644 --- a/src/lib/libcrypto/aes/aes.h +++ b/src/lib/libcrypto/aes/aes.h | |||
@@ -66,6 +66,10 @@ | |||
66 | #define AES_MAXNR 14 | 66 | #define AES_MAXNR 14 |
67 | #define AES_BLOCK_SIZE 16 | 67 | #define AES_BLOCK_SIZE 16 |
68 | 68 | ||
69 | #ifdef OPENSSL_FIPS | ||
70 | #define FIPS_AES_SIZE_T int | ||
71 | #endif | ||
72 | |||
69 | #ifdef __cplusplus | 73 | #ifdef __cplusplus |
70 | extern "C" { | 74 | extern "C" { |
71 | #endif | 75 | #endif |
diff --git a/src/lib/libcrypto/aes/aes_cbc.c b/src/lib/libcrypto/aes/aes_cbc.c index d2ba6bcdb4..373864cd4b 100644 --- a/src/lib/libcrypto/aes/aes_cbc.c +++ b/src/lib/libcrypto/aes/aes_cbc.c | |||
@@ -59,6 +59,7 @@ | |||
59 | #include <openssl/aes.h> | 59 | #include <openssl/aes.h> |
60 | #include "aes_locl.h" | 60 | #include "aes_locl.h" |
61 | 61 | ||
62 | #if !defined(OPENSSL_FIPS_AES_ASM) | ||
62 | void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, | 63 | void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, |
63 | const unsigned long length, const AES_KEY *key, | 64 | const unsigned long length, const AES_KEY *key, |
64 | unsigned char *ivec, const int enc) { | 65 | unsigned char *ivec, const int enc) { |
@@ -129,3 +130,4 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, | |||
129 | } | 130 | } |
130 | } | 131 | } |
131 | } | 132 | } |
133 | #endif | ||
diff --git a/src/lib/libcrypto/aes/aes_core.c b/src/lib/libcrypto/aes/aes_core.c index 3a80e18b0a..cffdd4daec 100644 --- a/src/lib/libcrypto/aes/aes_core.c +++ b/src/lib/libcrypto/aes/aes_core.c | |||
@@ -37,6 +37,10 @@ | |||
37 | 37 | ||
38 | #include <stdlib.h> | 38 | #include <stdlib.h> |
39 | #include <openssl/aes.h> | 39 | #include <openssl/aes.h> |
40 | #ifdef OPENSSL_FIPS | ||
41 | #include <openssl/fips.h> | ||
42 | #endif | ||
43 | |||
40 | #include "aes_locl.h" | 44 | #include "aes_locl.h" |
41 | 45 | ||
42 | /* | 46 | /* |
@@ -631,6 +635,10 @@ int AES_set_encrypt_key(const unsigned char *userKey, const int bits, | |||
631 | int i = 0; | 635 | int i = 0; |
632 | u32 temp; | 636 | u32 temp; |
633 | 637 | ||
638 | #ifdef OPENSSL_FIPS | ||
639 | FIPS_selftest_check(); | ||
640 | #endif | ||
641 | |||
634 | if (!userKey || !key) | 642 | if (!userKey || !key) |
635 | return -1; | 643 | return -1; |
636 | if (bits != 128 && bits != 192 && bits != 256) | 644 | if (bits != 128 && bits != 192 && bits != 256) |
diff --git a/src/lib/libcrypto/aes/asm/aes-586.pl b/src/lib/libcrypto/aes/asm/aes-586.pl index 89fa261794..3bc46a968e 100644 --- a/src/lib/libcrypto/aes/asm/aes-586.pl +++ b/src/lib/libcrypto/aes/asm/aes-586.pl | |||
@@ -955,8 +955,9 @@ my $mark=&DWP(60+240,"esp"); #copy of aes_key->rounds | |||
955 | 955 | ||
956 | &align (4); | 956 | &align (4); |
957 | &set_label("enc_tail"); | 957 | &set_label("enc_tail"); |
958 | &push ($key eq "edi" ? $key : ""); # push ivp | 958 | &mov ($s0,$key eq "edi" ? $key : ""); |
959 | &mov ($key,$_out); # load out | 959 | &mov ($key,$_out); # load out |
960 | &push ($s0); # push ivp | ||
960 | &mov ($s1,16); | 961 | &mov ($s1,16); |
961 | &sub ($s1,$s2); | 962 | &sub ($s1,$s2); |
962 | &cmp ($key,$acc); # compare with inp | 963 | &cmp ($key,$acc); # compare with inp |
diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl index 44e0bf8cae..f616f1751f 100755 --- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl +++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl | |||
@@ -1198,19 +1198,20 @@ AES_cbc_encrypt: | |||
1198 | ret | 1198 | ret |
1199 | .align 4 | 1199 | .align 4 |
1200 | .Lcbc_enc_tail: | 1200 | .Lcbc_enc_tail: |
1201 | cmp $inp,$out | 1201 | mov %rax,%r11 |
1202 | je .Lcbc_enc_in_place | 1202 | mov %rcx,%r12 |
1203 | mov %r10,%rcx | 1203 | mov %r10,%rcx |
1204 | mov $inp,%rsi | 1204 | mov $inp,%rsi |
1205 | mov $out,%rdi | 1205 | mov $out,%rdi |
1206 | .long 0xF689A4F3 # rep movsb | 1206 | .long 0xF689A4F3 # rep movsb |
1207 | .Lcbc_enc_in_place: | ||
1208 | mov \$16,%rcx # zero tail | 1207 | mov \$16,%rcx # zero tail |
1209 | sub %r10,%rcx | 1208 | sub %r10,%rcx |
1210 | xor %rax,%rax | 1209 | xor %rax,%rax |
1211 | .long 0xF689AAF3 # rep stosb | 1210 | .long 0xF689AAF3 # rep stosb |
1212 | mov $out,$inp # this is not a mistake! | 1211 | mov $out,$inp # this is not a mistake! |
1213 | movq \$16,$_len # len=16 | 1212 | movq \$16,$_len # len=16 |
1213 | mov %r11,%rax | ||
1214 | mov %r12,%rcx | ||
1214 | jmp .Lcbc_enc_loop # one more spin... | 1215 | jmp .Lcbc_enc_loop # one more spin... |
1215 | #----------------------------- DECRYPT -----------------------------# | 1216 | #----------------------------- DECRYPT -----------------------------# |
1216 | .align 16 | 1217 | .align 16 |