On Fri, 30 Jul 2010 10:43:45 -0500
Kent Yoder <[email protected]> wrote:

Applied to 'master' branch.

 Thanks!

> 
> This patch makes the show_error() function used by the testcases a
> macro, then adds printing of a file and line number wherever its
> called.  This patch also changes the file descriptor these strings
> print to from stdout to stderr.  This will make finding errors in
> automated test runs easier.
> 
> Thanks,
> Kent
> 
> Signed-off-by: Kent Yoder <[email protected]>
> 
> diff --git a/testcases/common/common.c b/testcases/common/common.c
> index 950ce82..2db9550 100644
> --- a/testcases/common/common.c
> +++ b/testcases/common/common.c
> @@ -75,106 +75,96 @@ void process_time(SYSTEMTIME t1, SYSTEMTIME t2)
> 
>  //
>  //
> -void process_ret_code( CK_RV rc )
> +char *process_ret_code( CK_RV rc )
>  {
>     switch (rc) {
> -      case CKR_OK:                               printf("
> CKR_OK");                               break;
> -      case CKR_CANCEL:                           printf("
> CKR_CANCEL");                           break;
> -      case CKR_HOST_MEMORY:                      printf("
> CKR_HOST_MEMORY");                      break;
> -      case CKR_SLOT_ID_INVALID:                  printf("
> CKR_SLOT_ID_INVALID");                  break;
> -      case CKR_GENERAL_ERROR:                    printf("
> CKR_GENERAL_ERROR");                    break;
> -      case CKR_FUNCTION_FAILED:                  printf("
> CKR_FUNCTION_FAILED");                  break;
> -      case CKR_ARGUMENTS_BAD:                    printf("
> CKR_ARGUMENTS_BAD");                    break;
> -      case CKR_NO_EVENT:                         printf("
> CKR_NO_EVENT");                         break;
> -      case CKR_NEED_TO_CREATE_THREADS:           printf("
> CKR_NEED_TO_CREATE_THREADS");           break;
> -      case CKR_CANT_LOCK:                        printf("
> CKR_CANT_LOCK");                        break;
> -      case CKR_ATTRIBUTE_READ_ONLY:              printf("
> CKR_ATTRIBUTE_READ_ONLY");              break;
> -      case CKR_ATTRIBUTE_SENSITIVE:              printf("
> CKR_ATTRIBUTE_SENSITIVE");              break;
> -      case CKR_ATTRIBUTE_TYPE_INVALID:           printf("
> CKR_ATTRIBUTE_TYPE_INVALID");           break;
> -      case CKR_ATTRIBUTE_VALUE_INVALID:          printf("
> CKR_ATTRIBUTE_VALUE_INVALID");          break;
> -      case CKR_DATA_INVALID:                     printf("
> CKR_DATA_INVALID");                     break;
> -      case CKR_DATA_LEN_RANGE:                   printf("
> CKR_DATA_LEN_RANGE");                   break;
> -      case CKR_DEVICE_ERROR:                     printf("
> CKR_DEVICE_ERROR");                     break;
> -      case CKR_DEVICE_MEMORY:                    printf("
> CKR_DEVICE_MEMORY");                    break;
> -      case CKR_DEVICE_REMOVED:                   printf("
> CKR_DEVICE_REMOVED");                   break;
> -      case CKR_ENCRYPTED_DATA_INVALID:           printf("
> CKR_ENCRYPTED_DATA_INVALID");           break;
> -      case CKR_ENCRYPTED_DATA_LEN_RANGE:         printf("
> CKR_ENCRYPTED_DATA_LEN_RANGE");         break;
> -      case CKR_FUNCTION_CANCELED:                printf("
> CKR_FUNCTION_CANCELED");                break;
> -      case CKR_FUNCTION_NOT_PARALLEL:            printf("
> CKR_FUNCTION_NOT_PARALLEL");            break;
> -      case CKR_FUNCTION_NOT_SUPPORTED:           printf("
> CKR_FUNCTION_NOT_SUPPORTED");           break;
> -      case CKR_KEY_HANDLE_INVALID:               printf("
> CKR_KEY_HANDLE_INVALID");               break;
> -      case CKR_KEY_SIZE_RANGE:                   printf("
> CKR_KEY_SIZE_RANGE");                   break;
> -      case CKR_KEY_TYPE_INCONSISTENT:            printf("
> CKR_KEY_TYPE_INCONSISTENT");            break;
> -      case CKR_KEY_NOT_NEEDED:                   printf("
> CKR_KEY_NOT_NEEDED");                   break;
> -      case CKR_KEY_CHANGED:                      printf("
> CKR_KEY_CHANGED");                      break;
> -      case CKR_KEY_NEEDED:                       printf("
> CKR_KEY_NEEDED");                       break;
> -      case CKR_KEY_INDIGESTIBLE:                 printf("
> CKR_KEY_INDIGESTIBLE");                 break;
> -      case CKR_KEY_FUNCTION_NOT_PERMITTED:       printf("
> CKR_KEY_FUNCTION_NOT_PERMITTED");       break;
> -      case CKR_KEY_NOT_WRAPPABLE:                printf("
> CKR_KEY_NOT_WRAPPABLE");                break;
> -      case CKR_KEY_UNEXTRACTABLE:                printf("
> CKR_KEY_UNEXTRACTABLE");                break;
> -      case CKR_MECHANISM_INVALID:                printf("
> CKR_MECHANISM_INVALID");                break;
> -      case CKR_MECHANISM_PARAM_INVALID:          printf("
> CKR_MECHANISM_PARAM_INVALID");          break;
> -      case CKR_OBJECT_HANDLE_INVALID:            printf("
> CKR_OBJECT_HANDLE_INVALID");            break;
> -      case CKR_OPERATION_ACTIVE:                 printf("
> CKR_OPERATION_ACTIVE");                 break;
> -      case CKR_OPERATION_NOT_INITIALIZED:        printf("
> CKR_OPERATION_NOT_INITIALIZED");        break;
> -      case CKR_PIN_INCORRECT:                    printf("
> CKR_PIN_INCORRECT");                    break;
> -      case CKR_PIN_INVALID:                      printf("
> CKR_PIN_INVALID");                      break;
> -      case CKR_PIN_LEN_RANGE:                    printf("
> CKR_PIN_LEN_RANGE");                    break;
> -      case CKR_PIN_EXPIRED:                      printf("
> CKR_PIN_EXPIRED");                      break;
> -      case CKR_PIN_LOCKED:                       printf("
> CKR_PIN_LOCKED");                       break;
> -      case CKR_SESSION_CLOSED:                   printf("
> CKR_SESSION_CLOSED");                   break;
> -      case CKR_SESSION_COUNT:                    printf("
> CKR_SESSION_COUNT");                    break;
> -      case CKR_SESSION_HANDLE_INVALID:           printf("
> CKR_SESSION_HANDLE_INVALID");           break;
> -      case CKR_SESSION_PARALLEL_NOT_SUPPORTED:   printf("
> CKR_SESSION_PARALLEL_NOT_SUPPORTED");   break;
> -      case CKR_SESSION_READ_ONLY:                printf("
> CKR_SESSION_READ_ONLY");                break;
> -      case CKR_SESSION_EXISTS:                   printf("
> CKR_SESSION_EXISTS");                   break;
> -      case CKR_SESSION_READ_ONLY_EXISTS:         printf("
> CKR_SESSION_READ_ONLY_EXISTS");         break;
> -      case CKR_SESSION_READ_WRITE_SO_EXISTS:     printf("
> CKR_SESSION_READ_WRITE_SO_EXISTS");     break;
> -      case CKR_SIGNATURE_INVALID:                printf("
> CKR_SIGNATURE_INVALID");                break;
> -      case CKR_SIGNATURE_LEN_RANGE:              printf("
> CKR_SIGNATURE_LEN_RANGE");              break;
> -      case CKR_TEMPLATE_INCOMPLETE:              printf("
> CKR_TEMPLATE_INCOMPLETE");              break;
> -      case CKR_TEMPLATE_INCONSISTENT:            printf("
> CKR_TEMPLATE_INCONSISTENT");            break;
> -      case CKR_TOKEN_NOT_PRESENT:                printf("
> CKR_TOKEN_NOT_PRESENT");                break;
> -      case CKR_TOKEN_NOT_RECOGNIZED:             printf("
> CKR_TOKEN_NOT_RECOGNIZED");             break;
> -      case CKR_TOKEN_WRITE_PROTECTED:            printf("
> CKR_TOKEN_WRITE_PROTECTED");            break;
> -      case CKR_UNWRAPPING_KEY_HANDLE_INVALID:    printf("
> CKR_UNWRAPPING_KEY_HANDLE_INVALID");    break;
> -      case CKR_UNWRAPPING_KEY_SIZE_RANGE:        printf("
> CKR_UNWRAPPING_KEY_SIZE_RANGE");        break;
> -      case CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT: printf("
> CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT"); break;
> -      case CKR_USER_ALREADY_LOGGED_IN:           printf("
> CKR_USER_ALREADY_LOGGED_IN");           break;
> -      case CKR_USER_NOT_LOGGED_IN:               printf("
> CKR_USER_NOT_LOGGED_IN");               break;
> -      case CKR_USER_PIN_NOT_INITIALIZED:         printf("
> CKR_USER_PIN_NOT_INITIALIZED");         break;
> -      case CKR_USER_TYPE_INVALID:                printf("
> CKR_USER_TYPE_INVALID");                break;
> -      case CKR_USER_ANOTHER_ALREADY_LOGGED_IN:   printf("
> CKR_USER_ANOTHER_ALREADY_LOGGED_IN");   break;
> -      case CKR_USER_TOO_MANY_TYPES:              printf("
> CKR_USER_TOO_MANY_TYPES");              break;
> -      case CKR_WRAPPED_KEY_INVALID:              printf("
> CKR_WRAPPED_KEY_INVALID");              break;
> -      case CKR_WRAPPED_KEY_LEN_RANGE:            printf("
> CKR_WRAPPED_KEY_LEN_RANGE");            break;
> -      case CKR_WRAPPING_KEY_HANDLE_INVALID:      printf("
> CKR_WRAPPING_KEY_HANDLE_INVALID");      break;
> -      case CKR_WRAPPING_KEY_SIZE_RANGE:          printf("
> CKR_WRAPPING_KEY_SIZE_RANGE");          break;
> -      case CKR_WRAPPING_KEY_TYPE_INCONSISTENT:   printf("
> CKR_WRAPPING_KEY_TYPE_INCONSISTENT");   break;
> -      case CKR_RANDOM_SEED_NOT_SUPPORTED:        printf("
> CKR_RANDOM_SEED_NOT_SUPPORTED");        break;
> -      case CKR_RANDOM_NO_RNG:                    printf("
> CKR_RANDOM_NO_RNG");                    break;
> -      case CKR_BUFFER_TOO_SMALL:                 printf("
> CKR_BUFFER_TOO_SMALL");                 break;
> -      case CKR_SAVED_STATE_INVALID:              printf("
> CKR_SAVED_STATE_INVALID");              break;
> -      case CKR_INFORMATION_SENSITIVE:            printf("
> CKR_INFORMATION_SENSITIVE");            break;
> -      case CKR_STATE_UNSAVEABLE:                 printf("
> CKR_STATE_UNSAVEABLE");                 break;
> -      case CKR_CRYPTOKI_NOT_INITIALIZED:         printf("
> CKR_CRYPTOKI_NOT_INITIALIZED");         break;
> -      case CKR_CRYPTOKI_ALREADY_INITIALIZED:     printf("
> CKR_CRYPTOKI_ALREADY_INITIALIZED");     break;
> -      case CKR_MUTEX_BAD:                        printf("
> CKR_MUTEX_BAD");                        break;
> -      case CKR_MUTEX_NOT_LOCKED:                 printf("
> CKR_MUTEX_NOT_LOCKED");                 break;
> +      case CKR_OK:                           return " CKR_OK";
> +      case CKR_CANCEL:                               return "
> CKR_CANCEL";
> +      case CKR_HOST_MEMORY:                  return "
> CKR_HOST_MEMORY";
> +      case CKR_SLOT_ID_INVALID:                      return "
> CKR_SLOT_ID_INVALID";
> +      case CKR_GENERAL_ERROR:                        return "
> CKR_GENERAL_ERROR";
> +      case CKR_FUNCTION_FAILED:                      return "
> CKR_FUNCTION_FAILED";
> +      case CKR_ARGUMENTS_BAD:                        return "
> CKR_ARGUMENTS_BAD";
> +      case CKR_NO_EVENT:                     return "
> CKR_NO_EVENT";
> +      case CKR_NEED_TO_CREATE_THREADS:               return "
> CKR_NEED_TO_CREATE_THREADS";
> +      case CKR_CANT_LOCK:                    return "
> CKR_CANT_LOCK";
> +      case CKR_ATTRIBUTE_READ_ONLY:          return "
> CKR_ATTRIBUTE_READ_ONLY";
> +      case CKR_ATTRIBUTE_SENSITIVE:          return "
> CKR_ATTRIBUTE_SENSITIVE";
> +      case CKR_ATTRIBUTE_TYPE_INVALID:               return "
> CKR_ATTRIBUTE_TYPE_INVALID";
> +      case CKR_ATTRIBUTE_VALUE_INVALID:              return "
> CKR_ATTRIBUTE_VALUE_INVALID";
> +      case CKR_DATA_INVALID:                 return "
> CKR_DATA_INVALID";
> +      case CKR_DATA_LEN_RANGE:                       return "
> CKR_DATA_LEN_RANGE";
> +      case CKR_DEVICE_ERROR:                 return "
> CKR_DEVICE_ERROR";
> +      case CKR_DEVICE_MEMORY:                        return "
> CKR_DEVICE_MEMORY";
> +      case CKR_DEVICE_REMOVED:                       return "
> CKR_DEVICE_REMOVED";
> +      case CKR_ENCRYPTED_DATA_INVALID:               return "
> CKR_ENCRYPTED_DATA_INVALID";
> +      case CKR_ENCRYPTED_DATA_LEN_RANGE:     return "
> CKR_ENCRYPTED_DATA_LEN_RANGE";
> +      case CKR_FUNCTION_CANCELED:            return "
> CKR_FUNCTION_CANCELED";
> +      case CKR_FUNCTION_NOT_PARALLEL:                return "
> CKR_FUNCTION_NOT_PARALLEL";
> +      case CKR_FUNCTION_NOT_SUPPORTED:               return "
> CKR_FUNCTION_NOT_SUPPORTED";
> +      case CKR_KEY_HANDLE_INVALID:           return "
> CKR_KEY_HANDLE_INVALID";
> +      case CKR_KEY_SIZE_RANGE:                       return "
> CKR_KEY_SIZE_RANGE";
> +      case CKR_KEY_TYPE_INCONSISTENT:                return "
> CKR_KEY_TYPE_INCONSISTENT";
> +      case CKR_KEY_NOT_NEEDED:                       return "
> CKR_KEY_NOT_NEEDED";
> +      case CKR_KEY_CHANGED:                  return "
> CKR_KEY_CHANGED";
> +      case CKR_KEY_NEEDED:                   return "
> CKR_KEY_NEEDED";
> +      case CKR_KEY_INDIGESTIBLE:             return "
> CKR_KEY_INDIGESTIBLE";
> +      case CKR_KEY_FUNCTION_NOT_PERMITTED:   return "
> CKR_KEY_FUNCTION_NOT_PERMITTED";
> +      case CKR_KEY_NOT_WRAPPABLE:            return "
> CKR_KEY_NOT_WRAPPABLE";
> +      case CKR_KEY_UNEXTRACTABLE:            return "
> CKR_KEY_UNEXTRACTABLE";
> +      case CKR_MECHANISM_INVALID:            return "
> CKR_MECHANISM_INVALID";
> +      case CKR_MECHANISM_PARAM_INVALID:              return "
> CKR_MECHANISM_PARAM_INVALID";
> +      case CKR_OBJECT_HANDLE_INVALID:                return "
> CKR_OBJECT_HANDLE_INVALID";
> +      case CKR_OPERATION_ACTIVE:             return "
> CKR_OPERATION_ACTIVE";
> +      case CKR_OPERATION_NOT_INITIALIZED:    return "
> CKR_OPERATION_NOT_INITIALIZED";
> +      case CKR_PIN_INCORRECT:                        return "
> CKR_PIN_INCORRECT";
> +      case CKR_PIN_INVALID:                  return "
> CKR_PIN_INVALID";
> +      case CKR_PIN_LEN_RANGE:                        return "
> CKR_PIN_LEN_RANGE";
> +      case CKR_PIN_EXPIRED:                  return "
> CKR_PIN_EXPIRED";
> +      case CKR_PIN_LOCKED:                   return "
> CKR_PIN_LOCKED";
> +      case CKR_SESSION_CLOSED:                       return "
> CKR_SESSION_CLOSED";
> +      case CKR_SESSION_COUNT:                        return "
> CKR_SESSION_COUNT";
> +      case CKR_SESSION_HANDLE_INVALID:               return "
> CKR_SESSION_HANDLE_INVALID";
> +      case CKR_SESSION_PARALLEL_NOT_SUPPORTED:       return "
> CKR_SESSION_PARALLEL_NOT_SUPPORTED";
> +      case CKR_SESSION_READ_ONLY:            return "
> CKR_SESSION_READ_ONLY";
> +      case CKR_SESSION_EXISTS:                       return "
> CKR_SESSION_EXISTS";
> +      case CKR_SESSION_READ_ONLY_EXISTS:     return "
> CKR_SESSION_READ_ONLY_EXISTS";
> +      case CKR_SESSION_READ_WRITE_SO_EXISTS: return "
> CKR_SESSION_READ_WRITE_SO_EXISTS";
> +      case CKR_SIGNATURE_INVALID:            return "
> CKR_SIGNATURE_INVALID";
> +      case CKR_SIGNATURE_LEN_RANGE:          return "
> CKR_SIGNATURE_LEN_RANGE";
> +      case CKR_TEMPLATE_INCOMPLETE:          return "
> CKR_TEMPLATE_INCOMPLETE";
> +      case CKR_TEMPLATE_INCONSISTENT:                return "
> CKR_TEMPLATE_INCONSISTENT";
> +      case CKR_TOKEN_NOT_PRESENT:            return "
> CKR_TOKEN_NOT_PRESENT";
> +      case CKR_TOKEN_NOT_RECOGNIZED:         return "
> CKR_TOKEN_NOT_RECOGNIZED";
> +      case CKR_TOKEN_WRITE_PROTECTED:                return "
> CKR_TOKEN_WRITE_PROTECTED";
> +      case CKR_UNWRAPPING_KEY_HANDLE_INVALID:        return "
> CKR_UNWRAPPING_KEY_HANDLE_INVALID";
> +      case CKR_UNWRAPPING_KEY_SIZE_RANGE:    return "
> CKR_UNWRAPPING_KEY_SIZE_RANGE";
> +      case CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT:return "
> CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT";
> +      case CKR_USER_ALREADY_LOGGED_IN:               return "
> CKR_USER_ALREADY_LOGGED_IN";
> +      case CKR_USER_NOT_LOGGED_IN:           return "
> CKR_USER_NOT_LOGGED_IN";
> +      case CKR_USER_PIN_NOT_INITIALIZED:     return "
> CKR_USER_PIN_NOT_INITIALIZED";
> +      case CKR_USER_TYPE_INVALID:            return "
> CKR_USER_TYPE_INVALID";
> +      case CKR_USER_ANOTHER_ALREADY_LOGGED_IN:       return "
> CKR_USER_ANOTHER_ALREADY_LOGGED_IN";
> +      case CKR_USER_TOO_MANY_TYPES:          return "
> CKR_USER_TOO_MANY_TYPES";
> +      case CKR_WRAPPED_KEY_INVALID:          return "
> CKR_WRAPPED_KEY_INVALID";
> +      case CKR_WRAPPED_KEY_LEN_RANGE:                return "
> CKR_WRAPPED_KEY_LEN_RANGE";
> +      case CKR_WRAPPING_KEY_HANDLE_INVALID:  return "
> CKR_WRAPPING_KEY_HANDLE_INVALID";
> +      case CKR_WRAPPING_KEY_SIZE_RANGE:              return "
> CKR_WRAPPING_KEY_SIZE_RANGE";
> +      case CKR_WRAPPING_KEY_TYPE_INCONSISTENT:       return "
> CKR_WRAPPING_KEY_TYPE_INCONSISTENT";
> +      case CKR_RANDOM_SEED_NOT_SUPPORTED:    return "
> CKR_RANDOM_SEED_NOT_SUPPORTED";
> +      case CKR_RANDOM_NO_RNG:                        return "
> CKR_RANDOM_NO_RNG";
> +      case CKR_BUFFER_TOO_SMALL:             return "
> CKR_BUFFER_TOO_SMALL";
> +      case CKR_SAVED_STATE_INVALID:          return "
> CKR_SAVED_STATE_INVALID";
> +      case CKR_INFORMATION_SENSITIVE:                return "
> CKR_INFORMATION_SENSITIVE";
> +      case CKR_STATE_UNSAVEABLE:             return "
> CKR_STATE_UNSAVEABLE";
> +      case CKR_CRYPTOKI_NOT_INITIALIZED:     return "
> CKR_CRYPTOKI_NOT_INITIALIZED";
> +      case CKR_CRYPTOKI_ALREADY_INITIALIZED: return "
> CKR_CRYPTOKI_ALREADY_INITIALIZED";
> +      case CKR_MUTEX_BAD:                    return "
> CKR_MUTEX_BAD";
> +      case CKR_MUTEX_NOT_LOCKED:             return "
> CKR_MUTEX_NOT_LOCKED";
> +      default:                                       return "
> UNKNOWN"; }
>  }
> 
> -
> -//
> -//
> -void show_error( char *str, CK_RV rc )
> -{
> -   printf("%s returned:  %d (0x%0x)", str, (int)rc, (unsigned
> int)rc );
> -   process_ret_code( rc );
> -   printf("\n");
> -}
> -
> -
>  //
>  //
>  void print_hex( CK_BYTE *buf, CK_ULONG len )
> diff --git a/testcases/include/regress.h b/testcases/include/regress.h
> index 375d6fb..0a9db3e 100755
> --- a/testcases/include/regress.h
> +++ b/testcases/include/regress.h
> @@ -27,7 +27,7 @@
>  #define GetSystemTime(x) ftime((x))
> 
>  void process_time(SYSTEMTIME t1, SYSTEMTIME t2);
> -void process_ret_code( CK_RV rc );
> +char *process_ret_code( CK_RV rc );
>  int  do_GetInfo(void);
>  void show_error( char *str, CK_RV rc );
>  void print_hex( CK_BYTE *buf, CK_ULONG len );
> @@ -84,4 +84,11 @@ int get_user_pin(CK_BYTE_PTR);
>                                          ## __VA_ARGS__)
> 
> 
> +/* show_error(char *_str, unsigned long _rc); */
> +#define show_error(_str,
> _rc)                                          \
> +     fprintf(stderr, "%s:%d: %s returned %lu (0x%lx)
> %s\n",                \
> +             __FILE__, __LINE__, _str, _rc,
> _rc,                  \
> +             process_ret_code(_rc))
> +
> +
>  #endif
> diff --git a/testcases/rsa_test/rsa_thread_test.c
> b/testcases/rsa_test/rsa_thread_test.c index 1a477a9..2770f0d 100755
> --- a/testcases/rsa_test/rsa_thread_test.c
> +++ b/testcases/rsa_test/rsa_thread_test.c
> @@ -92,7 +92,6 @@ unsigned int THREADCNT=NUMTHREADS;
> 
> 
>  int  do_EncryptRSA_PKCS(int);
> -void show_error( char *, CK_RV );
> 
> 
>  // Fill this one in..
> 
> ------------------------------------------------------------------------------
> The Palm PDK Hot Apps Program offers developers who use the
> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
> of $1 Million in cash or HP Products. Visit us here for more details:
> http://p.sf.net/sfu/dev2dev-palm
> _______________________________________________
> Opencryptoki-tech mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opencryptoki-tech



-- 
Klaus Heinrich Kiwi | [email protected] | http://blog.klauskiwi.com
Open Source Security blog :     http://www.ratliff.net/blog
IBM Linux Technology Center :   http://www.ibm.com/linux/ltc

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Opencryptoki-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opencryptoki-tech

Reply via email to