KiCad PCB EDA Suite
Loading...
Searching...
No Matches
msw/secrets.cpp
Go to the documentation of this file.
1/*
2* This program source code file is part of KiCad, a free EDA CAD application.
3*
4* Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors.
5*
6* This program is free software: you can redistribute it and/or modify it
7* under the terms of the GNU General Public License as published by the
8* Free Software Foundation, either version 3 of the License, or (at your
9* option) any later version.
10*
11* This program is distributed in the hope that it will be useful, but
12* WITHOUT ANY WARRANTY; without even the implied warranty of
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14* General Public License for more details.
15*
16* You should have received a copy of the GNU General Public License along
17* with this program. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#include <kiplatform/secrets.h>
21
22#include <windows.h>
23#include <wincred.h>
24#include <wx/string.h>
25
26namespace KIPLATFORM
27{
28 namespace SECRETS
29 {
30 bool StoreSecret( const wxString& aService, const wxString& aKey, const wxString& aSecret )
31 {
32 wxString display = aService + wxS( ":" ) + aKey;
33
34 CREDENTIALW cred = { 0 };
35 cred.Type = CRED_TYPE_GENERIC;
36 cred.TargetName = (LPWSTR) display.wc_str();
37 cred.CredentialBlobSize = (DWORD) aSecret.size();
38 cred.CredentialBlob = (LPBYTE) aSecret.utf8_str().data();
39 cred.Persist = CRED_PERSIST_ENTERPRISE;
40
41 return CredWriteW( &cred, 0 );
42 }
43
44 bool GetSecret( const wxString& aService, const wxString& aKey, wxString& aSecret )
45 {
46 wxString display = aService + wxS( ":" ) + aKey;
47
48 CREDENTIALW* cred = nullptr;
49 bool result = CredReadW( display.wc_str(), CRED_TYPE_GENERIC, 0, &cred );
50
51 if( result )
52 {
53 aSecret = wxString::FromUTF8( (const char*) cred->CredentialBlob,
54 cred->CredentialBlobSize );
55 CredFree( cred );
56 }
57
58 return result;
59 }
60 }
61}
bool StoreSecret(const wxString &aService, const wxString &aKey, const wxString &aSecret)
Definition: gtk/secrets.cpp:38
bool GetSecret(const wxString &aService, const wxString &aKey, wxString &aSecret)
Definition: gtk/secrets.cpp:62