
Security News
Scaling Socket from Zero to 10,000+ Organizations
Socket CEO Feross Aboukhadijeh shares lessons from scaling a developer security startup to 10,000+ organizations in this founder interview.
seb_elink
Advanced tools
Lightweight Ruby wrapper for communicating with SEB.lv i-bank payment API.
Solves the cryptographic requirements for you.
Bundle or manually install the latest version of the gem:
gem 'seb_elink'
Please note that for consistency in this gem all hash keys are constant-case symbols like :IB_VERSION.
The gem has three elements represented as Ruby classes:
Think of this as the communication adapter. Initialize it with a base64-encoded private key string (the human-readable .pem format). You can store the instance in a constant to reduce processing overhead.
You can pass an optional options hash as the second argument that will specify default values for communications processed by that gateway instance. Useful for setting company-related data just once.
SebElink::Gateway.new(
<privkey string>,
{
IB_SND_ID: "TESTCOMPANY",
IB_NAME: "Test Inc."
}
)
Additionally, you can rewrite values used by the gem pertaining to SEB.lv i-bank, such as their public key, API uri etc. Here's a complete list:
{
IB_VERSION: "001", # which API version to use
IBANK_CERT: "-----BEGIN CERTIFICATE-----..." # public key/cer of SEB.lv, changes rarely
IBANK_API_URI: "https://ibanka.seb.lv/ipc/epakindex.jsp" # where to POST users
}
Instances of SebElink::Gateway have one method for public use:
gateway.ibank_api_uri #=> uri for POSTing intial message to.
Instances represent requests to i-bank, generally for payment.
Initialize these with SebElink::Message.new(gateway_instance, message_code, data_hash)
SEB_LV_GATEWAY = SebElink::Gateway.new(<privkey string>)
message_instance = SebElink::Message.new(SEB_LV_GATEWAY, "0002", {IB_SND_ID: ...})
Please consult message_specs.rb for the full list of data_hash keys.
Instances of SebElink::Message have two methods:
message_instance.to_h
#=> hash of all fields you need to POST to i-bank API uri.
message_instance.digital_signature
#=> outputs the value of :IB_CRC key, the base64-encoded digital signature of the message
Instances represent responses from SEB.lv i-bank server.
Well-formedness is not validated since if digital signature is OK, one would think that the bank adheres to it's own spec.
Initialize these with SebElink::Response.new(gateway_instance, response_body)
Please note that the method name #response is reserved in Rails, use something else for response variable names!
SEB_LV_GATEWAY = SebElink::Gateway.new(<privkey string>)
# in a Rails controller context you can obtain the response_body with:
response_body =
if request.get?
request.query_string
else
request.raw_post
end #=> "IB_SND_ID=TEST..."
response_instance = SebElink::Response.new(SEB_LV_GATEWAY, response_body)
# Please note that the :IB_CRC signature values will often end with "==\n" which, when uri-escaped will be "%3D%3D%0A", pass the response just like that into the initializer
Instances of SebElink::Response have two methods:
response_instance.valid?
#=> true, if the digital signature is OK.
# DO NOT process responses that are invalid, someone has tampered with the values!
response_instance.to_h
#=> {IB_SND_ID: "TEST", ...}
# Will raise if called on an invalid response_instance
# to override this default safety setting, call with to_h(:insecure)
Tests have been written in a documenting manner, so, please,
have a look at the contents of spec/ directory to get a feel of what the gem can do.
Version 001 (current) uses the deprecated SHA-1 hashing algorithm. Let SEB.lv know that v2 that uses SHA-256 is needed.
Bug reports and pull requests are welcome on GitHub at https://github.com/CreativeGS/seb_elink. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The project uses TDD approach to software development, follow these steps to set up:
bundlerspecgem push # to set credentials
rake release
The gem is available as open source under the terms of the BSD-3-Clause License.
Everyone interacting in the SebElink project’s codebases and issue trackers is expected to follow the code of conduct.
FAQs
Unknown package
We found that seb_elink demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh shares lessons from scaling a developer security startup to 10,000+ organizations in this founder interview.

Research
Socket Threat Research maps a rare inside look at OtterCookie’s npm-Vercel-GitHub chain, adding 197 malicious packages and evidence of North Korean operators.

Research
Socket researchers identified a malicious Chrome extension that manipulates Raydium swaps to inject an undisclosed SOL transfer, quietly routing fees to an attacker wallet.