Es schrieb einmal Alfred Peters:
> Es schrieb einmal Michael Jaritz:
>> Alfred Peters schrieb:
>>> Du k�nntest h�chstens das Hash-Verfahren direkt aus dem Header der
>>> Unterschrift auslesen. Du m�sstest nur[TM] die ersten Bytes dekodieren.
>>>
>>> [1] -> [2]/[3] -> [4]
>>> [1] <
http://tools.ietf.org/html/rfc4880#section-4.2>
>>> [2] <
http://tools.ietf.org/html/rfc4880#section-5.2.2>
>>> [3] <
http://tools.ietf.org/html/rfc4880#section-5.2.3>
>>> [4] <
http://tools.ietf.org/html/rfc4880#section-9.4>
>>
>> H�rt sich interssant an. Wie s�he das in hsc aus ;-?
>
> Viel zu aufwendig. *d&r*
Ach, es geht so. *duck*
<
http://zielgra.de/temp/hamster/XPGPSig_GnuPGVerify2.hsc>
Der Aufruf muss hinter:
| ListSetText( $sig_list, $xpgpsig_all )
Der Aufruf sieht z.Bsp. so aus:
| varset( $trueHash, getAlgoFormHash( $sig_list ) )
| Print( "Hashverfahren laut Hash: " + $trueHash )
Und die Sub getAlgoFormHash() zwischen die anderen packen:
| sub getAlgoFormHash( $lPGP )
| varset $i, 1
| varset $Signature, $line, ""
| varset $hash, "<not available>"
| while( $i < ListCount($lPGP) )
| $line = ListGet( $lPGP, $i )
| inc( $i )
| if ( Re_Match( $line, "^(Version|Comment|MessageID|Hash|Charset):\s" ) )
| continue()
| endif
| RE_Parse( $line, "(\S+)$", $line )
| $Signature = decodeBase64( $line )
| if ( $Signature <> "" )
| break()
| endif
| endwhile
| $i= 1
| varset $PacketTag, ord( copy( $Signature, $i, 1 ) )
| if( 0=($PacketTag & 0x80) )
| warning( "Fehler im Packet Tag" )
| return $hash
| endif
| varset $headerLength, $packetLength, 0
| if( 0=($PacketTag & 0x40) )
| #Print( "Old packet format" )
| $headerLength = ($PacketTag & 0x03)
| $headerLength = iCase( $headerLength, 0, 2, 1, 3, 2, 5, else, 1 )
| $PacketTag = ($PacketTag & 0x3C) >> 2
| else
| #Print( "New packet format" )
| $packetLength = ord( copy( $Signature, $i+1, 1 ) )
| if $packetLength < 192
| $headerLength = 2
| elseif $packetLength < 224
| $headerLength = 3
| elseif $packetLength < 255
| $headerLength = 2
| warning( "Partial Body Length header is't supportet" )
| else
| $headerLength = 6
| endif
| $PacketTag = ($PacketTag & 0x3F)
| endif
| $i = $i + $headerLength
|
| if( $PacketTag = 2 )
| $PacketTag = ord( copy( $Signature, $i, 1 ) )
| else
| warning( "Packet Tag Typ is't supportet " )
| return $hash
| endif
|
| if( $PacketTag = 3 )
| #Print( "Version 3 Signature Packet Format" )
| $PacketTag = ord( copy( $Signature, $i+16, 1 ) )
| elseif( $PacketTag = 4 )
| #Print( "Version 4 Signature Packet Format" )
| $PacketTag = ord( copy( $Signature, $i+3, 1 ) )
| else
| warning( "Signature Packet Format is't supportet." )
| return $hash
| endif
|
| $hash = iCase( $PacketTag, 1, "MD5", 2, "SHA1", 3, "RIPEMD160", _
| 4, "Reserved", 5, "Reserved", 6, "Reserved", 7, "Reserved", _
| 8, "SHA256", 9, "SHA384", 10, "SHA512", 11, "SHA224", else, "Experimental" )
|
| return $hash
| endsub
|# getAlgoFormHash()
Ich ziehe mal um nach: in h.d.tools
Alfred
--
12991.3