summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2015-11-13 13:45:48 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2015-11-13 13:45:48 +0700
commit63651253d5f307cae0cb645f34029eb3f10065ec (patch)
treee61f5a35d5755430f7270d24f32ee19a3fc473ea
parentMerge branch 'master' of git.bouncycastle.org:bc-csharp into pcl (diff)
parentInclude basic encode/parse test (diff)
downloadBouncyCastle.NET-ed25519-63651253d5f307cae0cb645f34029eb3f10065ec.tar.xz
Merge branch 'master' of git.bouncycastle.org:bc-csharp into pcl
-rw-r--r--crypto/src/asn1/x9/X962Parameters.cs35
-rw-r--r--crypto/src/asn1/x9/X9ECParameters.cs15
-rw-r--r--crypto/src/crypto/engines/IesEngine.cs2
-rw-r--r--crypto/src/crypto/tls/ServerName.cs13
-rw-r--r--crypto/src/math/BigInteger.cs5
-rw-r--r--crypto/test/src/asn1/test/BitStringTest.cs4
6 files changed, 64 insertions, 10 deletions
diff --git a/crypto/src/asn1/x9/X962Parameters.cs b/crypto/src/asn1/x9/X962Parameters.cs

index 5b7eaa1de..04a5c9cbe 100644 --- a/crypto/src/asn1/x9/X962Parameters.cs +++ b/crypto/src/asn1/x9/X962Parameters.cs
@@ -1,3 +1,5 @@ +using System; + using Org.BouncyCastle.Asn1; namespace Org.BouncyCastle.Asn1.X9 @@ -7,6 +9,34 @@ namespace Org.BouncyCastle.Asn1.X9 { private readonly Asn1Object _params; + public static X962Parameters GetInstance( + object obj) + { + if (obj == null || obj is X962Parameters) + { + return (X962Parameters)obj; + } + + if (obj is Asn1Object) + { + return new X962Parameters((Asn1Object)obj); + } + + if (obj is byte[]) + { + try + { + return new X962Parameters(Asn1Object.FromByteArray((byte[])obj)); + } + catch (Exception e) + { + throw new ArgumentException("unable to parse encoded data: " + e.Message, e); + } + } + + throw new ArgumentException("unknown object in getInstance()"); + } + public X962Parameters( X9ECParameters ecParameters) { @@ -30,6 +60,11 @@ namespace Org.BouncyCastle.Asn1.X9 get { return (_params is DerObjectIdentifier); } } + public bool IsImplicitlyCA + { + get { return (_params is Asn1Null); } + } + public Asn1Object Parameters { get { return _params; } diff --git a/crypto/src/asn1/x9/X9ECParameters.cs b/crypto/src/asn1/x9/X9ECParameters.cs
index 2b6b14bcb..0fa343768 100644 --- a/crypto/src/asn1/x9/X9ECParameters.cs +++ b/crypto/src/asn1/x9/X9ECParameters.cs
@@ -20,6 +20,21 @@ namespace Org.BouncyCastle.Asn1.X9 private BigInteger h; private byte[] seed; + public static X9ECParameters GetInstance(Object obj) + { + if (obj is X9ECParameters) + { + return (X9ECParameters)obj; + } + + if (obj != null) + { + return new X9ECParameters(Asn1Sequence.GetInstance(obj)); + } + + return null; + } + public X9ECParameters( Asn1Sequence seq) { diff --git a/crypto/src/crypto/engines/IesEngine.cs b/crypto/src/crypto/engines/IesEngine.cs
index 9139f3ffc..307cc7a80 100644 --- a/crypto/src/crypto/engines/IesEngine.cs +++ b/crypto/src/crypto/engines/IesEngine.cs
@@ -98,7 +98,7 @@ namespace Org.BouncyCastle.Crypto.Engines kdf.Init(kParam); // Ensure that the length of the input is greater than the MAC in bytes - if (inLen <= mac.GetMacSize()) + if (inLen < mac.GetMacSize()) throw new InvalidCipherTextException("Length of input must be greater than the MAC"); inLen -= mac.GetMacSize(); diff --git a/crypto/src/crypto/tls/ServerName.cs b/crypto/src/crypto/tls/ServerName.cs
index 3d1e8f844..d42055b78 100644 --- a/crypto/src/crypto/tls/ServerName.cs +++ b/crypto/src/crypto/tls/ServerName.cs
@@ -1,5 +1,6 @@ using System; using System.IO; +using System.Text; using Org.BouncyCastle.Utilities; @@ -51,10 +52,10 @@ namespace Org.BouncyCastle.Crypto.Tls switch (mNameType) { case Tls.NameType.host_name: - byte[] utf8Encoding = Strings.ToUtf8ByteArray((string)mName); - if (utf8Encoding.Length < 1) + byte[] asciiEncoding = Encoding.ASCII.GetBytes((string)mName); + if (asciiEncoding.Length < 1) throw new TlsFatalAlert(AlertDescription.internal_error); - TlsUtilities.WriteOpaque16(utf8Encoding, output); + TlsUtilities.WriteOpaque16(asciiEncoding, output); break; default: throw new TlsFatalAlert(AlertDescription.internal_error); @@ -78,10 +79,10 @@ namespace Org.BouncyCastle.Crypto.Tls { case Tls.NameType.host_name: { - byte[] utf8Encoding = TlsUtilities.ReadOpaque16(input); - if (utf8Encoding.Length < 1) + byte[] asciiEncoding = TlsUtilities.ReadOpaque16(input); + if (asciiEncoding.Length < 1) throw new TlsFatalAlert(AlertDescription.decode_error); - name = Strings.FromUtf8ByteArray(utf8Encoding); + name = Encoding.ASCII.GetString(asciiEncoding); break; } default: diff --git a/crypto/src/math/BigInteger.cs b/crypto/src/math/BigInteger.cs
index 794f252e8..b35701fb3 100644 --- a/crypto/src/math/BigInteger.cs +++ b/crypto/src/math/BigInteger.cs
@@ -706,10 +706,9 @@ namespace Org.BouncyCastle.Math if (CheckProbablePrime(certainty, random, true)) break; - for (int j = 1; j < magnitude.Length; ++j) + for (int j = 1; j < (magnitude.Length - 1); ++j) { - this.magnitude[j] ^= (random.Next() << 1); - this.mQuote = 0; + this.magnitude[j] ^= random.Next(); if (CheckProbablePrime(certainty, random, true)) return; diff --git a/crypto/test/src/asn1/test/BitStringTest.cs b/crypto/test/src/asn1/test/BitStringTest.cs
index 05be45941..f2ae3de97 100644 --- a/crypto/test/src/asn1/test/BitStringTest.cs +++ b/crypto/test/src/asn1/test/BitStringTest.cs
@@ -19,8 +19,12 @@ namespace Org.BouncyCastle.Asn1.Tests // basic construction DerBitString s1 = new DerBitString(new byte[0], 0); + // check GetBytes() s1.GetBytes(); + // check encoding/decoding + DerBitString derBit = (DerBitString)Asn1Object.FromByteArray(s1.GetEncoded()); + if (!Arrays.AreEqual(s1.GetEncoded(), Hex.Decode("030100"))) { Fail("zero encoding wrong");