home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / c / smlaes12 / smallaes.txt < prev   
Encoding:
Text File  |  1993-04-18  |  5.6 KB  |  139 lines

  1.                      The smaller AES-Binding ...
  2.                      ---------------------------
  3.  
  4.                              Version 1.2
  5.  
  6.                              April  1993
  7.  
  8.                      (c) 1991-93 by Oliver Scheel
  9.                         Freaky Deaky Software
  10.  
  11.                          (it's Public Domain)
  12.  
  13.  
  14. Einleitung
  15. ==========
  16. Ja,  ja,  da denkt man an nichts Schlimmes und auf einmal bekommt  man 
  17. Replies  auf ein zwei Jahre altes 'Produkt'.  Doch nach  einer  kurzen 
  18. Retrospektive,  fällt einem auf,  daß dieses Produkt hoch aktuell  ist 
  19. und nur darauf wartet überarbeitet zu werden.  Es handelt sich hierbei 
  20. um ein einfaches AES-Binding für (fast) jeden C-Compiler.  Doch wo ist 
  21. der Unterschied zu anderen AES-Bindings? Man kann es sehr kurz fassen: 
  22. Es ist einfach kürzer (um es kurz zu fassen).  Weiterhin läßt sich das 
  23. Binding sehr einfach an Erweiterungen anpassen.
  24.  
  25. Bei diesem AES-Binding handelt es sich um Public Domain Software, d.h. 
  26. Programm  und Sourcetext sind frei kopier und  benutzbar.  Sollte  das 
  27. AES-Binding  in  einem  kommerziellen  Produkt  (includes   Shareware) 
  28. Verwendung finden,  so bitte ich um eine Benachrichtigung, um so einen 
  29. gewissen Überblick zu behalten.  Weiterhin sind Veränderungen genau zu 
  30. dokumentieren!
  31.  
  32. Folgende  Dateien gehören zum Paket und müssen immer zusammen  kopiert 
  33. werden:
  34.  
  35.      - SMALLAES.C        Der C-Teil des Bindings
  36.      - CRYSTAL.S         Der Assembler-Teil
  37.      - SMALLAES.H        Das *.H File zum Includen
  38.      - SMALLAES.TXT      Diese Dokumentation
  39.  
  40.  
  41. Mach hin!
  42. =========
  43.  
  44. Vorbereitungen
  45. --------------
  46. Zuerst  muß  man natürlich das *.O File bzw.  das  Lib-File  erzeugen. 
  47. Hierzu  compiliert man SMALLAES.C und  assembliert  CRYSTAL.S.  Danach 
  48. werden  beide zu einem einzigen *.O  File  zusammengelinkt,  bzw.  mit 
  49. einem  Library-Manager  zu einer  Library  vereinigt.  Der  C-Compiler 
  50. sollte (besser: muß) variable Argumente unterstützen.
  51. Im  Assemblerteil muß man vorher noch einen  Schalter  setzen.  Dieser 
  52. bestimmt wie die Parameterübergabe aussieht. In Turbo-C wird der AESPB 
  53. in  A0 übergeben bei den meisten anderen Comilern dürfte das über  den 
  54. Stack geschehen.
  55. Das Resultat kommt in den Library-Ordner.  In den Include-Ordner packt 
  56. man noch die Datei SMALLAES.H,  in welcher die wichtigen  Definitionen 
  57. stehen  und  welche dann auch später included werden  muß.  Die  Datei 
  58. SMALLAES.O  (oder  .LIB)  muß natürlich bei  den  entsprechenden  Pro-
  59. grammen dann dazugelinkt werden.
  60.  
  61.  
  62. Die eigentliche Dokumentation
  63. -----------------------------
  64. Alle AES-Aufrufe werden über eine einzige Funktion gefahren, nämlich
  65.  
  66.      int aes(function, ...)
  67.  
  68. wobei   'function'  die  AES-Funktionsnummer  angibt  und  '...'   die 
  69. Parameter.  Bei  den Parametern muß jedoch eine bestimmte  Reihenfolge 
  70. beachtet  werden,   d.h.   man  kann  die  in  der   GEM-Dokumentation 
  71. beschriebenen  Aufrufe  nur  über bestimmte  '#define's  machen  (s.a. 
  72. SMALLAES.H).  Zuerst  übergibt  man die  'int_in'-Einträge,  dann  die 
  73. 'addr_in',  danach  die  'int_out's (wichtig:  die  Adresse  der  ent-
  74. sprechenden  Variablen natürlich) und zu guter Letzt die  'addr_out's, 
  75. die  jedoch nur bei rsrc_gaddr() Verwendung finden.  Wird  eine  Para-
  76. metergruppe nicht benutzt, so läßt man diese ganz einfach aus.
  77.  
  78. Im  C-Part gibt es noch eine Tabelle,  die einigen  bekannt  vorkommen 
  79. sollte:  'ctrl_cnts'.  Hier  ist  festgelegt  wieviele  Parameter  pro 
  80. Parametergruppe  zu  erwarten  sind.   Die  Tabelle  weicht  von   der 
  81. ursprünglichen  in  der Weise ab,  daß hier vier  Werte  pro  Funktion 
  82. berücksichtigt wurden.  Leider ist das für rsrc_gaddr() notwendig,  da 
  83. es hier auch einen Rückgabeparameter in 'addr_out' gibt.
  84. Wie man sieht kann man über eine einfache Änderung im C-Source und ein 
  85. Hinzufügen eines '#defines' neue Funktionen berücksichtigen. Bei allen 
  86. anderen  (mir bekannten) AES-Bindings fängt dann die  Flickschuhsterei 
  87. an.
  88.  
  89. Differenzen
  90. -----------
  91. Als  erstes muß ich darauf hinweisen,  daß bei diesem AES-Bining  kein 
  92. Typencheck vorgenommen wird,  da es sich ja um '#define's und nicht um 
  93. Prototypen  oder  'inline' (C++) handelt.  Man muß also  selbst  etwas 
  94. aufpassen.
  95. Weiterhin gibt es einige Bindings,  die bei wind_get/set mit variablen 
  96. Argumenten arbeiten (z.B.  Turbo-C),  um einerseits int-Argumente  und 
  97. andererseits  long-Argumente (Adressen) verarbeiten  zu  können.  Hier 
  98. muß man dann gegebenfalls mit hiword/loword arbeiten:
  99.  
  100. /* lo and hi word of a long */
  101. #define loword(x)       (((unsigned int *)&(x))[1])
  102. #define hiword(x)       (((unsigned int *)&(x))[0])
  103.  
  104. Beim  objc_edit() wird normalerweise der 'index' und die  Adresse  des 
  105. 'index' getrennt übergeben.  Einige Bindings brauchen nur die Adresse. 
  106. Ich habe beide Versionen berücksichtigt und erstere auskommentiert.
  107.  
  108. Changes
  109. =======
  110.  
  111. V1.2
  112. ----
  113.    - Das  Binding  wurde um die neuen AES-Funktionen des  Falcon-  und 
  114.      des MultiTOS erweitert.
  115.  
  116.  
  117. Schlußwort
  118. ==========
  119. Alle die nicht glauben wollen,  daß das funktioniert,  muß ich  leider 
  120. enttäuschen,  da  dieses Binding in Let 'em Fly!  ab Version 1.13  be-
  121. reits  seine  Verwendung  findet und das Programm  250  Bytes  kleiner 
  122. wurde, obwohl ich nur 25% der AES-Funktionen benutze.
  123. Wem  das  Binding entfernt bekannt vorkommt ...  es war  in  ähnlicher 
  124. Form  von  mir  mal für Sozobon-C gebastelt worden und  ist  auch  auf 
  125. einer Maxon PD-Diskette enthalten.
  126.  
  127.  
  128. Meine Adresse ...
  129.  
  130. Oliver Scheel
  131. Rothehausstr. 28
  132. W-5000 Köln 30
  133.  
  134. E-Mail:   MausNet:  Oliver Scheel @ K2
  135.           Net:      Oliver_Scheel@k2.maus.de
  136.  
  137. Die Adresse kann sich zum September '93 hin ändern!
  138.  
  139.