/// <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); }
/// <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); }
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(); } }
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(); } }