2 // EncryptedKeyIdentifierClause.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2006 Novell, Inc. http://www.novell.com
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System
.Collections
.Generic
;
31 using System
.IdentityModel
.Policy
;
33 namespace System
.IdentityModel
.Tokens
35 public sealed class EncryptedKeyIdentifierClause
: BinaryKeyIdentifierClause
37 public EncryptedKeyIdentifierClause (
38 byte [] encryptedKey
, string encryptionMethod
)
39 : this (encryptedKey
, encryptionMethod
, null)
43 public EncryptedKeyIdentifierClause (
44 byte [] encryptedKey
, string encryptionMethod
,
45 SecurityKeyIdentifier identifier
)
46 : this (encryptedKey
, encryptionMethod
, identifier
, null)
50 public EncryptedKeyIdentifierClause (
51 byte [] encryptedKey
, string encryptionMethod
,
52 SecurityKeyIdentifier identifier
, string carriedKeyName
)
53 : this (encryptedKey
, encryptionMethod
, identifier
, carriedKeyName
, null, 0)
57 public EncryptedKeyIdentifierClause (
58 byte [] encryptedKey
, string encryptionMethod
,
59 SecurityKeyIdentifier identifier
, string carriedKeyName
,
60 byte [] derivationNonce
, int derivationLength
)
61 : base (encryptionMethod
, encryptedKey
, true, derivationNonce
, derivationLength
)
63 this.carried_key_name
= carriedKeyName
;
64 this.identifier
= identifier
;
65 this.enc_method
= encryptionMethod
;
68 string carried_key_name
, enc_method
;
69 SecurityKeyIdentifier identifier
;
71 public string CarriedKeyName
{
72 get { return carried_key_name; }
75 public string EncryptionMethod
{
76 get { return enc_method; }
79 public SecurityKeyIdentifier EncryptingKeyIdentifier
{
80 get { return identifier; }
83 public byte [] GetEncryptedKey ()
88 public bool Matches (byte [] encryptedKey
, string encryptionMethod
, string carriedKeyName
)
90 if (encryptedKey
== null)
91 throw new ArgumentNullException ("encryptedKey");
92 byte [] buf
= GetRawBuffer ();
93 if (encryptionMethod
!= this.enc_method
||
94 carriedKeyName
!= this.carried_key_name
||
95 encryptedKey
.Length
!= buf
.Length
)
97 for (int i
= 0; i
< buf
.Length
; i
++)
98 if (encryptedKey
[i
] != buf
[i
])
103 public override bool Matches (SecurityKeyIdentifierClause clause
)
105 EncryptedKeyIdentifierClause e
=
106 clause
as EncryptedKeyIdentifierClause
;
107 return e
!= null && Matches (e
.GetRawBuffer (), e
.EncryptionMethod
, e
.CarriedKeyName
);
111 public override string ToString ()
113 return base.ToString ();