public String GetKeycode(String packageId, PrivateKey privateKey)
        {
            String publicKeyId   = privateKey.PublicKeyID;
            String privateKeyStr = privateKey.ArmoredKey;

            Endpoint p = ConnectionStrings.Endpoints["getKeycode"].Clone();

            p.Path = p.Path.Replace("{publicKeyId}", publicKeyId);
            p.Path = p.Path.Replace("{packageId}", packageId);
            StandardResponse response = connection.Send <StandardResponse>(p);

            if (response.Response != APIResponse.SUCCESS)
            {
                throw new GettingKeycodeFailedException("Failed to get keycode: " + response.Message);
            }

            String encryptedKeycode = response.Message;

            CryptUtility cu      = new CryptUtility();
            String       keycode = cu.DecryptKeycode(privateKeyStr, encryptedKeycode);

            return(keycode);
        }