EzDevInfo.com

sasl interview questions

Top sasl frequently asked interview questions

How to generate an XOAUTH parameter using OAuth2.0 for use with Gmail IMAP protocol?

I have a user authorized to access their gmail through imap using OAuth2.0. I have the OAuth2.0 access token (and refresh token). But I am having trouble figuring out how to map that into an XOAUTH parameter. All the documentation for generating the XOAUTH parameter are written assuming OAuth1.0.

I can follow the sample code make this work with OAuth1.0. But my server is using OAuth2.0 for other things and I want to use the same code.


Source: (StackOverflow)

Security & Authentication: SSL vs SASL

My understanding is that SSL combines an encryption algorithm (like AES, DES, etc.) with a key exchange method (like Diffier-Hellman) to provide secure encryption and identification services between two endpoints on an un-secure network (like the Internet).

My understanding is that SASL is an MD5/Kerberos protocol that pretty much does the same thing.

So my question: what are the pros/cons to choosing both and what scenarios make either more preferable? Basically, I'm looking for some guidelines to follow when choosing SSL or to go with SASL instead. Thanks in advance!


Source: (StackOverflow)

Advertisements

Influence of KRC and SASL on Haskell?

While learning Haskell I took a side road (so to speak) in researching the Kent Recursive Calculator and SASL functional languages. I was immediately struck by the similarities between them and Haskell and since they predate it I wonder if/how they provided influence.

Any information regarding the influence (or lack thereof) of KRC and SASL on Haskell would be much appreciated.


Source: (StackOverflow)

Running the report browser (rb) for SASL error reports whilst in a remote shell

Folks we are now delploying a lot of Erlang instances and we are seeing bugs been thrown and would like to examine them...

Normally we connect to the running instance with a remote shell and get access to an Erlang console that way, but this doesn't work for rb or error messages...

How do I get remote access to my SASL error messages without dropping the server, starting it non-detached and looking at the shell?


Source: (StackOverflow)

Mac OS X 10.10 Yosemite Postfix SASL authentication failed

I followed the step described in the link below to setup my mac to send out email. http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/

It was working fine on my Mac OS X 10.9. But after I upgraded to OS X 10.10. The mail.log showed the following error. What is the problem?

Oct 19 00:28:22 paullam-macbook-pro.local postfix/smtp[30383]: 6B47B8AD4E8: SASL authentication failed; cannot authenticate to server smtp.gmail.com[74.125.68.109]: generic failure
Oct 19 00:28:24 paullam-macbook-pro.local postfix/smtp[30383]: 6B47B8AD4E8: to=<zzpaul@gmail.com>, relay=smtp.gmail.com[74.125.68.108]:587, delay=3.4, delays=0.01/0/3.4/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.gmail.com[74.125.68.108]: generic failure)

Source: (StackOverflow)

Secure this invaluable documentation on using C/C++ with GSSAPI and SASL

I have been working on using GSSAPI in c/c++ applications, for some time now. Obviously I had to google and research a lot. One of the most interesting documentation I discovered was on Sun's old web-site. After Oracle took over Sun, the old web-site is gone, and but somehow this information exists. http://docs.oracle.com/cd/E19253-01/816-4863/index.html Alarmingly, I couldn't find any link to the above url in Oracle's documentation. The content also included a couple of PDF files, which I luckily have preserved on my laptop.

The above URL also has an excellent guide on using SASL with c/c++.

The content referred to some tar file that contained sample source code. As per the current site content this file should be available at: http://www.sun.com/download/products.xml?id=41912db5 But unfortunately I can't locate them on the site now.

The content is an excellent starting point for a c/c++ programmer starting fresh on GSSAPI / Kerberos / PAM / SASL

Looking at Oracle's present site I strongly believe the content is presently left behind "accidentally" and will be soon gone.

Now here's my question to the fantastic hacks that visit stackoverflow:

  1. Can you somehow replicate the content to some place, so that everybody can enjoy it's benefits?
  2. Does anybody have a copy of the tar-ball that I am referring to? and would you be willing to share it?
  3. Where must I upload these PDFs so that everybody can easily benefit?

I think the content is truly invaluable, and I can't think of any other web-source for such painstakingly clear information on using GSSAPI with C/C++. If you can do something about this, please do it now, because I think the above URL will be soon gone too.

My sincere thanks in advance, and I promise you many others will thank you too.

Edit: A bit of hunting around on Oracle's site and I discovered the link to one of the PDF's, but has been given a new name: Oracle Solaris Security for Developers Surely a gem of a reference if you are beginning to use GSSAPI / SASL with c++


Source: (StackOverflow)

SASL LDAP authentication failure

Trying to use SASL AND LDAP to authenticate user in RedHat Linux. So far I've setup the saslauthd service and its up and running. My /etc/saslauthd.conf looks like follows:

ldap_servers: ldaps://test.ldap.server:1234
ldap_use_sasl: yes
ldap_mech: DIGEST-MD5
ldap_auth_method: fastbind
ldap_search_base: Ou=PeopleAuthSrch,DC=abc,DC=com

My /etc/sasl2/smtpd.conf looks like the following:

pwcheck_method: saslauthd
mech_list: plain login

Now when I try to test the authentication with following command:

testsaslauthd -u username -p password -f /var/run/saslauthd/mux

I get 0: NO "authentication failed"

and when i look at the logs it says:

Retrying authentication
do_auth   :auth failure: [user:myuser]  [service=imap] [realm=] [mech=ldap] [reason=unknown]

What am i missing here? thanks in advance!!

UPDATE:

installed OpenLdap to do a search with the following command:

ldapsearch -x -h ldaps://my.ldap.server:port -d8

for ldapsearch command to work i modified /etc/openldap/ldap.conf file as follows:

tls_reqcert allow
TLS_CACERTDIR /home/myuser/cacertss
LDAPTLS_CACERT /home/myuser/cacertss

It returns all the entries but i still cant authenticate using

testsaslauthd -u username -p password -f /var/run/saslauthd/mux

what do i need to do here to get this authenticated?


Source: (StackOverflow)

ldap_sasl_bind_s(GSSAPI) - What should be provided in the credentials BERVAL structure

I'm trying to use the ldap_sasl_bind_s method from the Microsoft LDAP C SDK, with GSSAPI as the authentication mechanism. ldap_sasl_bind_s expects the credentials as a BERVAL structure, which is opaque.

Given a username (or a DN) and a password, how do I get to the BERVAL structure that I'm supposed to pass to ldap_sasl_bind_s?

The examples I've found so far

  • are from other LDAP C SDKs - not the one from Microsoft
  • use ldap_sasl_bind_s when SIMPLE authentication is desired - but I need to use GSSAPI
  • use ldap_sasl_interactive_bind_s when other SASL authentication mechanisms are desired. However, there is no ldap_sasl_interactive_bind_s in the Microsoft SDK.

As a side note, the goal is to be able to bind over SASL to a variety of LDAP servers; for now: ActiveDirectory and OpenLDAP.

Any pointers will be greatly appreciated.


Source: (StackOverflow)

SMTP and OAuth 2

Does .NET support SMTP authentication via OAuth protocol? Basically, I would like to be able to send emails on users' behalves using OAuth access tokens. However, I couldn't find a support for this in the .NET framework.

Google provides some samples for this in other environments but not .NET.


Source: (StackOverflow)

HiveServer2: Thrift SASL related exception when using custom PasswdAuthenticationProvider

I've created a custom implementation of the PasswdAuthenticationProvider interface, based on OAuth2. I think the code is irrelevant for the problem I'm experiencing, nevertheless, it can be found here.

I've configured hive-site.xml with the following properties:

<property>
   <name>hive.server2.authentication</name>
   <value>CUSTOM</value>
</property>
<property>
   <name>hive.server2.custom.authentication.class</name>
   <value>com.telefonica.iot.cosmos.hive.authprovider.OAuth2AuthenticationProviderImpl</value>
</property>

Then I've restarted the Hive service and I've connected a JDBC based remote client with success. This is an example of a successful run found in /var/log/hive/hiveserver2.log:

2016-02-01 11:52:44,515 INFO  [pool-5-thread-5]: authprovider.HttpClientFactory (HttpClientFactory.java:<init>(66)) - Setting max total connections (500)
2016-02-01 11:52:44,515 INFO  [pool-5-thread-5]: authprovider.HttpClientFactory (HttpClientFactory.java:<init>(67)) - Setting default max connections per route (100)
2016-02-01 11:52:44,799 INFO  [pool-5-thread-5]: authprovider.HttpClientFactory (OAuth2AuthenticationProviderImpl.java:Authenticate(65)) - Doing request: GET https://account.lab.fiware.org/user?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1
2016-02-01 11:52:44,800 INFO  [pool-5-thread-5]: authprovider.HttpClientFactory (OAuth2AuthenticationProviderImpl.java:Authenticate(76)) - Response received: {"organizations": [], "displayName": "frb", "roles": [{"name": "provider", "id": "106"}], "app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "email": "frb@tid.es", "id": "frb"}
2016-02-01 11:52:44,801 INFO  [pool-5-thread-5]: authprovider.HttpClientFactory (OAuth2AuthenticationProviderImpl.java:Authenticate(104)) - User frb authenticated
2016-02-01 11:52:44,868 INFO  [pool-5-thread-5]: thrift.ThriftCLIService (ThriftCLIService.java:OpenSession(188)) - Client protocol version: HIVE_CLI_SERVICE_PROTOCOL_V6
2016-02-01 11:52:44,871 INFO  [pool-5-thread-5]: session.SessionState (SessionState.java:start(358)) - No Tez session required at this point. hive.execution.engine=mr.
2016-02-01 11:52:44,873 INFO  [pool-5-thread-5]: session.SessionState (SessionState.java:start(358)) - No Tez session required at this point. hive.execution.engine=mr.

The problem is after that the following error appears in a recurrent manner:

2016-02-01 11:52:48,227 ERROR [pool-5-thread-4]: server.TThreadPoolServer (TThreadPoolServer.java:run(215)) - Error occurred during processing of message.
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:189)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:182)
    at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)
    at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
    ... 4 more
2016-02-01 11:53:18,323 ERROR [pool-5-thread-5]: server.TThreadPoolServer (TThreadPoolServer.java:run(215)) - Error occurred during processing of message.
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:189)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:182)
    at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)
    at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
    ... 4 more

Why? I've seen in several other questions this occurs when using the default value of hive.server2.authentication, i.e. SASL, and the client is not doing the handshake. But in my case, the value of such a property is CUSTOM. I cannot understand it, and any help would be really appreciated.

EDIT 1

I've found there are periodical requests to the HiveServer2... from the HiveServer2 itself! These are the requests that are resulting in Thrift SASL errors:

$ sudo tcpdump -i lo port 10000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
...
...
10:18:48.183469 IP dev-fiwr-bignode-11.hi.inet.ndmp > dev-fiwr-bignode-11.hi.inet.55758: Flags [.], ack 7, win 512, options [nop,nop,TS val 1034162147 ecr 1034162107], length 0
^C
21 packets captured
42 packets received by filter
0 packets dropped by kernel
[fiware-portal@dev-fiwr-bignode-11 ~]$ sudo netstat -nap | grep 55758
tcp        0      0 10.95.76.91:10000           10.95.76.91:55758           CLOSE_WAIT  7190/java           
tcp        0      0 10.95.76.91:55758           10.95.76.91:10000           FIN_WAIT2   -                   
[fiware-portal@dev-fiwr-bignode-11 ~]$ ps -ef | grep 7190
hive      7190     1  1 10:10 ?        00:00:10 /usr/java/jdk1.7.0_71//bin/java -Xmx1024m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/var/log/hadoop/hive -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/lib/hadoop -Dhadoop.id.str=hive -Dhadoop.root.logger=INFO,console -Djava.library.path=:/usr/lib/hadoop/lib/native/Linux-amd64-64:/usr/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx1024m -Xmx4096m -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/lib/hive/lib/hive-service-0.13.0.2.1.7.0-784.jar org.apache.hive.service.server.HiveServer2 -hiveconf hive.metastore.uris=" " -hiveconf hive.log.file=hiveserver2.log -hiveconf hive.log.dir=/var/log/hive
1011     14158 12305  0 10:19 pts/1    00:00:00 grep 7190

Any idea?

EDIT 2

More research about the connections sent from HiveServer2 to HiveServer2. Data packets always sent 5 bytes, the following ones (hexadecimal): 22 41 30 30 31

Any idea about these connections?


Source: (StackOverflow)

Hadoop: Python client driver for HiveServer2 fails to install

I am trying to install a Python client driver for HiveServer2: https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2#SettingUpHiveServer2-PythonClientDriver

Installations says that: "A Python client driver for HiveServer2 is available at https://github.com/BradRuderman/pyhs2 It includes all the required packages such as SASL and Thrift wrappers".

Yet, running pip install pyhs2 fails on SASL compilation (see below). I have Hadoop 2.2.0 installed and working on localhost. Please help, to install Python client.

[root@localhost /]# pip install pyhs2
Requirement already satisfied (use --upgrade to upgrade): pyhs2 in /usr/lib/python2.6/site-packages
Downloading/unpacking sasl (from pyhs2)
  Downloading sasl-0.1.3.tar.gz
  Running setup.py (path:/tmp/pip_build_root/sasl/setup.py) egg_info for package sasl
Downloading/unpacking thrift (from pyhs2)
  Downloading thrift-0.9.1.tar.gz
  Running setup.py (path:/tmp/pip_build_root/thrift/setup.py) egg_info for package thrift
Installing collected packages: sasl, thrift
  Running setup.py install for sasl
    building '_saslwrapper' extension
                                                                                                                                                                                                                                                                                                                                                                    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Isasl -I/usr/include/python2.6 -c sasl/saslwrapper.cpp -o build/temp.linux-x86_64-2.6/sasl/saslwrapper.o
sasl/saslwrapper.cpp:21:23: error: sasl/sasl.h: No such file or directory
sasl/saslwrapper.cpp:51: error: ‘sasl_interact_t’ has not been declared
sasl/saslwrapper.cpp:54: error: ‘sasl_conn_t’ has not been declared
sasl/saslwrapper.cpp:54: error: ‘sasl_secret_t’ has not been declared
sasl/saslwrapper.cpp:57: error: ISO C++ forbids declaration of ‘sasl_conn_t’ with no type
sasl/saslwrapper.cpp:57: error: expected ‘;’ before ‘*’ token
sasl/saslwrapper.cpp:58: error: ‘sasl_callback_t’ does not name a type
sasl/saslwrapper.cpp:71: error: ISO C++ forbids declaration of ‘sasl_secret_t’ with no type
sasl/saslwrapper.cpp:71: error: expected ‘;’ before ‘*’ token
sasl/saslwrapper.cpp: In constructor ‘saslwrapper::ClientImpl::ClientImpl()’:
sasl/saslwrapper.cpp:35: error: class ‘saslwrapper::ClientImpl’ does not have any field named ‘conn’
sasl/saslwrapper.cpp:35: error: class ‘saslwrapper::ClientImpl’ does not have any field named ‘secret’
sasl/saslwrapper.cpp: In destructor ‘saslwrapper::ClientImpl::~ClientImpl()’:
sasl/saslwrapper.cpp:36: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:36: error: ‘sasl_dispose’ was not declared in this scope
sasl/saslwrapper.cpp:36: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘void saslwrapper::ClientImpl::lastCallback()’:
sasl/saslwrapper.cpp:49: error: ‘SASL_CB_LIST_END’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::init()’:
sasl/saslwrapper.cpp:83: error: ‘sasl_client_init’ was not declared in this scope
sasl/saslwrapper.cpp:84: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:85: error: ‘sasl_errstring’ was not declared in this scope
sasl/saslwrapper.cpp:91: error: ‘SASL_CB_GETREALM’ was not declared in this scope
sasl/saslwrapper.cpp:93: error: ‘SASL_CB_USER’ was not declared in this scope
sasl/saslwrapper.cpp:94: error: ‘SASL_CB_AUTHNAME’ was not declared in this scope
sasl/saslwrapper.cpp:97: error: ‘SASL_CB_PASS’ was not declared in this scope
sasl/saslwrapper.cpp:99: error: ‘SASL_CB_PASS’ was not declared in this scope
sasl/saslwrapper.cpp:107: error: ‘SASL_NEED_PROXY’ was not declared in this scope
sasl/saslwrapper.cpp:109: error: ‘callbacks’ was not declared in this scope
sasl/saslwrapper.cpp:109: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:109: error: ‘sasl_client_new’ was not declared in this scope
sasl/saslwrapper.cpp:110: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:111: error: ‘sasl_errstring’ was not declared in this scope
sasl/saslwrapper.cpp:115: error: ‘sasl_security_properties_t’ was not declared in this scope
sasl/saslwrapper.cpp:115: error: expected ‘;’ before ‘secprops’
sasl/saslwrapper.cpp:117: error: ‘secprops’ was not declared in this scope
sasl/saslwrapper.cpp:124: error: ‘SASL_SEC_PROPS’ was not declared in this scope
sasl/saslwrapper.cpp:124: error: ‘sasl_setprop’ was not declared in this scope
sasl/saslwrapper.cpp:125: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:127: error: ‘sasl_dispose’ was not declared in this scope
sasl/saslwrapper.cpp:133: error: ‘SASL_AUTH_EXTERNAL’ was not declared in this scope
sasl/saslwrapper.cpp:134: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:136: error: ‘sasl_dispose’ was not declared in this scope
sasl/saslwrapper.cpp:141: error: ‘SASL_SSF_EXTERNAL’ was not declared in this scope
sasl/saslwrapper.cpp:142: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:144: error: ‘sasl_dispose’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::setAttr(const std::string&, const std::string&)’:
sasl/saslwrapper.cpp:163: error: ‘secret’ was not declared in this scope
sasl/saslwrapper.cpp:164: error: ‘sasl_secret_t’ was not declared in this scope
sasl/saslwrapper.cpp:164: error: expected primary-expression before ‘)’ token
sasl/saslwrapper.cpp:164: error: expected ‘;’ before ‘malloc’
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::start(const std::string&, saslwrapper::output_string&, saslwrapper::output_string&)’:
sasl/saslwrapper.cpp:199: error: ‘sasl_interact_t’ was not declared in this scope
sasl/saslwrapper.cpp:199: error: ‘prompt’ was not declared in this scope
sasl/saslwrapper.cpp:205: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:205: error: ‘sasl_client_start’ was not declared in this scope
sasl/saslwrapper.cpp:206: error: ‘SASL_INTERACT’ was not declared in this scope
sasl/saslwrapper.cpp:208: error: ‘SASL_INTERACT’ was not declared in this scope
sasl/saslwrapper.cpp:209: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:209: error: ‘SASL_CONTINUE’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::step(const std::string&, saslwrapper::output_string&)’:
sasl/saslwrapper.cpp:222: error: ‘sasl_interact_t’ was not declared in this scope
sasl/saslwrapper.cpp:222: error: ‘prompt’ was not declared in this scope
sasl/saslwrapper.cpp:227: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:227: error: ‘sasl_client_step’ was not declared in this scope
sasl/saslwrapper.cpp:228: error: ‘SASL_INTERACT’ was not declared in this scope
sasl/saslwrapper.cpp:230: error: ‘SASL_INTERACT’ was not declared in this scope
sasl/saslwrapper.cpp:231: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp:231: error: ‘SASL_CONTINUE’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::encode(const std::string&, saslwrapper::output_string&)’:
sasl/saslwrapper.cpp:244: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:244: error: ‘sasl_encode’ was not declared in this scope
sasl/saslwrapper.cpp:245: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::decode(const std::string&, saslwrapper::output_string&)’:
sasl/saslwrapper.cpp:265: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:265: error: ‘sasl_decode’ was not declared in this scope
sasl/saslwrapper.cpp:266: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::getUserId(saslwrapper::output_string&)’:
sasl/saslwrapper.cpp:282: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:282: error: ‘SASL_USERNAME’ was not declared in this scope
sasl/saslwrapper.cpp:282: error: ‘sasl_getprop’ was not declared in this scope
sasl/saslwrapper.cpp:283: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘bool saslwrapper::ClientImpl::getSSF(saslwrapper::output_int*)’:
sasl/saslwrapper.cpp:294: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:294: error: ‘SASL_SSF’ was not declared in this scope
sasl/saslwrapper.cpp:294: error: ‘sasl_getprop’ was not declared in this scope
sasl/saslwrapper.cpp:295: error: ‘SASL_OK’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘void saslwrapper::ClientImpl::addCallback(long unsigned int, void*)’:
sasl/saslwrapper.cpp:311: error: ‘callbacks’ was not declared in this scope
sasl/saslwrapper.cpp: In member function ‘void saslwrapper::ClientImpl::setError(const std::string&, int, const std::string&, const std::string&)’:
sasl/saslwrapper.cpp:323: error: ‘conn’ was not declared in this scope
sasl/saslwrapper.cpp:324: error: ‘sasl_errdetail’ was not declared in this scope
sasl/saslwrapper.cpp:326: error: ‘sasl_errstring’ was not declared in this scope
sasl/saslwrapper.cpp: At global scope:
sasl/saslwrapper.cpp:338: error: variable or field ‘interact’ declared void
sasl/saslwrapper.cpp:338: error: ‘sasl_interact_t’ was not declared in this scope
sasl/saslwrapper.cpp:338: error: ‘prompt’ was not declared in this scope
error: command 'gcc' failed with exit status 1

Source: (StackOverflow)

SMTP with CRAM-MD5 in Java

I need to send email through an (external) SMTP server from Java however this server will only accept CRAM-MD5 authentication, which is not supported by JavaMail.

What would be a good way to get these emails to send? (It must be in Java.)


Source: (StackOverflow)

Is libsasl2 broken on OSX Yosemite? Missing sasl_client_done

I've been having some trouble with the installed version of libsasl2 (Cyrus SASL).

In particular, it seems that the local headers and sasl_version report version 2.1.26, but no symbol is provided for the global function sasl_client_done.

I'm pretty sure I'm supposed to have that symbol because:

  • It's there in the provided sasl/sasl.h header
  • The cyrsus sasl NEWS file lists "Implemented sasl_client_done()/sasl_server_done()" as a 2.1.24 feature
  • It's there everywhere that provides 2.1.26 outside of Yosemite

For a reproduction:

  • note that the sample below prints
    • "impl: 'Cyrus SASL', version: 33619994, major: 2, minor: 1, step: 26"
  • the sample compiles and executes on a linux install with the same library version after uncommenting the code

the uncommented code produces a link error on yosemite

Undefined symbols for architecture x86_64:
  "_sasl_client_done", referenced from:
      _main in foo-072675.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

invoking the compiler with:

clang -Wall -Werror -lsasl2 -o foo foo.c -v

with clang -v of:

Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.10.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name foo.c -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 241.9 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -Wall -Werror -fdebug-compilation-dir /Users/jcarey/work -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-signature -fdiagnostics-show-option -vectorize-slp -o /var/folders/wq/jypwqgv976n0db5l5qxw900r0000gq/T/foo-92054e.o -x c foo.c
clang -cc1 version 6.0 based upon LLVM 3.5svn default target x86_64-apple-darwin14.0.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.10.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -o foo -lsasl2 /var/folders/wq/jypwqgv976n0db5l5qxw900r0000gq/T/foo-92054e.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "_sasl_client_done", referenced from:
      _main in foo-92054e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

And the code in question:

#include <sasl/sasl.h>
#include <stdio.h>
#include <stdint.h>

int main(int argc, char ** argv) {
    const char *impl;
    int version;
    uint32_t buf;
    uint16_t major;
    uint8_t minor;
    uint8_t step;

    sasl_version(&impl, &version);

    buf = version;

    major = buf >> 24;
    minor = (buf << 8) >> 24;
    step = (buf << 24) >> 24;

    printf("impl: '%s', version: %d, major: %d, minor: %d, step: %d\n", impl, version, major, minor, step);

    /*
    {
        int (* scd)(void);

        scd = &sasl_client_done;

        printf("sasl_client_done: %p\n", scd);
    }
    */

    return 0;
}

I'm thinking that something's screwy with the way cyrus sasl got packaged for Yosemite (using a symbol list from Mavericks perhaps?).


Source: (StackOverflow)

Erlang: What are strategies for dealing with huge SASL crash reports?

When my app crashes, I get a crash report that takes 5 minutes to scroll by. What's the best way to handle this?


Source: (StackOverflow)

SASL library for .net

I am searching for a sasl library for .net.

So far I could only find: Sasl.Net but it looks dead and only implements plain and digest-md5.

Can anyone suggest a good library? Preferably an open-source implementation.


Source: (StackOverflow)