CASA/c_adlib/ad_kw/KWalletNative.cs
2006-01-18 23:34:21 +00:00

195 lines
4.7 KiB
C#

/***********************************************************************
*
* Copyright (C) 2005-2006 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; version 2.1
* of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* To contact Novell about this file by physical or electronic mail,
* you may find current contact information at www.novell.com.
*
***********************************************************************/
using System;
using System.Text;
using System.Collections.Specialized;
using System.Runtime.InteropServices;
namespace Novell.CASA.DataEngines.KWallet
{
public class kwallet
{
//private static int MAX_NAME_LENGTH = 512;
private const string CPP_LIB = "kwallets_rw";
/*
[DllImport(CPP_LIB)]
public static extern void MyTest(
EnumSecretList enumSecretList
);
*/
[DllImport(CPP_LIB)]
public static extern void Aggregate(
EnumSecretList enumSecretList
);
[DllImport(CPP_LIB)]
public static extern void FreeList();
[DllImport(CPP_LIB)]
public static extern int SetEntry(string walletName, string folderName, int entryType, string keyName, string value, int valueLen);
[DllImport(CPP_LIB)]
public static extern int SetMapEntry(string walletName, string folderName, string keyName, String[,] value, int eleCount);
[DllImport(CPP_LIB)]
public static extern int RemoveEntry(string walletName, string folderName, string keyName);
/*
public static int Try(EnumSecretList enumSecretList)
{
MyTest(enumSecretList);
return 0;
}
*/
public static int AggregateKW(EnumSecretList enumSecretList)
{
Aggregate(enumSecretList);
return 0;
}
public static int FreeResources()
{
FreeList();
return 0;
}
public static int SetSecret(string walletName, string folderName, int entryType, string keyName, string value, int valueLen )
{
return(SetEntry(walletName, folderName, entryType, keyName, value, valueLen ));
}
public static int SetSecret(string walletName, string folderName, string keyName, NameValueCollection nvc)
{
String[,] mapele = new String[nvc.Count,2 ];
for (int i=0; i< nvc.Count; i++)
{
mapele[i,0] = nvc.GetKey(i);
mapele[i,1] = nvc.Get(nvc.GetKey(i));
}
return(SetMapEntry(walletName, folderName, keyName, mapele, nvc.Count));
}
public static int DeleteSecret(string walletName, string folderName, string keyName)
{
return(RemoveEntry(walletName, folderName, keyName));
}
//TBD: All this for future.
/*
[DllImport(CPP_LIB)]
public static extern int ReadSecret
(
[MarshalAs(UnmanagedType.LPStr)]
String walletName,
[MarshalAs(UnmanagedType.LPStr)]
String folderName,
[MarshalAs(UnmanagedType.LPStr)]
String key,
[MarshalAs(UnmanagedType.LPStr)]
Byte[] secretVal
);
[DllImport(CPP_LIB)]
public static extern int WriteSecret
(
[MarshalAs(UnmanagedType.LPStr)]
String walletName,
[MarshalAs(UnmanagedType.LPStr)]
String folderName,
int entryType,
[MarshalAs(UnmanagedType.LPStr)]
String key,
[MarshalAs(UnmanagedType.LPStr)]
Byte[] secret
);
[DllImport(CPP_LIB)]
public static extern void CloseAllWallets();
public static int ReadWallet(String walletName, String folderName, String key, Byte[] secretVal)
{
// Read a secret from wallet
return (ReadSecret(walletName, folderName, key, secretVal));
}
public static int WriteWallet(String walletName, String folderName,int entryType, String key, Byte[] secretVal)
{
// Write secret to wallet
return (WriteSecret( walletName, folderName, entryType, key, secretVal));
}
public static void DisconnectApplication()
{
CloseAllWallets();
}
*/
}
}