Esempio n. 1
0
        /// <summary>Returns the first subkey with the function matching the flag.</summary>
        public PgpSignature GetSubkey(PgpKeyFlags.nFlags eFlag)
        {
            PgpSignature ReturnSubkey = null;

            if (_ltSubkeys != null)
            {
                ReturnSubkey = _ltSubkeys.Find(s => (s.eKeyFlags & eFlag) != 0);
            }

            return(ReturnSubkey);
        }
Esempio n. 2
0
        /// <summary></summary>
        private nTranslatedKeyFlags TranslateKeyFlags()
        {
            PgpKeyFlags.nFlags  eTranslateFrom = eKeyFlags;
            nTranslatedKeyFlags eReturn        = nTranslatedKeyFlags.None;

            if (_PrivateKeyPacket != null)
            {
                if ((eTranslateFrom & PgpKeyFlags.nFlags.Certify) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.Certify;
                }

                if ((eTranslateFrom & PgpKeyFlags.nFlags.Sign) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.Sign;
                }

                if ((eTranslateFrom & PgpKeyFlags.nFlags.Encrypt) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.Decrypt;
                }

                if ((eTranslateFrom & PgpKeyFlags.nFlags.Authenticate) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.Authenticate;
                }
            }

            if (_PublicKeyPacket != null)
            {
                if ((eTranslateFrom & PgpKeyFlags.nFlags.Certify) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.VerifyCertificates;
                }

                if ((eTranslateFrom & PgpKeyFlags.nFlags.Sign) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.VerifySignatures;
                }

                if ((eTranslateFrom & PgpKeyFlags.nFlags.Encrypt) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.Encrypt;
                }

                if ((eTranslateFrom & PgpKeyFlags.nFlags.Authenticate) != PgpKeyFlags.nFlags.None)
                {
                    eReturn |= nTranslatedKeyFlags.VerifyAuthenticity;
                }
            }

            return(eReturn);
        }
Esempio n. 3
0
        public void AddPublicKey(ISlotInfo SlotInfo, byte[] abId, PgpKeyFlags.nFlags eKeyFlags, byte[] abModulus, byte[] abExponent)
        {
            PgpSignature NewSignature = new PgpSignature(SlotInfo, abId, eKeyFlags, abModulus, abExponent, _Cryptography);

            if (NewSignature.eStatus == PgpPacketBase.nStatus.OK)
            {
                _eType     = nType.Public;
                _sSlotName = NewSignature.PublicKeyPacket.sSlotDescription.Replace("Nitrokey Nitrokey", "Nitrokey").Replace(" 0", "");   // cosmetics
                _ltSubkeys.Add(NewSignature);
                SortSubkeys();
            }
        }
Esempio n. 4
0
        public PgpSignature(ISlotInfo SlotInfo, byte[] abId, PgpKeyFlags.nFlags eKeyFlags, byte[] abModulus, byte[] abExponent, EncryptionServices Cryptography) : base(nPacketTag.Signature)
        {
            PgpSignatureSubpacket NewSubpacket;

            Initialise((eKeyFlags & PgpKeyFlags.nFlags.Sign) == 0 ? nSignatureType.SubkeyBinding : nSignatureType.PositiveCertification);

            if ((SlotInfo == null) || (abId == null) || (abModulus == null) || (abExponent == null) || (Cryptography == null))
            {
                _eStatus = nStatus.MissingArgument;
            }
            else
            {
                _eStatus         = nStatus.OK;
                _Cryptography    = Cryptography;
                _PublicKeyPacket = new PgpPublicKey(SlotInfo, abId, (eKeyFlags & PgpKeyFlags.nFlags.Sign) == 0 ? nPacketTag.PublicSubkey : nPacketTag.PublicKey, DateTime.Now, nPublicKeyAlgorithm.RsaEncryptOrSign, abModulus, abExponent);

                NewSubpacket = new PgpKeyFlags(eKeyFlags);
                _ltSubpackets.Add(NewSubpacket);
                _eTranslatedKeyFlags = TranslateKeyFlags();
            }
        }