SOL9 2.0 Class: CryptError

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * CryptError.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/03/05

#pragma once

#include <sol/Object.h>
#include <sol/Arg.h>
#include <wincrypt.h>


namespace SOL {

class CryptError :public Object {

public:
    static const TCHAR* getMessage(DWORD errId) {
        const TCHAR* message = _T("Unknown");

        static const Arg errors[] = {

        {_T("NTE_BAD_UID: Bad UID."),
            NTE_BAD_UID},
        {_T("NTE_BAD_HASH: Bad Hash."),    
            NTE_BAD_HASH},
        {_T("NTE_BAD_KEY: Bad Key."), 
            NTE_BAD_KEY},
        {_T("NTE_BAD_LEN: Bad Length."),    
            NTE_BAD_LEN},
        {_T("NTE_BAD_DATA: Bad Data."),    
            NTE_BAD_DATA},
        {_T("NTE_BAD_SIGNATURE: Invalid Signature."), 
            NTE_BAD_SIGNATURE},
        {_T("NTE_BAD_VER: Bad Version of provider."),
            NTE_BAD_VER},
        {_T("NTE_BAD_ALGID: Invalid algorithm specified."),
            NTE_BAD_ALGID},
        {_T("NTE_BAD_FLAGS: Invalid flags specified."),
            NTE_BAD_FLAGS},
        {_T("NTE_BAD_TYPE: Invalid type specified."),
            NTE_BAD_TYPE},
        {_T("NTE_BAD_KEY_STATE: Key not valid for use in specified state."),
            NTE_BAD_KEY_STATE},
        {_T("NTE_BAD_HASH_STATE: Hash not valid for use in specified state."),
            NTE_BAD_HASH_STATE},
        {_T("NTE_NO_KEY: Key does not exist."), 
            NTE_NO_KEY},
        {_T("NTE_NO_MEMORY: Insufficient memory available for the operation."),
            NTE_NO_MEMORY},
        {_T("NTE_EXISTS: Object already exists."),
            NTE_EXISTS},
        {_T("NTE_PERM: Access denied."),
            NTE_PERM},
        {_T("NTE_NOT_FOUND: Object was not found."),
            NTE_NOT_FOUND},
        {_T("NTE_DOUBLE_ENCRYPT: Data already encrypted."),
            NTE_DOUBLE_ENCRYPT},
        {_T("NTE_BAD_PROVIDER: Invalid provider specified."),
            NTE_BAD_PROVIDER},
        {_T("NTE_BAD_PROV_TYPE: Invalid provider type specified."),
            NTE_BAD_PROV_TYPE},
        {_T("NTE_BAD_PUBLIC_KEY: Provider's public key is invalid."),
            NTE_BAD_PUBLIC_KEY},
        {_T("NTE_BAD_KEYSET: Keyset does not exist."),
            NTE_BAD_KEYSET},
        {_T("NTE_PROV_TYPE_NOT_DEF: Provider type not defined."),
            NTE_PROV_TYPE_NOT_DEF},
        {_T("NTE_PROV_TYPE_ENTRY_BAD: Provider type as registered is invalid."),
            NTE_PROV_TYPE_ENTRY_BAD},
        {_T("NTE_KEYSET_NOT_DEF: The keyset is not defined."),
            NTE_KEYSET_NOT_DEF},
        {_T("NTE_KEYSET_ENTRY_BAD: Keyset as registered is invalid."),
            NTE_KEYSET_ENTRY_BAD},
        {_T("NTE_PROV_TYPE_NO_MATCH: Provider type does not match registered value."),
            NTE_PROV_TYPE_NO_MATCH},
        {_T("NTE_SIGNATURE_FILE_BAD: The digital signature file is corrupt."),
            NTE_SIGNATURE_FILE_BAD},
        {_T("NTE_PROVIDER_DLL_FAIL: Provider DLL failed to initialize correctly."),
            NTE_PROVIDER_DLL_FAIL},
        {_T("NTE_PROV_DLL_NOT_FOUND: Provider DLL could not be found."),
            NTE_PROV_DLL_NOT_FOUND},
        {_T("NTE_BAD_KEYSET_PARAM: The Keyset parameter is invalid."),
            NTE_BAD_KEYSET_PARAM},
        {_T("NTE_FAIL: An internal error occurred."),
            NTE_FAIL},
        {_T("NTE_SYS_ERR: A base error occurred."),
            NTE_SYS_ERR},
        {_T("NTE_SILENT_CONTEXT: Provider could not perform the action since the context was acquired as silent."),
            NTE_SILENT_CONTEXT},
        {_T("NTE_TOKEN_KEYSET_STORAGE_FULL: The security token does not have storage space available for an additional container."),
            NTE_TOKEN_KEYSET_STORAGE_FULL},
        {_T("NTE_TEMPORARY_PROFILE: The profile for the user is a temporary profile."),
            NTE_TEMPORARY_PROFILE},
        {_T("NTE_FIXEDPARAMETER: The key parameters could not be set because the CSP uses fixed parameters."),
             NTE_FIXEDPARAMETER},
        {_T("NTE_INVALID_HANDLE: The supplied handle is invalid."),
            NTE_INVALID_HANDLE},
        {_T("NTE_INVALID_PARAMETER: The parameter is incorrect."),
            NTE_INVALID_PARAMETER},
        {_T("NTE_BUFFER_TOO_SMALL: The buffer supplied to a function was too small."),
            NTE_BUFFER_TOO_SMALL},
        {_T("NTE_NOT_SUPPORTED: The requested operation is not supported."),
            NTE_NOT_SUPPORTED},
        {_T("NTE_NO_MORE_ITEMS: No more data is available."),
            NTE_NO_MORE_ITEMS},
        {_T("NTE_BUFFERS_OVERLAP: The supplied buffers overlap incorrectly."),
            NTE_BUFFERS_OVERLAP},
        {_T("NTE_DECRYPTION_FAILURE: The specified data could not be decrypted."),
            NTE_DECRYPTION_FAILURE},
        {_T("NTE_INTERNAL_ERROR: An internal consistency check failed."),
            NTE_INTERNAL_ERROR},
        {_T("NTE_UI_REQUIRED: This operation requires input from the user."),
            NTE_UI_REQUIRED},
        {_T("NTE_HMAC_NOT_SUPPORTED: The cryptographic provider does not support HMAC."),
            NTE_HMAC_NOT_SUPPORTED},
        };

        int num = XtNumber(errors);
        for (int i = 0; i<num; i++) {
            if (errors[i].value == errId) {
                message = errors[i].name;
                break;
            }

        }
        return message;
    }
};

}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.