|
|
Знаете ли Вы, что ... | |
![]() |
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :) |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
.NET & ASP.NET Вопросы программирования .NET, ASP.NET, Web Services и других WEB-технологий .NET. |
Ответить |
|
Опции темы | Опции просмотра |
|
![]() |
#1 | ||
CAS (Code access security) problem occur when i want to implement StrongNameIdentityPermissionAttribute on my class/assembly. It always give me successful permission even without having public key.
Sample DLL Code Код:
using System; using System.Collections.Generic; using System.Text; using System.Security.Permissions; namespace SampleClass { [StrongNameIdentityPermission(SecurityAction.Demand, PublicKey = "0024000004800000940000000602000000240000525341310004000001000100515bd67fd29477e06c5cddea9c9ef2a85579de908e8141784d22e4822b0c16586072a02d75e490a6621601c637b821de9009951ff8a220654aa3ddc62c0a5da80f1f629760ff194dd9dc3c1e69436e04ff870dc5657795aa9c7434e499bcc504150fb6e0100e6a047bae1de2a01c26d0027898ecfcec6e5fd747d449a8493399")] public class Class1 { public string MySampleValue = ""; public Class1(string SampleValue) { try { MySampleValue = SampleValue; } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } Код:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Security.Permissions; using SampleClass; using System.Security; namespace SampleApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Encoding enc = Encoding.Default; //StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob(enc.GetBytes("0024000004800000940000000602000000240000525341310004000001000100515bd67fd29477e06c5cddea9c9ef2a85579de908e8141784d22e4822b0c16586072a02d75e490a6621601c637b821de9009951ff8a220654aa3ddc62c0a5da80f1f629760ff194dd9dc3c1e69436e04ff870dc5657795aa9c7434e499bcc504150fb6e0100e6a047bae1de2a01c26d0027898ecfcec6e5fd747d449a8493399")); //StrongNameIdentityPermission per = new StrongNameIdentityPermission(blob, "SampleClass", new Version("1.0.0.0")); SampleClass.Class1 clss = new Class1("Wachach!"); if (clss != null) MessageBox.Show(clss.MySampleValue); else MessageBox.Show("clss is null."); } } }
__________________
Те, кому нечего сказать, обычно говорят вдвое больше. |
|||
|
Ответить |
![]() |
#3 |
TATU
student
Сообщений: 13
+ 5
3/3
– 0
0/0
![]() |
Siz .snk formatli fay hosil qilishingiz va uni AssemblyInfo faylida
saqlashingiz lozim. Masalan: Код:
[assembly: AssemblyKeyFile("filenomi.snk")] Bu faylni("filenomi.snk") hosil qilish uchun .NET Framework SDK dan foydalanasiz. Masalan: Код:
sn -k <filenomi>.snk Keyinroq ushbu classni ishlatish uchunsiz ochiq kalitdan foydalanishingiz kerak.Bu ochiq kalitni olish uchun Secutil.axe kere buladi.Siz hosil qilmoqchi bo'lgan DLL/Assembly nomini ishlatgan holda ochiq kalitni(Public Key) 4iqarib olasiz. Код:
secutil -hex -c -s <sizningdll>.dll > kalit.txt Код:
[StrongNameIdentityPermission(SecurityAction.Demand, PublicKey = "ochiq kalit")] SecurityAction.Demand o'rniga SecurityAction.LinkDemand ni ham qo'llashingiz mumkin. Bu dll ni bowqa loyihalarda qo'llashda loyiha DIRiga yuqoridagi .snk faylni ko'chirib o'tqizish va AssemblyInfoda registrasiya qilish esizdan chiqmasin. Shunda har doim loyiha ochiq kalitdan foydalanib .snk ka orqali sizi klasizga murojaat qila oladi. Shunda kod himoyalanadi. Bu yerda yaxshigina misol bor. http://www.developer.com/img/article...0/Securing.zip |
|
Ответить |
![]() |
#4 |
2 ulugbek,Before answering to this question Did u try yourself?
This works only on .Net Framework 1.1 And I need for .Net FrameWork 2.0 or later. Any comments and ideas will appreciated. Thank You!!! PS. This Forum not breathing ![]()
__________________
Те, кому нечего сказать, обычно говорят вдвое больше. |
|
|
Ответить |
![]() |
#5 |
So I expected I found way myself
![]() In AssemblyInfo.cs put following code regarding your case: Код:
[assembly: InternalsVisibleTo("SampleApp, PublicKey=002400000480000094000000060200000240000525341310004000001000100795F3BFD920B13E0267CA46EAFA218237904BB262A6650CF21F6427BEC72699970F84699111C211C6A32726957A623CBCD73870BE2BA57F6EDC5F169AC369DFFDE58FBC65DEF2D9F9E7628853C7D25FB34F5F1A64873F31777E674E66168F8721F16D96F55336C9766280D032D30B510EB058A065C6FB4AFCDF42327757019AF")] That's all ![]()
__________________
Те, кому нечего сказать, обычно говорят вдвое больше. |
|
|
Ответить |
|