GenerateKey

Description:              The GenerateKey function generates a random cryptographic session key or a public/private key pair. A handle to the key or key pair is returned. This handle can then be used as needed with any CryptoAPI function requiring a key handle. It is the VTS analog of the CryptoAPI ryptGenKey call.

Returns:                    Handle

Usage:                       Script

Format:                      GenerateKey(CSPHandle, AlgID [, Flags, Error])

Parameters:             CSPHandle    { handle }  { required }  { no default }

                                              The handle of a CSP to use to generate the key.

                                    AlgID    { numeric }  { required }  { no default }

                                              Identifies the algorithm for which the key is to be generated. Values for this parameter vary depending on the CSP used and are defined in WinCrypt.h

                                    Flags    { numeric }  { optional }  { default: 0 }

                                              An optional parameter specifying the flags to be passed to CryptGenKey. If omitted or invalid then the value 0 is used.

                                    Error    { numeric }  { optional }  { no default }

                                              An optional variable in which the error code for the function is returned. It has the following meaning:

Error

Definition

0

Key successfully generated.

1

CSPHandle or AlgID parameters invalid.

x

Any other value is an error from CryptGenKey.

 

Comments:               The return value for this function is a handle to the Key. If an error occurs, then the return value is invalid. A key has a value type of 37. If cast to text then the hexadecimal value of the algorithm ID will be returned.

Example:

[

  Key1; 

  Key2; 

  Constant CALG_DH_EPHEM = 0xAA02; 

  Constant KEY_SIZE = 512; 

]

Init [

  If 1 Main; 

  [ 

    { Make a key } 

    Key1 = GenerateKey(CSP, CALG_DH_EPHEM, KEY_SIZE << 16); 

  ] 

]

See Also:

DeriveKey | Decrypt | Encrypt | ExportKey | GenerateKey | GetKeyParam | ImportKey | SetKeyParam