===== Mobil İmza Sunucu Tarafı =====
Mobil imza API’si kullanılarak yazılacak olan Mobil imza sunucusu MSSP’ye bağlanarak kullanıcı sertifika sorgulaması ve gönderilmiş olan veriyi imzalama işlemi yapar. Bunun için imzalanacak veri, operatör, kullanıcı telefon numarası vb. bilgilerle istemci tarafından çağrılıp (örneğin bir web servisi aracılığı ile)bu bilgilerle MSSP’ye kullanıcı sertifika bilgisi sorgulama ve imzalama isteği göndermelidir.
Bunun için yazılacak olan servisin en az iki adet metodu olmalı ve istemciler bu metodları çağırarak işlem yapmalıdır.
Servisteki Sertifika sorgulama metodu, minimum olarak mobil operatör ve telefon numarası almalı ve geriye kullanıcı sertifikası dönmelidir.
Aşağıdaki örnekte sertifika alma metodu görülebilir. Metod kullanımına örnek projeden bakılabilir.
public String getUserCertificate(String phoneNumber,int iOperator)
{
Operator mobileOperator = fromInt(iOperator);
PhoneNumberAndOperator phoneNumberAndOperator = new PhoneNumberAndOperator(phoneNumber, mobileOperator);
MSSParams mobilParams = new MSSParams("http://MImzaTubitakBilgem", "********", "www.turkcelltech.com");
EMSSPRequestHandler msspRequestHandler = new EMSSPRequestHandler(mobilParams);
ECertificate[] eCertificates;
try {
eCertificates = msspRequestHandler.getCertificates(phoneNumberAndOperator);
} catch (Exception e) {
e.printStackTrace();
returnnull;
}
if((eCertificates==null)||(eCertificates.length == 0))
{
returnnull;
}
ECertificate eCert = eCertificates[0];
byte[] certBytes = eCert.getEncoded();
return Base64.encode(certBytes);
}
Servisteki diğer bir metod ise imzalama işlemini yapan metoddur. Bu metod kullanıcının göndermiş olduğu imzalanacak yapısal veriyi imzalamalı ve geri imza değeri dönmelidir.
Örnek olarak imzalanacak verinin Base64 değerini, kullanıcının telefonunda görülecek imzalama mesajını, kullanıcı telefon numarası ve operatörü alan örnek servis metodu aşağıdaki gibi olabilir. Metodun detaylı kullanımına örnek projeler içinden bakılabilir.
public String SignHash(String hashForSign64, String displayText,String phoneNumber, int iOperator)
{
Operator mobileOperator = fromInt(iOperator);
PhoneNumberAndOperator phoneNumberAndOperator = new PhoneNumberAndOperator(phoneNumber, mobileOperator);
MSSParams mobilParams = new MSSParams("http://MImzaTubitakBilgem", "*******", "www.turkcelltech.com");
EMSSPRequestHandler msspRequestHandler = new EMSSPRequestHandler(mobilParams);
byte[] dataForSign = Base64.decode(hashForSign64);
byte[] signedData;
try {
signedData = msspRequestHandler.sign(dataForSign,SigningMode.SIGNHASH, phoneNumberAndOperator, displayText, SignatureAlg.RSA_SHA1.getName(),null);
} catch (Exception e) {
e.printStackTrace();
returnnull;
}
return Base64.encode(signedData);
}