SOL9 2.0 Class: DataUnprotector

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

Source code

/*
 * DataUnprotector.h 
 * Copyright (c) 2009 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/04/16

#pragma once

#include <sol/crypt/DataProtection.h>

namespace SOL {
    
class DataUnprotector :public DataProtection {

public:
    /**
     * Constructor
     */
    DataUnprotector(HWND hParent=NULL, const wchar_t* prompt=NULL)
    :DataProtection(hParent, prompt) 
    {

    }

public:
    /**
     * Decrypt an protectedData and return it for a outputData.
     * If ui parameter is true, a prompt dialog will be displayed.  
     *
     * @param dwFlags Takes 0 or one of the following values. 
        CRYPTPROTECT_UI_FORBIDDEN
        CRYPTPROTECT_VERIFY_PROTECTION
     */
    
    int unprotect(
        __in DATA_BLOB& protectedData, 
        __out DATA_BLOB& outputData, 
        __out_opt wchar_t**  description=NULL,
        __in_opt bool ui = false,
        __in_opt DATA_BLOB* entropy = NULL,
        __in_opt DWORD dwFlags = 0)
    {
        int rc = NO_ERROR;

        CRYPTPROTECT_PROMPTSTRUCT* pPrompter = NULL;
        if (ui) {
            pPrompter = getPrompter();
        }

        if(!CryptUnprotectData(
                 &protectedData,
            description,
            entropy,                  
            NULL,      // Reserved.
                 pPrompter,
            dwFlags,
            &outputData)) {
    
            rc = GetLastError();
        }
        return rc;
    } 
};

}

Last modified: 19 Dec 2009

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