init commit
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
|
||||
namespace Org.BouncyCastle.Crypto.Parameters;
|
||||
|
||||
public class SkeinParameters : ICipherParameters
|
||||
{
|
||||
public class Builder
|
||||
{
|
||||
private IDictionary parameters = Platform.CreateHashtable();
|
||||
|
||||
public Builder()
|
||||
{
|
||||
}
|
||||
|
||||
public Builder(IDictionary paramsMap)
|
||||
{
|
||||
IEnumerator enumerator = paramsMap.Keys.GetEnumerator();
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
int num = (int)enumerator.Current;
|
||||
parameters.Add(num, paramsMap[num]);
|
||||
}
|
||||
}
|
||||
|
||||
public Builder(SkeinParameters parameters)
|
||||
{
|
||||
IEnumerator enumerator = parameters.parameters.Keys.GetEnumerator();
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
int num = (int)enumerator.Current;
|
||||
this.parameters.Add(num, parameters.parameters[num]);
|
||||
}
|
||||
}
|
||||
|
||||
public Builder Set(int type, byte[] value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentException("Parameter value must not be null.");
|
||||
}
|
||||
switch (type)
|
||||
{
|
||||
default:
|
||||
throw new ArgumentException("Parameter types must be in the range 0,5..47,49..62.");
|
||||
case 0:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
case 18:
|
||||
case 19:
|
||||
case 20:
|
||||
case 21:
|
||||
case 22:
|
||||
case 23:
|
||||
case 24:
|
||||
case 25:
|
||||
case 26:
|
||||
case 27:
|
||||
case 28:
|
||||
case 29:
|
||||
case 30:
|
||||
case 31:
|
||||
case 32:
|
||||
case 33:
|
||||
case 34:
|
||||
case 35:
|
||||
case 36:
|
||||
case 37:
|
||||
case 38:
|
||||
case 39:
|
||||
case 40:
|
||||
case 41:
|
||||
case 42:
|
||||
case 43:
|
||||
case 44:
|
||||
case 45:
|
||||
case 46:
|
||||
case 47:
|
||||
case 49:
|
||||
case 50:
|
||||
case 51:
|
||||
case 52:
|
||||
case 53:
|
||||
case 54:
|
||||
case 55:
|
||||
case 56:
|
||||
case 57:
|
||||
case 58:
|
||||
case 59:
|
||||
case 60:
|
||||
case 61:
|
||||
case 62:
|
||||
if (type == 4)
|
||||
{
|
||||
throw new ArgumentException("Parameter type " + 4 + " is reserved for internal use.");
|
||||
}
|
||||
parameters.Add(type, value);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public Builder SetKey(byte[] key)
|
||||
{
|
||||
return Set(0, key);
|
||||
}
|
||||
|
||||
public Builder SetPersonalisation(byte[] personalisation)
|
||||
{
|
||||
return Set(8, personalisation);
|
||||
}
|
||||
|
||||
public Builder SetPersonalisation(DateTime date, string emailAddress, string distinguisher)
|
||||
{
|
||||
try
|
||||
{
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
StreamWriter streamWriter = new StreamWriter(memoryStream, Encoding.UTF8);
|
||||
streamWriter.Write(date.ToString("YYYYMMDD", CultureInfo.InvariantCulture));
|
||||
streamWriter.Write(" ");
|
||||
streamWriter.Write(emailAddress);
|
||||
streamWriter.Write(" ");
|
||||
streamWriter.Write(distinguisher);
|
||||
Platform.Dispose(streamWriter);
|
||||
return Set(8, memoryStream.ToArray());
|
||||
}
|
||||
catch (IOException innerException)
|
||||
{
|
||||
throw new InvalidOperationException("Byte I/O failed.", innerException);
|
||||
}
|
||||
}
|
||||
|
||||
public Builder SetPublicKey(byte[] publicKey)
|
||||
{
|
||||
return Set(12, publicKey);
|
||||
}
|
||||
|
||||
public Builder SetKeyIdentifier(byte[] keyIdentifier)
|
||||
{
|
||||
return Set(16, keyIdentifier);
|
||||
}
|
||||
|
||||
public Builder SetNonce(byte[] nonce)
|
||||
{
|
||||
return Set(20, nonce);
|
||||
}
|
||||
|
||||
public SkeinParameters Build()
|
||||
{
|
||||
return new SkeinParameters(parameters);
|
||||
}
|
||||
}
|
||||
|
||||
public const int PARAM_TYPE_KEY = 0;
|
||||
|
||||
public const int PARAM_TYPE_CONFIG = 4;
|
||||
|
||||
public const int PARAM_TYPE_PERSONALISATION = 8;
|
||||
|
||||
public const int PARAM_TYPE_PUBLIC_KEY = 12;
|
||||
|
||||
public const int PARAM_TYPE_KEY_IDENTIFIER = 16;
|
||||
|
||||
public const int PARAM_TYPE_NONCE = 20;
|
||||
|
||||
public const int PARAM_TYPE_MESSAGE = 48;
|
||||
|
||||
public const int PARAM_TYPE_OUTPUT = 63;
|
||||
|
||||
private IDictionary parameters;
|
||||
|
||||
public SkeinParameters()
|
||||
: this(Platform.CreateHashtable())
|
||||
{
|
||||
}
|
||||
|
||||
private SkeinParameters(IDictionary parameters)
|
||||
{
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public IDictionary GetParameters()
|
||||
{
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public byte[] GetKey()
|
||||
{
|
||||
return (byte[])parameters[0];
|
||||
}
|
||||
|
||||
public byte[] GetPersonalisation()
|
||||
{
|
||||
return (byte[])parameters[8];
|
||||
}
|
||||
|
||||
public byte[] GetPublicKey()
|
||||
{
|
||||
return (byte[])parameters[12];
|
||||
}
|
||||
|
||||
public byte[] GetKeyIdentifier()
|
||||
{
|
||||
return (byte[])parameters[16];
|
||||
}
|
||||
|
||||
public byte[] GetNonce()
|
||||
{
|
||||
return (byte[])parameters[20];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user