首页 > 其他分享 >ABAP 实现RSA签名

ABAP 实现RSA签名

时间:2023-09-04 19:34:31浏览次数:34  
标签:data RSA rsa lv ABAP 签名 signer ssf TYPE

1.跟第三方系统要取RSA私钥,将私钥内容放在rsa.key文件中,首尾行分割,每一行放64个字符

2.在SAP文件服务器上建立目录/tmp/rsa

 

3.将文件rsa.key放置在文件夹/tmp/rsa下

 

4.执行以下命令,产生PSE文件

1. execute bellow command in file path /tmp/rsa

openssl req -new -x509 -sha256 -key rsa.key -out user1.cer -days 3650 -subj '/CN=user1'

2 execute bellow command in file path /tmp/rsa

openssl pkcs12 -export -inkey rsa.key -in user1.cer -out user1.pfx -nodes

3. execute bellow command in file path /tmp/rsa

setenv SECUDIR /tmp/rsa

4. execute bellow command in file path /tmp/rsa

sapgenpse import_p12 -p user1.pse user1.pfx

 

第2、3、4步可发Service request给SAP协助解决,选择Assist with OS Tasks,请求SAP先创建目录文件,然后执行命令。两天内SAP会解决

5.利用函数SSFW_KRN_SIGN签名,其中密码为第四步中设置的密码

  METHOD rsa_encrypt.

    DATA: lv_output          TYPE xstring,
          lv_input_x         TYPE xstring,
          lv_chain_data      TYPE xstring,
          lv_input           TYPE string,
          lv_signer_name     TYPE string,
          lv_signed_data     TYPE xstring,
          lv_id              TYPE string,
          lv_profile         TYPE ssfparms-pab,
          lt_recipient_list  TYPE STANDARD TABLE OF ssfinfo,
          ls_recipient_list  LIKE LINE OF lt_recipient_list,
          lv_crc             TYPE ssfparms-ssfcrc.
    DATA: lt_signer       TYPE STANDARD TABLE OF ssfinfo,
          ls_signer       TYPE ssfinfo,
          lt_certificates TYPE STANDARD TABLE OF ssfcertlin.
    DATA: lv_format   TYPE ssfparms-ssfformat,
          lv_hashalg  TYPE ssfparms-ssfhashalg,
          lv_chainfmt TYPE ssfparms-ssfformat.

    lv_profile = '/tmp/rsa/user1.pse'.
    lv_id      = 'CN=user1'.
    lv_format   = 'PKCS1-V1.5'.
    lv_hashalg  = 'SHA256'.
    CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
      EXPORTING
        text   = iv_content
      IMPORTING
        buffer = lv_input_x
      EXCEPTIONS
        failed = 1
        OTHERS = 2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.
    " 签名
    ls_signer-id      = lv_id. " 一般为证书域名
    ls_signer-password = 'Welcome@123'.
    ls_signer-profile = lv_profile.
    APPEND ls_signer TO lt_signer.
    CALL FUNCTION 'SSFW_KRN_SIGN'
      EXPORTING
        ssftoolkit                   = 'SAPSECULIB'
        str_format                   = lv_format
        b_detached                   = 'X'
        str_hashalg                  = lv_hashalg
        str_chainfmt                 = lv_chainfmt
        ostr_input_data              = lv_input_x
      IMPORTING
        ostr_signed_data             = lv_signed_data
        str_signer_name              = lv_signer_name
        ostr_chain_data              = lv_chain_data
        crc                          = lv_crc
      TABLES
        signer                       = lt_signer
      EXCEPTIONS
        ssf_krn_error                = 1
        ssf_krn_noop                 = 2
        ssf_krn_nomemory             = 3
        ssf_krn_opinv                = 4
        ssf_krn_nossflib             = 5
        ssf_krn_input_data_error     = 6
        ssf_krn_invalid_par          = 7
        ssf_krn_invalid_parlen       = 8
        ssf_fb_input_parameter_error = 9
        OTHERS                       = 10.
    IF sy-subrc = 0.
      CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
        EXPORTING
          input  = lv_signed_data
        IMPORTING
          output = ev_response.
    ENDIF.
  ENDMETHOD.

 

  

标签:data,RSA,rsa,lv,ABAP,签名,signer,ssf,TYPE
From: https://www.cnblogs.com/xiajiqiang/p/17677905.html

相关文章

  • ABAP 实现AES加密
    1.Github下载工具类https://github.com/Sumu-Ning/AES,利用abapGit上传至SAP系统2.AES加密需要四个参数①密钥②加密模式③字节填充模式④偏移量3.将明文转XSTRING,密钥BASE64解码,调用zcl_aes_utility=>encrypt_xstring方法METHODaes_encrypt.DATA:lv_content_xstrT......
  • The 2nd Universal Cup. Stage 1: Qingdao
    GDescription给定一个数列,每次ban一个位置,在每次ban之前,求连续子序列逆序对数的最大值,强制在线。(6s)\(n\leq10^5,\sumn\leq10^6\)Solution先考虑用权值线段树来维护区间逆序对数,不难支持在原数列前后加或删除一个数。然后考虑原题的分裂过程,将一段\([l,r]\)分裂成\([l,p-......
  • wx.config中的timestamp生成签名的时间戳
    wx.config({debug:true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId:'',//必填,公众号的唯一标识timestamp:,//必填,生成签名的时间戳nonceStr:'',//必填,生......
  • 网站使用自签名SSL证书有哪些危害?
    在当今数字化时代,安全性对于网站的成功至关重要。网站安全证书(SSL证书)是保护网站通信和确保信息安全的关键组成部分。然而,有些网站采用自签名SSL证书,这在某些情况下可能带来安全风险和潜在危害。本文将探讨自签名SSL证书的危害性,并为读者提供更好的理解和解决方案。一、缺乏第三方......
  • Binary Tree Inorder Traversal
    SourceGivenabinarytree,returntheinordertraversalofitsnodes'values.ExampleGivenbinarytree{1,#,2,3},1\2/3return[1,3,2].ChallengeCanyoudoitwithoutrecursion?Note: Recursivesolutionistrivial,cou......
  • 论文解读(AdSPT)《Adversarial Soft Prompt Tuning for Cross-Domain Sentiment Analysi
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:AdversarialSoftPromptTuningforCross-DomainSentimentAnalysis论文作者:HuiWu、XiaodongShi论文来源:2022ACL论文地址:download 论文代码:download视屏讲解:click1介绍 动机:直接使用固定的预定义模......
  • App开放接口API安全性—Token签名sign的设计与实现
    在app开放接口API的设计中,避免不了的就是安全性问题。 一、https协议对于一些敏感的API接口,需要使用https协议。https是在http超文本传输协议加入SSL层,它在网络间通信是加密的,所以需要加密证书。 二、签名设计原理:用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后......
  • ABAP 金额和数量增加千分位分隔符
    FUNCTIONCONVERSION_EXIT_ZTHOU_OUTPUT.*"----------------------------------------------------------------------*"*"區域介面:*"IMPORTING*"VALUE(INPUT)*"EXPORTING*"VALUE(OUTPUT)*"----------------------......
  • Android平台签名证书(.keystore)生成
    安装JRE环境地址:https://www.oracle.com/java/technologies/downloads/#java8C:\ProgramFiles\Java\jdk-1.8这是我都默认安装地址安装成功后配置环境变量%JAVA_HOME%\bin生成签名证书使用keytool-genkey命令生成证书:keytool-genkey-aliastestalias-keyalgRSA-keysize2048......
  • SAP ABAP 里 FILTER 关键字的用法举例
    FILTER是ABAP中的一个关键字,用于在内部表中进行数据筛选和过滤,以便于提取所需的数据集。FILTER关键字用于从内部表中筛选符合特定条件的数据行。它通过提供条件表达式,只返回满足条件的数据行,从而在不修改原始数据的情况下生成一个新的内部表。FILTER关键字在处理大量数据时非常有......