Fwd: ASN1_generate_nconf - incorrect integer encoding?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,
I am trying to use OpenSSL libraries (libssl-dev 1.0.2 or 1.1.1)  to encode integers into DER format.I am using ASN1_generate_nconf but it seems that this function incorrectly encodes integers. It should encode in two's complement format and should prepend 0x00 byte if the first byte of encoded integer is greater then 0x80. But it is not doing that.

Here is my simple program where I check the length of encoded integer. For example for int = 128 the length should be 2. But the length is 2 beginning from int = 256.


Am I using correct function or should I use different one?


#include <stdio.h>
#include <stdint.h>
#include <openssl/asn1.h>
uint64_t i;
char str[100];
ASN1_TYPE *asn_ptr = NULL;
int main () {
        for(i = 120; i < 270; i++) {
                sprintf(str,"INTEGER:%lu",i);
                asn_ptr = ASN1_generate_nconf(str, NULL);
                printf("i: %lu, str: %s , len: %d \n", i, str, asn_ptr->value.integer->length);
        }
}

i: 120, str: INTEGER:120 , len: 1
i: 121, str: INTEGER:121 , len: 1
i: 122, str: INTEGER:122 , len: 1
i: 123, str: INTEGER:123 , len: 1
i: 124, str: INTEGER:124 , len: 1
i: 125, str: INTEGER:125 , len: 1
i: 126, str: INTEGER:126 , len: 1
i: 127, str: INTEGER:127 , len: 1
i: 128, str: INTEGER:128 , len: 1
i: 129, str: INTEGER:129 , len: 1
i: 130, str: INTEGER:130 , len: 1
i: 131, str: INTEGER:131 , len: 1
i: 132, str: INTEGER:132 , len: 1
i: 133, str: INTEGER:133 , len: 1
i: 134, str: INTEGER:134 , len: 1
i: 135, str: INTEGER:135 , len: 1
i: 136, str: INTEGER:136 , len: 1
i: 137, str: INTEGER:137 , len: 1
i: 138, str: INTEGER:138 , len: 1
i: 139, str: INTEGER:139 , len: 1
i: 140, str: INTEGER:140 , len: 1
i: 141, str: INTEGER:141 , len: 1
i: 142, str: INTEGER:142 , len: 1
i: 143, str: INTEGER:143 , len: 1
i: 144, str: INTEGER:144 , len: 1
i: 145, str: INTEGER:145 , len: 1
i: 146, str: INTEGER:146 , len: 1
i: 147, str: INTEGER:147 , len: 1
i: 148, str: INTEGER:148 , len: 1
i: 149, str: INTEGER:149 , len: 1
i: 150, str: INTEGER:150 , len: 1
i: 151, str: INTEGER:151 , len: 1
i: 152, str: INTEGER:152 , len: 1
i: 153, str: INTEGER:153 , len: 1
i: 154, str: INTEGER:154 , len: 1
i: 155, str: INTEGER:155 , len: 1
i: 156, str: INTEGER:156 , len: 1
i: 157, str: INTEGER:157 , len: 1
i: 158, str: INTEGER:158 , len: 1
i: 159, str: INTEGER:159 , len: 1
i: 160, str: INTEGER:160 , len: 1
i: 161, str: INTEGER:161 , len: 1
i: 162, str: INTEGER:162 , len: 1
i: 163, str: INTEGER:163 , len: 1
i: 164, str: INTEGER:164 , len: 1
i: 165, str: INTEGER:165 , len: 1
i: 166, str: INTEGER:166 , len: 1
i: 167, str: INTEGER:167 , len: 1
i: 168, str: INTEGER:168 , len: 1
i: 169, str: INTEGER:169 , len: 1
i: 170, str: INTEGER:170 , len: 1
i: 171, str: INTEGER:171 , len: 1
i: 172, str: INTEGER:172 , len: 1
i: 173, str: INTEGER:173 , len: 1
i: 174, str: INTEGER:174 , len: 1
i: 175, str: INTEGER:175 , len: 1
i: 176, str: INTEGER:176 , len: 1
i: 177, str: INTEGER:177 , len: 1
i: 178, str: INTEGER:178 , len: 1
i: 179, str: INTEGER:179 , len: 1
i: 180, str: INTEGER:180 , len: 1
i: 181, str: INTEGER:181 , len: 1
i: 182, str: INTEGER:182 , len: 1
i: 183, str: INTEGER:183 , len: 1
i: 184, str: INTEGER:184 , len: 1
i: 185, str: INTEGER:185 , len: 1
i: 186, str: INTEGER:186 , len: 1
i: 187, str: INTEGER:187 , len: 1
i: 188, str: INTEGER:188 , len: 1
i: 189, str: INTEGER:189 , len: 1
i: 190, str: INTEGER:190 , len: 1
i: 191, str: INTEGER:191 , len: 1
i: 192, str: INTEGER:192 , len: 1
i: 193, str: INTEGER:193 , len: 1
i: 194, str: INTEGER:194 , len: 1
i: 195, str: INTEGER:195 , len: 1
i: 196, str: INTEGER:196 , len: 1
i: 197, str: INTEGER:197 , len: 1
i: 198, str: INTEGER:198 , len: 1
i: 199, str: INTEGER:199 , len: 1
i: 200, str: INTEGER:200 , len: 1
i: 201, str: INTEGER:201 , len: 1
i: 202, str: INTEGER:202 , len: 1
i: 203, str: INTEGER:203 , len: 1
i: 204, str: INTEGER:204 , len: 1
i: 205, str: INTEGER:205 , len: 1
i: 206, str: INTEGER:206 , len: 1
i: 207, str: INTEGER:207 , len: 1
i: 208, str: INTEGER:208 , len: 1
i: 209, str: INTEGER:209 , len: 1
i: 210, str: INTEGER:210 , len: 1
i: 211, str: INTEGER:211 , len: 1
i: 212, str: INTEGER:212 , len: 1
i: 213, str: INTEGER:213 , len: 1
i: 214, str: INTEGER:214 , len: 1
i: 215, str: INTEGER:215 , len: 1
i: 216, str: INTEGER:216 , len: 1
i: 217, str: INTEGER:217 , len: 1
i: 218, str: INTEGER:218 , len: 1
i: 219, str: INTEGER:219 , len: 1
i: 220, str: INTEGER:220 , len: 1
i: 221, str: INTEGER:221 , len: 1
i: 222, str: INTEGER:222 , len: 1
i: 223, str: INTEGER:223 , len: 1
i: 224, str: INTEGER:224 , len: 1
i: 225, str: INTEGER:225 , len: 1
i: 226, str: INTEGER:226 , len: 1
i: 227, str: INTEGER:227 , len: 1
i: 228, str: INTEGER:228 , len: 1
i: 229, str: INTEGER:229 , len: 1
i: 230, str: INTEGER:230 , len: 1
i: 231, str: INTEGER:231 , len: 1
i: 232, str: INTEGER:232 , len: 1
i: 233, str: INTEGER:233 , len: 1
i: 234, str: INTEGER:234 , len: 1
i: 235, str: INTEGER:235 , len: 1
i: 236, str: INTEGER:236 , len: 1
i: 237, str: INTEGER:237 , len: 1
i: 238, str: INTEGER:238 , len: 1
i: 239, str: INTEGER:239 , len: 1
i: 240, str: INTEGER:240 , len: 1
i: 241, str: INTEGER:241 , len: 1
i: 242, str: INTEGER:242 , len: 1
i: 243, str: INTEGER:243 , len: 1
i: 244, str: INTEGER:244 , len: 1
i: 245, str: INTEGER:245 , len: 1
i: 246, str: INTEGER:246 , len: 1
i: 247, str: INTEGER:247 , len: 1
i: 248, str: INTEGER:248 , len: 1
i: 249, str: INTEGER:249 , len: 1
i: 250, str: INTEGER:250 , len: 1
i: 251, str: INTEGER:251 , len: 1
i: 252, str: INTEGER:252 , len: 1
i: 253, str: INTEGER:253 , len: 1
i: 254, str: INTEGER:254 , len: 1
i: 255, str: INTEGER:255 , len: 1
i: 256, str: INTEGER:256 , len: 2
i: 257, str: INTEGER:257 , len: 2
i: 258, str: INTEGER:258 , len: 2
i: 259, str: INTEGER:259 , len: 2
i: 260, str: INTEGER:260 , len: 2
i: 261, str: INTEGER:261 , len: 2
i: 262, str: INTEGER:262 , len: 2
i: 263, str: INTEGER:263 , len: 2
i: 264, str: INTEGER:264 , len: 2
i: 265, str: INTEGER:265 , len: 2
i: 266, str: INTEGER:266 , len: 2
i: 267, str: INTEGER:267 , len: 2
i: 268, str: INTEGER:268 , len: 2
i: 269, str: INTEGER:269 , len: 2



Regards,
Rafał Arciszewski

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux