Permalink
Browse files

Added SIMD code to SHA224/256 within Dynamic, and started some signif…

…icant core changes to dyna, to help use SIMD code for dyna large formats
  • Loading branch information...
jfoug committed May 30, 2013
1 parent c62a1ac commit 4dbaae80651f11d34a5de9f27a7da601ef69605a
Showing with 5,249 additions and 4,650 deletions.
  1. +19 −0 doc/DYNAMIC
  2. +1 −1 src/dynamic.h
  3. +430 −280 src/dynamic_big_crypt.c
  4. +34 −17 src/dynamic_fmt.c
  5. +1 −0 src/dynamic_parser.c
  6. +36 −36 src/dynamic_preloads.c
  7. +14 −8 src/dynamic_types.h
  8. +357 −177 src/sse-intrinsics-32.S
  9. +4,285 −4,109 src/sse-intrinsics-64.S
  10. +3 −1 src/sse-intrinsics-load-flags.h
  11. +49 −21 src/sse-intrinsics.c
  12. +11 −0 src/x86-64.h
  13. +9 −0 src/x86-sse.h
View
@@ -472,6 +472,25 @@ examples (this whole list is also found in dynamic.conf).
# SSE2 (or mmx) code, and thus, the SSE2/MMX builds can NOT be used
# to test that format.
#
+# Flag=MGF_FLAT_BUFFERS
+# This is similar to MGF_NOTSSE2Safe in 'some' ways. It will cause
+# dynamic to only use the flat buffers. However, it is used for
+# large formats which HAVE SSE2 code. These formats will use the
+# the data from the flat buffers directly (even nulling them out
+# and placing the # of bits into the right locations, and the 0x80
+# trailing byte also). So this tells dyna to store the data and
+# intermediate flat, but use the special SSE2 code for this format
+# that loads from flat. At the current time, only SHA2 formats
+# behave like this. But SHA1 'may' also in the near future. One
+# REALLY nice thing about doing SSE2 this way, is we are not limited
+# to a single limb. All of the sha256 can be done in SSE now. All
+# of the SHA512 also, with the exception of the final crypt of the
+# type 87 (sha512(sha512(x).sha512(x)) The final crypt is of 256
+# bytes. Our internal buffers are ONLY 256 bytes long. Thus, we
+# can not properly expand them to do the SSE2 (we would need to have
+# 384 byte buffers to do so). So that last step is done using oSSL,
+# on the 256 byte strings stored (which we CAN work with).
+#
# Flag=MGF_INPBASE64
# If the hashes are in base-64 (such as phpass), then use this
# flag. Note, the base 64 'format' used is that of phpass. If there
View
@@ -80,7 +80,7 @@ typedef struct DYNAMIC_Constants_t
#define MGF_PASSWORD_UPCASE 0x08000000
#define MGF_PASSWORD_LOCASE 0x10000000
#define MGF_FULL_CLEAN_REQUIRED 0x20000000
-// open 0x40000000
+#define MGF_FLAT_BUFFERS 0x40000000
// open 0x80000000
// These are special loader flags. They specify that keys loads are 'special', and
Oops, something went wrong.

0 comments on commit 4dbaae8

Please sign in to comment.