[openfirmware] r1380 - cpu/x86/pc/olpc/via

svn at openfirmware.info svn at openfirmware.info
Fri Sep 25 03:54:20 CEST 2009


Author: wmb
Date: 2009-09-25 03:54:20 +0200 (Fri, 25 Sep 2009)
New Revision: 1380

Added:
   cpu/x86/pc/olpc/via/padlock.fth
Modified:
   cpu/x86/pc/olpc/via/fw.bth
Log:
Via - added support for the Via hardware crypto engine - random
number generation and fast SHA256.


Modified: cpu/x86/pc/olpc/via/fw.bth
===================================================================
--- cpu/x86/pc/olpc/via/fw.bth	2009-09-25 01:46:29 UTC (rev 1379)
+++ cpu/x86/pc/olpc/via/fw.bth	2009-09-25 01:54:20 UTC (rev 1380)
@@ -457,6 +457,7 @@
 devalias smb tcp//cifs
 devalias cifs tcp//cifs
 : op  " select smb:\\test:testxxx at 10.20.0.14\XTest\hello.txt" eval ;
+: dsmb  " dir smb:\\test:testxxx at 10.20.0.14\XTest\" eval ;
 
 fload ${BP}/cpu/x86/pc/olpc/via/memtest.fth
 
@@ -474,6 +475,7 @@
 fload ${BP}/cpu/x86/pc/olpc/nandcastui.fth
 fload ${BP}/cpu/x86/pc/olpc/wifichannel.fth
 [then]
+fload ${BP}/cpu/x86/pc/olpc/via/padlock.fth   \ Via security engine
 fload ${BP}/cpu/x86/pc/olpc/via/fsupdate.fth
 devalias fsdisk int:0
 

Added: cpu/x86/pc/olpc/via/padlock.fth
===================================================================
--- cpu/x86/pc/olpc/via/padlock.fth	                        (rev 0)
+++ cpu/x86/pc/olpc/via/padlock.fth	2009-09-25 01:54:20 UTC (rev 1380)
@@ -0,0 +1,79 @@
+purpose: Interface to Via "Padlock" hardare random number generator
+
+: enable-padlock  ( -- )  cr4@ h# 200 or cr4!  ;  \ SSE enable
+
+code random-bytes  ( adr len -- )
+   cr4 ebx mov  ebx eax mov  h# 200 # eax or  eax cr4 mov
+   cx pop
+   0 [sp] di xchg
+   3 # dx mov
+   begin
+      h# 0f c, h# a7 c, h# c0 c,
+      ax cx sub
+   0= until
+   0 [sp] di xchg
+   ebx cr4 mov
+c;
+code random-byte  ( -- n )
+   cr4 ebx mov  ebx eax mov  h# 200 # eax or  eax cr4 mov
+   ax ax xor  ax push
+   di cx mov
+   sp di mov
+   3 # dx mov
+   begin
+      h# 0f c, h# a7 c, h# c0 c,
+      ax ax or
+   0<> until
+   cx di mov
+   ebx cr4 mov
+c;
+
+create sha256-constants
+h# 6A09E667 , h# BB67AE85 , h# 3C6EF372 , h# A54FF53A ,
+h# 510E527F , h# 9B05688C , h# 1F83D9AB , h# 5BE0CD19 ,
+
+d# 128 d# 16 +  buffer: (sha-buf)
+: sha-buf  (sha-buf) d# 16 round-up  ;
+
+code do-sha  ( inbuf len outbuf -- )
+   ax pop
+   cx pop
+   0 [sp] si xchg
+   di push
+   ax di mov
+   ax ax xor
+   rep  h# 0f c,  h# a6 c,  h# d0 c,   
+   di pop
+   si pop
+c;
+: init-sha  ( -- )  sha256-constants sha-buf d# 32 move  ;
+: sha-256  ( adr len -- adr' len' )
+   enable-padlock
+   init-sha
+   sha-buf do-sha
+   sha-buf h# 20
+;
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2009 FirmWorks
+\ 
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\ 
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\ 
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END




More information about the openfirmware mailing list