CryptoTestDH.Mod 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. MODULE CryptoTestDH;
  2. IMPORT D := CryptoDiffieHellman, B := CryptoBigNumbers, Kernel, Out := KernelLog;
  3. PROCEDURE Do( CONST nprime: ARRAY OF CHAR );
  4. VAR t: LONGINT;
  5. dh1, dh2: D.DH;
  6. pub1, pub2: B.BigNumber;
  7. k1, k2: B.BigNumber;
  8. BEGIN
  9. NEW( dh1, 0, nprime );
  10. pub1 := dh1.GenPubKey( );
  11. Out.String( "public key 1:" ); Out.Ln; B.Print( pub1 ); Out.Ln;
  12. NEW( dh2, 0, nprime );
  13. pub2 := dh2.GenPubKey( );
  14. Out.String( "public key 2:" ); Out.Ln; B.Print( pub2 ); Out.Ln; Out.Ln;
  15. k1 := dh1.ComputeKey( pub2 );
  16. Out.String( "key a:" ); Out.Ln; B.Print( k1 ); Out.Ln;
  17. t := Kernel.GetTicks( );
  18. k2 := dh2.ComputeKey( pub1 );
  19. t := Kernel.GetTicks( ) - t;
  20. Out.String( "key b:" ); Out.Ln; B.Print( k2 ); Out.Ln;
  21. IF (B.Cmp( k1, k2 ) = 0) THEN Out.String( "ok" ) ELSE Out.String( "failed" ) END;
  22. Out.String( " (" ); Out.Int( t, 1 ); Out.String( " ms)" ); Out.Ln;
  23. END Do;
  24. PROCEDURE SSL192*;
  25. BEGIN
  26. Do( "dh.ssl.192" )
  27. END SSL192;
  28. PROCEDURE SSL512*;
  29. BEGIN
  30. Do( "dh.ssl.512" )
  31. END SSL512;
  32. PROCEDURE SSL1024*;
  33. BEGIN
  34. Do( "dh.ssl.1024" )
  35. END SSL1024;
  36. PROCEDURE SSH*;
  37. BEGIN
  38. Do( "dh.ssh.group1" )
  39. END SSH;
  40. PROCEDURE SSL2048*;
  41. BEGIN
  42. Do( "dh.2048.MODP.256" )
  43. END SSL2048;
  44. END CryptoTestDH.
  45. CryptoTestDH.SSL192
  46. CryptoTestDH.SSL512
  47. CryptoTestDH.SSL1024
  48. CryptoTestDH.SSH
  49. CryptoTestDH.SSL2048
  50. System.Free CryptoTestDH CryptoDiffieHellman ~