Example #1
0
            script_app::script_app(
                    app_ptr app, 
                    app_service_ptr as,
                    s::conversation_service_ptr conversation_s,
                    s::conversation_ptr conversation) :
                generic_app{},
                _from_id{conversation->user_service()->user().info().id()},
                _id{u::uuid()},
                _conversation_service{conversation_s},
                _conversation{conversation},
                _app{app},
                _app_service{as}
            {
                REQUIRE(conversation_s);
                REQUIRE(conversation);
                REQUIRE(app);
                REQUIRE(as);

                init();

                INVARIANT(_api);
                INVARIANT(_conversation_service);
                INVARIANT(_conversation);
                INVARIANT(_app);
                INVARIANT(_app_service);
                INVARIANT_FALSE(_id.empty());
            }
Example #2
0
            script_app::script_app(
                    const std::string& from_id, 
                    const std::string& id, 
                    app_ptr app, app_service_ptr as, 
                    s::conversation_service_ptr conversation_s,
                    s::conversation_ptr conversation) :
                generic_app{},
                _from_id{from_id},
                _id{id},
                _conversation_service{conversation_s},
                _conversation{conversation},
                _app{app},
                _app_service{as}
            {
                REQUIRE(conversation_s);
                REQUIRE(conversation);
                REQUIRE(app);
                REQUIRE(as);
                REQUIRE_FALSE(id.empty());

                init();

                INVARIANT(_api);
                INVARIANT(_conversation_service);
                INVARIANT(_conversation);
                INVARIANT(_app);
                INVARIANT(_app_service);
                INVARIANT_FALSE(_id.empty());
            }
Example #3
0
        public_key::public_key(const public_key& pk) : _ks(pk._ks), _k{}
        {
            if(!pk._k) return;

            set(pk.key());

            INVARIANT(_k);
            INVARIANT_FALSE(_ks.empty());
        }
Example #4
0
        public_key::public_key(const std::string& key) : 
            _ks(key)
        {
            REQUIRE_FALSE(key.empty());

            set(key);

            INVARIANT(_k);
            INVARIANT_FALSE(_ks.empty());
        }
Example #5
0
        bool public_key::verify(const util::bytes& msg, const util::bytes& sig) const
        {
            INVARIANT(_k);
            INVARIANT_FALSE(_ks.empty());
            u::mutex_scoped_lock l(BOTAN_MUTEX);

            b::PK_Verifier v{*_k, EMSA_SCHEME};
            return v.verify_message(
                    reinterpret_cast<const unsigned char*>(msg.data()), msg.size(),
                    reinterpret_cast<const unsigned char*>(sig.data()), sig.size());
        }
Example #6
0
        void public_key::set(const std::string& key) 
        {
            REQUIRE_FALSE(key.empty());
            u::mutex_scoped_lock l(BOTAN_MUTEX);

            b::DataSource_Memory ds{reinterpret_cast<const b::byte*>(&_ks[0]), _ks.size()};
            _k.reset(b::X509::load_key(ds));

            INVARIANT(_k);
            INVARIANT_FALSE(_ks.empty());
        }
Example #7
0
        u::bytes public_key::encrypt(const u::bytes& b) const
        {
            INVARIANT(_k);
            INVARIANT_FALSE(_ks.empty());
            u::mutex_scoped_lock l(BOTAN_MUTEX);

            init_rng();
            CHECK(RNG);

            std::stringstream rs;

            b::PK_Encryptor_EME e{*_k, EME_SCHEME};

            size_t advance = 0;
            while(advance < b.size())
            {
                size_t size = std::min(e.maximum_input_size(), b.size()-advance);
                auto c = e.encrypt(reinterpret_cast<const unsigned char*>(b.data())+advance, size, *RNG);
                u::bytes bs{std::begin(c), std::end(c)};
                rs << bs;
                advance+=size;
            }
            return u::to_bytes(rs.str());
        }
Example #8
0
 const util::bytes& dh_secret::public_value() const
 {
     u::mutex_scoped_lock l(_mutex);
     INVARIANT_FALSE(_pub_value.empty());
     return _pub_value;
 }
Example #9
0
 public_key::public_key(const private_key& pkey) : 
     public_key(pkey.public_key()) 
 {
     INVARIANT(_k);
     INVARIANT_FALSE(_ks.empty());
 }