Esempio n. 1
0
    private PopoPrivKey(Asn1TaggedObject obj)
    {
        tagNo = obj.TagNo;
        switch (tagNo)
        {
        case 0:
            this.obj = DerBitString.GetInstance(obj, isExplicit: false);
            break;

        case 1:
            this.obj = SubsequentMessage.ValueOf(DerInteger.GetInstance(obj, isExplicit: false).Value.IntValue);
            break;

        case 2:
            this.obj = DerBitString.GetInstance(obj, isExplicit: false);
            break;

        case 3:
            this.obj = PKMacValue.GetInstance(obj, isExplicit: false);
            break;

        case 4:
            this.obj = EnvelopedData.GetInstance(obj, explicitly: false);
            break;

        default:
            throw new ArgumentException("unknown tag in PopoPrivKey", "obj");
        }
    }
        public CertificateRequestMessageBuilder SetProofOfPossessionAgreeMac(PKMacValue macValue)
        {
            if (_popSigner != null || _popRaVerified != null || _popoPrivKey != null)
            {
                throw new InvalidOperationException("only one proof of possession allowed");
            }

            this._agreeMac = macValue;
            return(this);
        }
        public ProofOfPossessionSigningKeyBuilder SetPublicKeyMac(PKMacBuilder generator, char[] password)
        {
            IMacFactory fact = generator.Build(password);

            IStreamCalculator calc = fact.CreateCalculator();

            byte[] d = _pubKeyInfo.GetDerEncoded();
            calc.Stream.Write(d, 0, d.Length);
            calc.Stream.Flush();
            BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.Dispose(calc.Stream);

            this._publicKeyMAC = new PKMacValue(
                (AlgorithmIdentifier)fact.AlgorithmDetails,
                new DerBitString(((IBlockResult)calc.GetResult()).Collect()));

            return(this);
        }
        public ProofOfPossessionSigningKeyBuilder setPublicKeyMac(PKMacBuilder generator, char[] password)
        {
            IMacFactory fact = generator.Build(password);

            IStreamCalculator calc = fact.CreateCalculator();

            byte[] d = _pubKeyInfo.GetDerEncoded();
            calc.Stream.Write(d, 0, d.Length);
            calc.Stream.Flush();
            calc.Stream.Close();

            this._publicKeyMAC = new PKMacValue(
                (AlgorithmIdentifier)fact.AlgorithmDetails,
                new DerBitString(((IBlockResult)calc.GetResult()).Collect()));

            return(this);
        }
    private PopoSigningKeyInput(Asn1Sequence seq)
    {
        Asn1Encodable asn1Encodable = seq[0];

        if (asn1Encodable is Asn1TaggedObject)
        {
            Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)asn1Encodable;
            if (asn1TaggedObject.TagNo != 0)
            {
                throw new ArgumentException("Unknown authInfo tag: " + asn1TaggedObject.TagNo, "seq");
            }
            sender = GeneralName.GetInstance(asn1TaggedObject.GetObject());
        }
        else
        {
            publicKeyMac = PKMacValue.GetInstance(asn1Encodable);
        }
        publicKey = SubjectPublicKeyInfo.GetInstance(seq[1]);
    }
 public PopoSigningKeyInput(PKMacValue pkmac, SubjectPublicKeyInfo spki)
 {
     publicKeyMac = pkmac;
     publicKey    = spki;
 }