我正在实现已经散列的输入input_hash
的“符号”步骤。可以直接使用
openssl pkeyutl -sign -in input_hash -inkey private.key -out signature
但是我正在使用外部设备来计算响应。这给了我一个64字节的响应,我现在设法将其正确转换为Openssl使用的结构。这应该是ECDSA_SIG
的{{1}}结构
openssl/bn.h
接下来,我想使用正确的ASN.1格式将此结构存储为二进制(DER)文件。但是,我无法在openssl库中找到适当的功能。
请注意,我正在使用EC密钥,因此不能使用struct ECDSA_SIG {
BIGNUM *r;
BIGNUM *s;
}
工具。通过查看上面的openssl命令的输出,我看到了我要实现的结构。
openssl rsautl
现在唯一缺少的步骤是以正确的格式将我的$ openssl asn1parse -in signature -inform DER
0:d=0 hl=2 l= 69 cons: SEQUENCE
2:d=1 hl=2 l= 33 prim: INTEGER :E8229B1CF88EC5BC6E8270161E34D986FC8A5A7D5B2ED3B7C65BA808494E7030
37:d=1 hl=2 l= 32 prim: INTEGER :3FF76A6CB0210037C2D0F9075080E1B6461CDD8F52BB2374DB2B350E81C8A5C3
结构存储到文件中。否则,请使用以下命令在openssl中进行验证
ECDSA_SIG
显然失败。
答案 0 :(得分:2)
如果签名具有<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="@android:color/transparent"
android:layout_height="match_parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/bottom_background"
android:foreground="?attr/selectableItemBackground"
app:itemIconSize="@dimen/iconsize"
app:labelVisibilityMode="unlabeled"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:menu="@menu/menu_navigation" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
结构,则可以使用 <FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/content_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar">
<include
layout="@layout/toolbar" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/categoryItemGridRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingRight="1dp"
app:categoryItemGrid="@{categoryPresenter.itemImageList}"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:listitem="@layout/item_fragment_category_item_grid" />
<include
android:id="@+id/constraintLayoutGenericProgressBar"
bind:categoryPresenter2="@{categoryPresenter}"
layout="@layout/layout_generic_progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</FrameLayout>
函数将其转换为DER格式。记录在这里:
https://www.openssl.org/docs/man1.1.1/man3/i2d_ECDSA_SIG.html