Describes object identifier for DER encoding
Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CipherDigitalSignature"/> class.
        /// </summary>
        /// <param name="oid">The object identifier.</param>
        /// <param name="cipher">The cipher.</param>
        protected CipherDigitalSignature(ObjectIdentifier oid, AsymmetricCipher cipher)
        {
            if (cipher == null)
                throw new ArgumentNullException("cipher");

            _cipher = cipher;
            _oid = oid;
        }
Пример #2
0
        /// <summary>
        /// Writes OBJECTIDENTIFIER data into internal buffer.
        /// </summary>
        /// <param name="identifier">The identifier.</param>
        public void Write(ObjectIdentifier identifier)
        {
            var temp = new ulong[identifier.Identifiers.Length - 1];
            temp[0] = identifier.Identifiers[0] * 40 + identifier.Identifiers[1];
            Buffer.BlockCopy(identifier.Identifiers, 2 * sizeof(ulong), temp, 1 * sizeof(ulong), (identifier.Identifiers.Length - 2) * sizeof(ulong));
            //Array.Copy(identifier.Identifiers, 2, temp, 1, identifier.Identifiers.Length - 2);
            var bytes = new List<byte>();
            foreach (var subidentifier in temp)
            {
                var item = subidentifier;
                var buffer = new byte[8];
                var bufferIndex = buffer.Length - 1;

                var current = (byte)(item & 0x7F);
                do
                {
                    buffer[bufferIndex] = current;
                    if (bufferIndex < buffer.Length - 1)
                        buffer[bufferIndex] |= (byte)0x80;
                    item >>= 7;
                    current = (byte)(item & 0x7F);
                    bufferIndex--;
                }
                while (current > 0);

                for (int i = bufferIndex + 1; i < buffer.Length; i++)
                {
                    bytes.Add(buffer[i]);
                }
            }

            this._data.Add(OBJECTIDENTIFIER);
            var length = this.GetLength(bytes.Count);
            this.WriteBytes(length);
            this.WriteBytes(bytes);
        }
Пример #3
0
 public void ObjectIdentifierConstructorTest()
 {
     ulong[] identifiers = null; // TODO: Initialize to an appropriate value
     ObjectIdentifier target = new ObjectIdentifier(identifiers);
     Assert.Inconclusive("TODO: Implement code to verify target");
 }
Пример #4
0
 public void WriteTest4()
 {
     DerData target = new DerData(); // TODO: Initialize to an appropriate value
     ObjectIdentifier identifier = new ObjectIdentifier(); // TODO: Initialize to an appropriate value
     target.Write(identifier);
     Assert.Inconclusive("A method that does not return a value cannot be verified.");
 }