Exemple #1
0
        public Certificate(Stream s)
        {
            BinaryReader bR = new BinaryReader(s);

            if (Encoding.ASCII.GetString(bR.ReadBytes(2)) != "CE")
            {
                throw new InvalidCertificateException("Invalid certificate format.");
            }

            _version = bR.ReadByte();
            switch (_version)
            {
            case 1:
                _type = (CertificateType)bR.ReadByte();

                _serialNumber = Encoding.ASCII.GetString(bR.ReadBytes(bR.ReadByte()));
                _issuedTo     = new CertificateProfile(s);
                _capability   = (CertificateCapability)bR.ReadByte();

                _issuedOnUTC  = bR.ReadUInt64();
                _expiresOnUTC = bR.ReadUInt64();

                _publicKeyEncryptionAlgorithm = (AsymmetricEncryptionAlgorithm)bR.ReadByte();
                _publicKeyXML = Encoding.ASCII.GetString(bR.ReadBytes(bR.ReadUInt16()));

                byte rUriLen = bR.ReadByte();
                if (rUriLen > 0)
                {
                    _revocationUri = new Uri(Encoding.UTF8.GetString(bR.ReadBytes(rUriLen)));
                }

                if (s.ReadByte() == 1)
                {
                    _issuerSignature = new Signature(s);
                }

                break;

            default:
                throw new InvalidCertificateException("Certificate format version not supported.");
            }
        }
Exemple #2
0
        public Certificate(CertificateType type, string serialNumber, CertificateProfile issuedTo, CertificateCapability capability, DateTime issuedOnUTC, DateTime expiresOnUTC, AsymmetricEncryptionAlgorithm publicKeyEncryptionAlgorithm, string publicKeyXML)
        {
            if (issuedOnUTC > expiresOnUTC)
            {
                throw new CryptoException("Invalid issue or expiry date. Issue date is greater than expiry date.");
            }

            _version = 1;
            _type    = type;

            _serialNumber = serialNumber;
            _issuedTo     = issuedTo;
            _capability   = capability;

            _issuedOnUTC  = Convert.ToUInt64((issuedOnUTC - _epoch).TotalSeconds);
            _expiresOnUTC = Convert.ToUInt64((expiresOnUTC - _epoch).TotalSeconds);

            _publicKeyEncryptionAlgorithm = publicKeyEncryptionAlgorithm;
            _publicKeyXML = publicKeyXML;
        }