{"id":1527,"date":"2022-04-06T10:04:43","date_gmt":"2022-04-06T10:04:43","guid":{"rendered":"https:\/\/trackwizz.com\/developers-hub\/?post_type=docs&#038;p=1527"},"modified":"2022-04-07T13:09:49","modified_gmt":"2022-04-07T13:09:49","password":"","slug":"aadhaar-image-masking","status":"publish","type":"docs","link":"https:\/\/trackwizz.com\/developers-hub\/docs\/aadhar-image-masking\/aadhaar-image-masking\/","title":{"rendered":"API Document"},"content":{"rendered":"<style>\ntable,th,td{\nborder:1px solid black;\nborder-top: 1px solid black !important;\n}\n<\/style>\n<h2>1. API Objective<\/h2>\n<p>This RESTful API helps to mask Aadhaar Number from Aadhaar Card images. Consuming application will request A48 API with image detail in following XML format and in response API will return back Aadhaar Number redacted image in base 64 encoded string.<\/p>\n<h2>2. Request Details<\/h2>\n<p>URL: http:\/\/\/crmapi\/TrackwizzWebApi\/A48\/MaskAadhaarNumber<br \/>\nneeds to be replaced by actual DNS URL for TrackWizz CRM API that is deployed.<\/p>\n<p><strong>HTTP Request Type:<\/strong> POST<br \/>\n<strong>Request Headers:<\/strong><br \/>\n<strong>Content-Type:<\/strong> application\/xml<\/p>\n<h2>3.1 Sample Request<\/h2>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;A48AadhaarNumberMaskingRequest&gt;\r\n&lt;ApiToken&gt;38c0dc75-4fd8-4765-86c6-7d561d12dd80&lt;\/ApiToken&gt;\r\n&lt;RequestId&gt;ABC1234&lt;\/RequestId&gt;\r\n&lt;SessionKey&gt;EAMyfrjANBgkqCBkzr2ZLVncZb3uf86EzPWUEaqwTfg&lt;\/SessionKey&gt;\r\n&lt;RequestData&gt;f86EzPWUEaqwTEAMyfrjA9w0BAQsFADCBkzr2ZLVncZb3u&lt;\/RequestData&gt;\r\n&lt;\/A48AadhaarNumberMaskingRequest&gt;\u00a0\r\n<\/pre>\n<h2>3.2 Sample Decrypted RequestData<\/h2>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;RequestData&gt;\r\n&lt;ParentCompany&gt;ABC PVT LTD&lt;\/ParentCompany&gt;\r\n&lt;ApplicationFormNo&gt;AF123&lt;\/ApplicationFormNo&gt;\r\n&lt;RecordIdentifier&gt;123&lt;\/RecordIdentifier&gt;\r\n&lt;SourceSystem&gt;Finacle&lt;\/SourceSystem&gt;\r\n&lt;ImageType&gt;JPEG&lt;\/ImageType&gt;  \t\t&lt;ImageData&gt;PWUEaqwTEAMyfrjANBgkqhkiG9Bkzr2ZLVncZb3uFADCBkzr2ZLVncZb3u&lt;\/ImageData&gt;\r\n&lt;MaskingType&gt;MT3&lt;\/MaskingType&gt;\r\n&lt;AttachmentType&gt;AadharCard&lt;\/AttachmentType&gt;\r\n&lt;\/RequestData&gt;\r\n<\/pre>\n<h2>4. Request Parameter Description<\/h2>\n<p><strong>Table 1: Request &#8211; Main<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td><strong >Field Name \/ XML Tag <\/strong><\/td>\n<td><strong >Mandatory <\/strong><\/td>\n<td><strong >Data Type <\/strong><\/td>\n<td><strong >Length <\/strong><\/td>\n<td><strong >Remarks <\/strong><\/td>\n<\/tr>\n<tr>\n<td>ApiToken <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>To be shared by TrackWizz <\/td>\n<\/tr>\n<tr>\n<td>RequestId <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>Needs to be unique. <\/td>\n<\/tr>\n<tr>\n<td>SessionKey <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>&nbsp;<\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td>RequestData <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>&nbsp;<\/td>\n<td> <\/td>\n<\/tr>\n<\/table>\n<p><strong>Table 2: RequestData<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td  ><strong >Field Name \/ XML Tag<\/strong><\/td>\n<td  ><strong >Mandatory <\/strong><\/td>\n<td  ><strong >Data Type <\/strong><\/td>\n<td  ><strong >Length <\/strong><\/td>\n<td  ><strong >Remarks<\/strong> <\/td>\n<\/tr>\n<tr >\n<td  >ParentCompany <\/td>\n<td  >Yes <\/td>\n<td  >String <\/td>\n<td  >100 <\/td>\n<td  >&nbsp;<\/td>\n<\/tr>\n<tr>\n<td  >ApplicationFormNo <\/td>\n<td  >No <\/td>\n<td  >String <\/td>\n<td  >60 <\/td>\n<td  >&nbsp;<\/td>\n<\/tr>\n<tr>\n<td  >RecordIdentifier <\/td>\n<td  >No <\/td>\n<td  >String <\/td>\n<td  >60 <\/td>\n<td  >&nbsp;<\/td>\n<\/tr>\n<tr>\n<td  >SourceSystem <\/td>\n<td  >No <\/td>\n<td  >String <\/td>\n<td  >60 <\/td>\n<td  >&nbsp;<\/td>\n<\/tr>\n<tr>\n<td  >ImageType <\/td>\n<td  >Yes <\/td>\n<td  >String <\/td>\n<td  >300 <\/td>\n<td  >Possible Values will be .jpeg, .jpg, .tiff, .tif, .bmp, .pdf. <\/td>\n<\/tr>\n<tr>\n<td  >MaskingType <\/td>\n<td  >Yes <\/td>\n<td  >String <\/td>\n<td  >100 <\/td>\n<td  >Values should be as per Table 3 <\/td>\n<\/tr>\n<tr>\n<td  >ImageData <\/td>\n<td  >Yes <\/td>\n<td  >String <\/td>\n<td  >NA <\/td>\n<td  >Image should be base 64 encoded string. <\/td>\n<\/tr>\n<tr>\n<td  >AttachmentType <\/td>\n<td  >No <\/td>\n<td  >String <\/td>\n<td  >100 <\/td>\n<td>Values should be as per Table 4 <br \/>\n      (If value is not passed then AadharCard will be default value) <\/td>\n<\/tr>\n<\/table>\n<p><strong>Table 3: Masking Type<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td><strong >Code<\/strong><\/td>\n<td><strong >Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td>MT3 <\/td>\n<td>It will mask all 12-digits of Aadhaar number. <\/td>\n<\/tr>\n<tr>\n<td>MT4 <\/td>\n<td>It will mask first 10-digits of Aadhaar number. <\/td>\n<\/tr>\n<tr>\n<td>MT5 <\/td>\n<td>It will mask first 8-digits of Aadhaar number. <\/td>\n<\/tr>\n<\/table>\n<p><strong>Table 4: Attachment Type<\/strong><\/p>\n<table width=\"40%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr>\n<td valign=\"top\" >\n<p >AadharCard <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" >\n<p >AOFWithKYC <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" >\n<p >AadhaarOffline <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" >\n<p >EKYCAuthImage <\/p>\n<\/td>\n<\/tr>\n<\/table>\n<h2>5. Request Encryption Steps<\/h2>\n<p><strong>Consider Data to be Encrypted is <\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;RequestData&gt;\r\n&lt;ParentCompany&gt;ABC PVT LTD&lt;\/ParentCompany&gt;\r\n&lt;ApplicationFormNo&gt;AF123&lt;\/ApplicationFormNo&gt;\r\n&lt;RecordIdentifier&gt;123&lt;\/RecordIdentifier&gt;\r\n&lt;SourceSystem&gt;Finacle&lt;\/SourceSystem&gt;\r\n&lt;ImageType&gt;JPEG&lt;\/ImageType&gt;  \t\t&lt;ImageData&gt;PWUEaqwTEAMyfrjANBgkqhkiG9Bkzr2ZLVncZb3uFADCBkzr2ZLVncZb3u&lt;\/ImageData&gt;\r\n&lt;MaskingType&gt;MT3&lt;\/MaskingType&gt;\r\n&lt;AttachmentType&gt;AadharCard&lt;\/AttachmentType&gt;\r\n&lt;\/RequestData&gt;\r\n<\/pre>\n<p><strong>Following are the steps to be followed for encryption<\/strong><br \/>\n1.Generate a Session Key of 256 bit.<br \/>\n2.Encrypt the data using AES (Symmetric Algorithm) using the above generated Session Key<br \/>\n3.Encode the above encrypted data to Base64 string. Example: The above sample data would look like following: f86EzPWUEaqwTEAMyfrjANBgkqhkiG9w0BAQsFADCBkzr2ZLVncZb3u<br \/>\n4.Encrypt the session key using Public Key of the Receiver, using RSA (Asymmetric Algorithm)<br \/>\n5.Encode the above encrypted Session Key to Base64 string.<br \/>\n6.Add this encrypted and encoded data and Session Key to the request XML. Example: The request would look like following:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;A48AadhaarNumberMaskingRequest&gt;\r\n&lt;ApiToken&gt;38c0dc75-4fd8-4765-86c6-7d561d12dd80&lt;\/ApiToken&gt;\r\n&lt;RequestId&gt;ABC1234&lt;\/RequestId&gt;\r\n&lt;SessionKey&gt;EAMyfrjANBgkqhkiG9w0ADCBkzr2ZLVncZb3uf86EzPWUEaqwTfg&lt;\/SessionKey&gt;\r\n&lt;RequestData&gt;f86EzPWUEaqwTEAMyBgkqhkiG9w0BAQsFADCBkzr2ZLVncZb3u&lt;\/RequestData&gt;\r\n&lt;\/A48AadhaarNumberMaskingRequest&gt;\r\n<\/pre>\n<p>7.Using the Private Key of the Sender, sign the entire request XML. The request will look like following:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;A48AadhaarNumberMaskingRequest&gt;\r\n&lt;ApiToken&gt;38c0dc75-4fd8-4765-86c6-7d561d12dd80&lt;\/ApiToken&gt;\r\n&lt;RequestId&gt;ABC1234&lt;\/RequestId&gt;\r\n&lt;SessionKey&gt;EAMyfrjANBgkqhkiG9w0BAQsFAVncZb3uf86EzPWUEaqwTfg&lt;\/SessionKey&gt;\r\n&lt;RequestData&gt;f86EzPWUEaqwTEAMyfrjAN9w0BAQsFADCBkzr2ZLVncZb3u&lt;\/RequestData&gt;\r\n&lt;Signature xmlns=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#&quot;&gt;\r\n&lt;SignedInfo&gt;\r\n&lt;CanonicalizationMethod Algorithm=&quot;http:\/\/www.w3.org\/TR\/2001\/REC-xml-c14n-20010315&quot; \/&gt;\r\n&lt;SignatureMethod Algorithm=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#rsa-sha1&quot; \/&gt;\r\n&lt;Reference URI=&quot;&quot;&gt;\r\n&lt;Transforms&gt;\r\n&lt;Transform Algorithm=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#enveloped-signature&quot; \/&gt;\r\n&lt;\/Transforms&gt;\r\n&lt;DigestMethod Algorithm=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1&quot; \/&gt;\r\n&lt;DigestValue&gt;bWYkKQBqU24KZSNhDdPZBZVLotM=&lt;\/DigestValue&gt;\r\n&lt;\/Reference&gt;\r\n&lt;\/SignedInfo&gt;\r\n&lt;SignatureValue&gt;\r\ndb0YWFoIwow9iDTuoHXtPPVTpMXi20ny1+TYYyvesYZ67dkZ2P1FTV43zdICibsEfnJrAnWD\tLy8QORlcui9f4CGWnHCccID3dPeQ==\r\n&lt;\/SignatureValue&gt;\r\n&lt;KeyInfo&gt;\r\n&lt;X509Data&gt;\r\n&lt;X509SubjectName&gt;Details&lt;\/X509SubjectName&gt;\r\n&lt;X509Certificate&gt;MIIGCTCCBPGgAwIBAgIEAMyfrjANBgkqhkiG9w0BAQsFADCBkzr2ZLVncZb3uf86EzPWUEaqwTfgGYdE2xhU\/phUn+2Zyvc9nfQQ==&lt;\/X509Certificate&gt;\r\n&lt;\/X509Data&gt;\r\n&lt;\/KeyInfo&gt;\r\n&lt;\/Signature&gt;\r\n&lt;\/A48AadhaarNumberMaskingRequest&gt;\r\n<\/pre>\n<h2>6. Sample Success Response<\/h2>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;A48AadhaarNumberMaskingResponse&gt;\r\n&lt;RequestId&gt;ABC1234&lt;\/RequestId&gt;\r\n&lt;SessionKey&gt;EAMyfrjANBgkqhkiG9w0BCBkzr2ZLVncZb3uf86EzPWUEaqwTfg&lt;\/SessionKey&gt;\r\n&lt;ResponseData&gt;fEaqwTEAMyfrjANBgkkiG9w0BAQsFADCBkzr2ZLVncZb3u&lt;\/ResponseData&gt;\r\n&lt;RequestStatus&gt;AcceptedByTW&lt;\/RequestStatus&gt;\r\n&lt;\/A48AadhaarNumberMaskingResponse&gt;\r\n<\/pre>\n<h2>7. Sample Failure Response<\/h2>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;A48AadhaarNumberMaskingResponse&gt;\r\n&lt;RequestId&gt;ABC1234&lt;\/RequestId&gt;\r\n&lt;RequestStatus&gt;RejectedByTW&lt;\/RequestStatus&gt;\r\n&lt;RejectionCode&gt;EC123&lt;\/RejectionCode&gt;\r\n&lt;RejectionDescription&gt;Parent Company is mandatory.&lt;\/RejectionDescription&gt;\r\n&lt;\/A48AadhaarNumberMaskingResponse&gt;\r\n<\/pre>\n<h2>8. Sample Decrypted ResponseData<\/h2>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;ResponseData&gt;\r\n&lt;ApplicationFormNo&gt;AF123&lt;\/ApplicationFormNo&gt;\r\n&lt;RecordIdentifier&gt;123&lt;\/RecordIdentifier&gt;\r\n&lt;MaskingStatus&gt;Masked&lt;\/MaskingStatus&gt;\r\n&lt;PageMaskingStatusDetails&gt;\r\n&lt;PageMaskingStatus&gt;\r\n&lt;PageNo&gt;1&lt;\/PageNo&gt;\r\n&lt;Status&gt;Masked&lt;\/Status&gt;\r\n&lt;\/PageMaskingStatus&gt;\r\n&lt;PageMaskingStatus&gt;\r\n&lt;PageNo&gt;2&lt;\/PageNo&gt;\r\n&lt;Status&gt;Masked&lt;\/Status&gt;\r\n&lt;\/PageMaskingStatus&gt;\r\n&lt;\/PageMaskingStatusDetails&gt;\r\n&lt;MaskedImage&gt;dgdNBgkkiG9w0BAQsFADCBtop43tgNBgkkiG9ret54364h&lt;\/MaskedImage&gt;\r\n&lt;\/ResponseData&gt;\r\n<\/pre>\n<h2>9. Response Parameter Description<\/h2>\n<p><strong>Table 5: Response &#8211; Main<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr >\n<td><strong >Field Name<\/strong><strong >\/XML Tag<\/strong><\/td>\n<td><strong >Mandatory<\/strong><\/td>\n<td><strong >Data Type<\/strong><\/td>\n<td><strong >Length<\/strong><\/td>\n<td><strong >Remarks<\/strong><\/td>\n<\/tr>\n<tr >\n<td>RequestId <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>Same as incoming Request <\/td>\n<\/tr>\n<tr >\n<td>RequestStatus <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>Possible Values: Accepted byTW\/Rejected byTW <\/td>\n<\/tr>\n<tr >\n<td>RequestRejectionCode <\/td>\n<td>No <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr >\n<td>RequestRejectionDescription <\/td>\n<td>No <\/td>\n<td>String <\/td>\n<td>500 <\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr >\n<td>SessionKey <\/td>\n<td>No <\/td>\n<td>String <\/td>\n<td>&nbsp;<\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr >\n<td>ResponseData <\/td>\n<td>No <\/td>\n<td>String <\/td>\n<td>&nbsp;<\/td>\n<td> <\/td>\n<\/tr>\n<\/table>\n<p><strong>Table 6: ResponseData<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr >\n<td><strong >Field Name<\/strong><strong >\/XML Tag<\/strong><\/td>\n<td><strong >Mandatory<\/strong><\/td>\n<td><strong >Data Type<\/strong><\/td>\n<td><strong >Length<\/strong><\/td>\n<td><strong >Remarks<\/strong><\/td>\n<\/tr>\n<tr >\n<td>MaskingStatus <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td><strong>Possible values:<\/strong>\u00a0 <br \/>\n      Masked\/NotMasked\/ MaybeMasked\/ <br \/>\n      AlreadyMasked\/ NotIdentified <br \/>\n      . <\/td>\n<\/tr>\n<tr >\n<td>MaskedImage <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>Masked Image will be base 64 encoded string. <\/td>\n<\/tr>\n<tr >\n<td>ApplicationFormNo <\/td>\n<td>No <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr >\n<td>RecordIdentifier <\/td>\n<td>No <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr >\n<td>PageMaskingStatusDetails <\/td>\n<td>No <\/td>\n<td>Complex <\/td>\n<td>&nbsp;<\/td>\n<td>Contains multiple PageMaskingStatus <\/td>\n<\/tr>\n<\/table>\n<p><strong>Table 7: PageMaskingStatus (Can be multiple in one PageMaskingStatusDetails)<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr >\n<td><strong >Field Name<\/strong><strong >\/XML Tag<\/strong><\/td>\n<td><strong >Mandatory<\/strong><\/td>\n<td><strong >Data Type<\/strong><\/td>\n<td><strong >Length<\/strong><\/td>\n<td><strong >Remarks<\/strong><\/td>\n<\/tr>\n<tr >\n<td>PageNo <\/td>\n<td>Yes <\/td>\n<td>Integer <\/td>\n<td>&nbsp;<\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr >\n<td>Status <\/td>\n<td>Yes <\/td>\n<td>String <\/td>\n<td>60 <\/td>\n<td><strong>Possible values:<\/strong>\u00a0 <br \/>\n      Masked\/NotMasked\/ MaybeMasked\/ <br \/>\n      AlreadyMasked\/ NotIdentified. <\/td>\n<\/tr>\n<\/table>\n<h2>10. Response Decryption Steps<\/h2>\n<p><strong>Consider the following response for the above request made to a system<\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;A48AadhaarNumberMaskingResponse&gt;\r\n&lt;RequestId&gt;ABC1234&lt;\/RequestId&gt;\r\n&lt;SessionKey&gt;EAMyfrjANBgkqhkiG9w0BCBkzr2ZLVncZb3uf86EzPWUEaqwTfg&lt;\/SessionKey&gt;\r\n&lt;ResponseData&gt;fEaqwTEAMyfrjANBgkkiG9w0BAQsFADCBkzr2ZLVncZb3u&lt;\/ResponseData&gt;\r\n&lt;RequestStatus&gt;AcceptedByTW&lt;\/RequestStatus&gt;\r\n&lt;Signature xmlns=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#&quot;&gt;\r\n&lt;SignedInfo&gt;\r\n&lt;CanonicalizationMethod Algorithm=&quot;http:\/\/www.w3.org\/TR\/2001\/REC-xml-c14n-20010315&quot;\/&gt;\r\n&lt;SignatureMethod Algorithm=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#rsa-sha1&quot;\/&gt;\r\n&lt;Reference URI=&quot;&quot;&gt;\r\n&lt;Transforms&gt;\r\n&lt;Transform Algorithm=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#enveloped-signature&quot;\/&gt;\r\n&lt;\/Transforms&gt;\r\n&lt;DigestMethod Algorithm=&quot;http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1&quot;\/&gt;\r\n&lt;DigestValue&gt;3ih3dWLJZJMie0HUtenMuZR1\/AI=&lt;\/DigestValue&gt;\r\n&lt;\/Reference&gt;\r\n&lt;\/SignedInfo&gt;\r\n&lt;SignatureValue&gt;\r\nHKDnPRlelk2qu\/Yx8Q6YH8TaHdyCmqjZRJ+TNqPbit5xXQ563BNN4Rs4rTrheI8yfFRnhTTCZtJuC98r5p508Yu\/w==\r\n&lt;\/SignatureValue&gt;\r\n&lt;\/Signature&gt;\r\n&lt;\/A48AadhaarNumberMaskingResponse&gt;\r\n<\/pre>\n<p><strong>Following are the steps to decrypt and read the response<\/strong><br \/>\n1.Verify the signature in Response XML using Sender\u2019s Public Key<br \/>\n2.Decode the Session Key from the Response XML.<br \/>\n3.Decrypt the above Session Key by Receiver\u2019s Private Key using RSA (Asymmetric Algorithm)<br \/>\n4.Decode the data in Response XML.<br \/>\n5.Decrypt the data by Session Key (derived from above) using AES (Symmetric Algorithm).<br \/>\n<strong>After the above decryption the ResponseData in Response XML will look like follows:<\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;\r\n&lt;ResponseData&gt;\r\n&lt;ApplicationFormNo&gt;AF123&lt;\/ApplicationFormNo&gt;\r\n&lt;RecordIdentifier&gt;123&lt;\/RecordIdentifier&gt;\r\n&lt;MaskingStatus&gt;Masked&lt;\/MaskingStatus&gt;\r\n&lt;MaskedImage&gt;dgdNBgkkiG9w0BAQsFADCBtop43tgNBgkkiG9ret54364h&lt;\/MaskedImage&gt;\r\n&lt;\/ResponseData&gt;\r\n<\/pre>\n<p><srong>Table 7: Rejection Code<\/strong><\/p>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tr >\n<td><strong>Error code<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2334 <\/td>\n<td valign=\"bottom\" >API Token is mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC1492 <\/td>\n<td valign=\"bottom\" >The employee does not have access to API in Employee Master <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >RC91 <\/td>\n<td valign=\"bottom\" >Request Id is mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >RC92 <\/td>\n<td valign=\"bottom\" >Invalid RequestId length. <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >RC93 <\/td>\n<td valign=\"bottom\" >RequestId should be unique for given API token. <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2322 <\/td>\n<td valign=\"bottom\" >Session Key is Mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2323 <\/td>\n<td valign=\"bottom\" >Request Data is Mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC1188 <\/td>\n<td valign=\"bottom\" >ParentCompany is Mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC1189 <\/td>\n<td valign=\"bottom\" >ParentCompany should be as per the &quot;Company Internal Code&quot; in Company Parent Master <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC100 <\/td>\n<td valign=\"bottom\" >ImageType is Mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2329 <\/td>\n<td valign=\"bottom\" >ImageType should be as per given enumeration. <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2325 <\/td>\n<td valign=\"bottom\" >ImageData is Mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2330 <\/td>\n<td>Image size is more than the expected one <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2115 <\/td>\n<td>MaskingType is Mandatory <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2116 <\/td>\n<td>Masking Type should be as per given enumeration <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2332 <\/td>\n<td>Could not verify request signature. <\/td>\n<\/tr>\n<tr >\n<td valign=\"bottom\" >EC2333 <\/td>\n<td>Encryption Provider is not Specified in Employee Master <\/td>\n<\/tr>\n<tr >\n<td valign=\"center\" >EC2335 <\/td>\n<td valign=\"center\" >IP Address is not whitelisted <\/td>\n<\/tr>\n<tr >\n<td valign=\"center\" >RC98 <\/td>\n<td valign=\"center\" >SourceSystemName does not exist in TrackWizz. <\/td>\n<\/tr>\n<tr >\n<td valign=\"center\" >RC115 <\/td>\n<td valign=\"center\" >Invalid SourceSystemName Length. <\/td>\n<\/tr>\n<tr >\n<td valign=\"center\" >RC673 <\/td>\n<td valign=\"center\" >Invalid RecordIdentifier Length <\/td>\n<\/tr>\n<tr >\n<td valign=\"center\" >RC674 <\/td>\n<td valign=\"center\" >Invalid ApplicationFormNo Length <\/td>\n<\/tr>\n<tr >\n<td valign=\"center\" >EC2531 <\/td>\n<td valign=\"center\" >AttachmentType should be as per given enumeration <\/td>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>1. API Objective This RESTful API helps to mask Aadhaar Number from Aadhaar Card images. Consuming application will request A48 API with image detail in following XML format and in response API will return back Aadhaar Number redacted image in base 64 encoded string. 2. Request Details URL: http:\/\/\/crmapi\/TrackwizzWebApi\/A48\/MaskAadhaarNumber needs to be replaced by actual [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[37],"doc_tag":[],"class_list":["post-1527","docs","type-docs","status-publish","hentry","doc_category-aadhar-image-masking"],"aioseo_notices":[],"year_month":"2026-04","word_count":1712,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"admin","author_nicename":"admin","author_url":"https:\/\/trackwizz.com\/developers-hub\/author\/admin\/"},"doc_category_info":[{"term_name":"Aadhar Image Masking","term_url":"https:\/\/trackwizz.com\/developers-hub\/docs-category\/aadhar-image-masking\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/docs\/1527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/comments?post=1527"}],"version-history":[{"count":0,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/docs\/1527\/revisions"}],"wp:attachment":[{"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/media?parent=1527"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/doc_category?post=1527"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/trackwizz.com\/developers-hub\/wp-json\/wp\/v2\/doc_tag?post=1527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}